cli-discover
$
npx mdskill add vellum-ai/vellum-assistant/cli-discoverWhen you need to discover what CLI tools are available on the system, use `host_bash` to check directly. Do not use sandboxed `bash` for discovery - it may not see host-installed CLIs or auth state, leading to false negatives.
SKILL.md
.github/skills/cli-discoverView on GitHub ↗
---
name: cli-discover
description: Discover which CLI tools are installed, their versions, and authentication status
compatibility: "Designed for Vellum personal assistants"
metadata:
emoji: "🔍"
vellum:
category: "development"
display-name: "CLI Discovery"
---
# CLI Discovery
When you need to discover what CLI tools are available on the system, use `host_bash` to check directly. Do not use sandboxed `bash` for discovery - it may not see host-installed CLIs or auth state, leading to false negatives.
## Checking if a CLI exists
```bash
which <name> # returns path if found, exits non-zero if missing
command -v <name> # alternative, works in all POSIX shells
```
## Getting version info
```bash
<name> --version # most CLIs support this flag
```
Use a 5-second timeout to avoid hanging on unresponsive CLIs.
## Auth-check commands
For CLIs that support authentication, check whether the user is logged in:
| CLI | Auth check command |
| --------- | ----------------------------------------------------------------- |
| `gh` | `gh auth status` |
| `aws` | `aws sts get-caller-identity` |
| `gcloud` | `gcloud auth list --filter=status:ACTIVE --format=value(account)` |
| `az` | `az account show` |
| `vercel` | `vercel whoami` |
| `netlify` | `netlify status` |
| `fly` | `fly auth whoami` |
| `heroku` | `heroku auth:whoami` |
| `railway` | `railway whoami` |
## Common CLIs worth checking
When doing a broad discovery, check these categories:
- **Version control & code hosting:** `gh`, `git`, `gitlab`
- **Project management:** `linear`, `jira`
- **Communication:** `slack`
- **Cloud providers:** `aws`, `gcloud`, `az`
- **Containers & infra:** `docker`, `kubectl`, `terraform`
- **Runtimes & package managers:** `node`, `bun`, `deno`, `python3`, `pip3`
- **HTTP clients:** `curl`, `httpie`
- **Hosting & deploy:** `vercel`, `netlify`, `fly`, `heroku`, `railway`
## Output format
Report findings in markdown:
```markdown
## Available CLIs
- **git** (/usr/bin/git) - git version 2.x.x
- **gh** (/usr/bin/gh) - gh version 2.x.x [authenticated: user@example.com]
- **bun** (~/.bun/bin/bun) - 1.x.x
## Not found: jira, linear, slack
```
More from vellum-ai/vellum-assistant
- acpSpawn external coding agents via the Agent Client Protocol (ACP)
- amazonShop on Amazon and Amazon Fresh through your browser
- api-mappingRecord and analyze API surfaces of web services
- app-builderBuild and edit small, personal visual tools and artifacts — dashboards, trackers, calculators, data visualizations, charts, simple landing pages, and slide decks the user wants for THEMSELVES. This is the right skill whenever the user asks to "visualize this," "make a chart," or "build an artifact" for their own use, or to edit an app they already built here. Do NOT reach for a ui_show dynamic_page to fake an artifact — build a real persistent app here. NOT for complex, multi-user, or shippable products — those go to a real project folder with a coding agent (see Scope below).
- app-controlDrive a specific named macOS app via raw input bypassing the Accessibility tree
- assistant-migrationMigrate from ChatGPT, Claude, OpenClaw, Hermes, Manus, and other AI assistants into Vellum by inspecting their data exports, conversation archives, files, prompts, custom instructions, memory, saved memories, tools, GPTs, workflows, integrations, and relationships, then mapping as much as safely possible into Vellum primitives. Handles single-source and multi-source migrations with a unified, deduplicated inventory.
- chatgpt-importImport conversation history from ChatGPT into Vellum
- computer-useControl the macOS desktop
- contactsManage contacts, communication channels, access control, and invite links
- conversation-launcherOffer the user several spin-off conversations as clickable buttons on a single persistent card. Each click spawns a fresh seeded conversation in the sidebar; the user keeps their place in the current conversation. Use when you want to branch into N focused threads (research directions, draft choices, pending replies, triage of N items) without losing the current context. Not for single-destination pivots — just reply inline.