Manage AI agent skills using the @tiktok-fe/skills CLI (binary: ai-skills). Use when the user asks to find, search, install, add, remove, update, publish, li...
--- name: bytedance-find-skills description: "Manage AI agent skills using the @tiktok-fe/skills CLI (binary: ai-skills). Use when the user asks to find, search, install, add, remove, update, publish, list, or manage AI skills across coding agents (Cursor, Claude Code, GitHub Copilot, Windsurf, etc.), or mentions ai-skills, skill hub, or @tiktok-fe/skills." --- # AI Skills CLI `@tiktok-fe/skills` (`ai-skills`) discovers, installs, and manages AI agent skills across 30+ platforms. ```bash npm install -g @tiktok-fe/skills # or: npx @tiktok-fe/skills [command] ``` ## Pure Mode (Required) The CLI defaults to interactive CLI mode with colors, spinners, arrow-key navigation, and confirmation prompts. **This WILL hang/block when called by an AI agent.** Always use `--pure` to switch to non-interactive plain-text mode. ### What `--pure` changes | Behavior | CLI mode (default) | Pure mode (`--pure`) | | --------------- | ---------------------------------- | --------------------------------------------------------------- | | Output | ANSI colors, spinners, animations | Plain `console.log`, no escape codes | | Prompts | Interactive confirmation dialogs | **Skipped** — operations that need confirmation silently fail | | Overwrite | Asks "overwrite?" prompt | Always returns `false` — use `--force` to overwrite | | Search | Real-time Ink UI with keyboard nav | Paginated text output | | Scope selection | Interactive multi-select | **Fails** if not specified — always pass `-p`/`-g`/`-t`/`--dir` | | Manage | Ink-based React terminal UI | Falls back to `list` output | ### Preventing hangs Commands that block without proper flags: ```bash # WRONG — will hang on scope selection prompt ai-skills add my-skill --source local --pure # CORRECT — scope specified, no prompt ai-skills add my-skill --source local --project --pure # WRONG — will silently skip existing skill (shouldOverwrite=false) ai-skills add my-skill --source local --project --pure # CORRECT — force overwrite ai-skills add my-skill --source local --project --pure --force # WRONG — will hang on confirmation prompt ai-skills update --project --pure # CORRECT — auto-confirm ai-skills update --project --pure -y # WRONG — will hang on clean confirmation ai-skills clean --project --pure # CORRECT — force clean ai-skills clean --project --pure --force ``` ### Complete flag checklist Every command invoked by an AI agent must include: 1. **`--pure`** — plain-text output, no ANSI codes, no interactive prompts 2. **Scope flag** — `-p` (project), `-g` (global), `-t <dir>`, or `--dir <dir>` 3. **Confirmation skip** — `-y` (for update/publish) or `--force` (for add/remove/clean) 4. **`--source`** — `local`, `github`, `gitlab`, `codebase`, `wellknown` ## Quick Reference ### Find skills ```bash ai-skills find "query" --pure --page 1 ai-skills find react --source github --pure ai-skills find --tag typescript --filter community --pure ``` ### Install skills ```bash # From internal registry ai-skills add skill-name --source local --project --pure -y # From GitHub (specific skill) ai-skills add owner/repo --source github --skill skill-name --project --pure -y # All skills from a repo ai-skills add owner/repo --source github --project --pure -y # Force overwrite ai-skills add skill-name --source local --project --pure --force ``` ### List / Remove / Update ```bash ai-skills list --project --pure ai-skills remove skill-name --project --pure --force ai-skills update --project --pure -y ai-skills update --list --project --pure # check only ``` ### Auth & Config ```bash ai-skills whoami --json ai-skills login --pure ai-skills config --json ``` ### Create & Publish ```bash ai-skills init --name my-skill --template basic --pure ai-skills publish --dir ./my-skill --pure -y ai-skills unpublish user/skills/name --version 1.0.0 --pure --force ``` ### Other ```bash ai-skills agents --pure # list supported agents ai-skills clean --project --pure --force # remove all skills ``` ## Output Parsing | Command | Success | Error | | ------- | ----------------------------------- | ------------------------------------------------- | | add | `Installed: name` | `Error:`, `Already installed:`, `No agents found` | | remove | `Removed: name` | `not found`, `Cannot remove:` | | update | `Updated: N, Skipped: N, Failed: N` | — | | publish | `Published: name@ver` | `Not logged in` | | clean | `Cleaned: N skill(s) removed` | — | | login | `Login successful:` | `Login failed:` | | init | `Created: /path/SKILL.md` | `Error:` | ## Common Workflows ### Install a skill for a project ```bash ai-skills find typescript --pure --page 1 ai-skills add typescript-config --source local --project --pure -y ai-skills list --project --pure ``` ### Update all project skills ```bash ai-skills update --list --project --pure ai-skills update --project --pure -y ``` ### Publish a new skill ```bash ai-skills whoami --json ai-skills init --name my-skill --template basic --pure # (edit SKILL.md) ai-skills publish --dir ./my-skill --pure -y ``` ## Detailed References For command-specific options, arguments, and output formats, read the corresponding file under `llms/`: | Topic | File | | ----------------- | ---------------------------------------------------------------------- | | CLI overview | [llms/cli-overview.txt](llms/cli-overview.txt) | | **Commands** | | | add (install) | [llms/commands/add.txt](llms/commands/add.txt) | | find (search) | [llms/commands/find.txt](llms/commands/find.txt) | | list | [llms/commands/list.txt](llms/commands/list.txt) | | remove | [llms/commands/remove.txt](llms/commands/remove.txt) | | update | [llms/commands/update.txt](llms/commands/update.txt) | | init | [llms/commands/init.txt](llms/commands/init.txt) | | publish | [llms/commands/publish.txt](llms/commands/publish.txt) | | unpublish | [llms/commands/unpublish.txt](llms/commands/unpublish.txt) | | clean | [llms/commands/clean.txt](llms/commands/clean.txt) | | config | [llms/commands/config.txt](llms/commands/config.txt) | | login | [llms/commands/login.txt](llms/commands/login.txt) | | whoami | [llms/commands/whoami.txt](llms/commands/whoami.txt) | | agents | [llms/commands/agents.txt](llms/commands/agents.txt) | | manage | [llms/commands/manage.txt](llms/commands/manage.txt) | | **Guides** | | | AI best practices | [llms/guides/ai-best-practices.txt](llms/guides/ai-best-practices.txt) | | SKILL.md format | [llms/guides/skill-format.txt](llms/guides/skill-format.txt) | | Source platforms | [llms/guides/source-platforms.txt](llms/guides/source-platforms.txt) | | Supported agents | [llms/guides/agents-list.txt](llms/guides/agents-list.txt) | Read these files only when detailed information is needed for a specific command or topic.
don't have the plugin yet? install it then click "run inline in claude" again.
by @actionbook
use the @tiktok-fe/skills CLI (binary: ai-skills) to discover, install, manage, and publish AI agent skills across 30+ platforms (Cursor, Claude Code, GitHub Copilot, Windsurf, etc.). invoke this skill when the user asks to find, search, install, add, remove, update, publish, list, or manage skills, or mentions ai-skills, skill hub, or @tiktok-fe/skills. the CLI runs in interactive mode by default (colors, spinners, prompts), which will hang when called by an AI agent. always use --pure flag to switch to non-interactive plain-text mode.
npm install -g @tiktok-fe/skills or invoke via npx @tiktok-fe/skills [command]-p (project scope), -g (global scope), -t <dir> (target directory), or --dir <dir>local (internal registry), github, gitlab, codebase, or wellknownowner/repo (GitHub), or local pathai-skills find "<query>" --pure --page 1 to retrieve skills from registry--source <source> (e.g., --source github)--tag <tag> and optionally --filter community or --filter official-p), global (-g), or directory (-t <dir>)ai-skills add <skill-name> --source <source> --pure <scope> -y to install--skill <skill-name> to target a specific skill, or omit to install all skills from repo--forceInstalled: <name> or error messageai-skills list --pure <scope> to enumerate installed skillsai-skills remove <skill-name> --pure <scope> --force to uninstallRemoved: <name> or error if skill not foundai-skills update --list --pure <scope> to check for updates without applyingai-skills update --pure <scope> -y to apply all available updatesUpdated: N, Skipped: N, Failed: Nai-skills whoami --jsonai-skills login --pure to authenticate (requires GitHub/GitLab token)ai-skills init --name <name> --template basic --pure (creates SKILL.md and boilerplate)ai-skills publish --dir <path/to/skill> --pure -y to publish to registryPublished: <name>@<version> or error if not authenticatedai-skills unpublish <user/skills/name> --version <version> --pure --forceai-skills clean --pure <scope> --force to remove all installed skills in scopeCleaned: N skill(s) removedai-skills agents --pure to list 30+ supported AI agents and their skill compatibilityai-skills whoami --json to display current user identity and auth statusai-skills config --json to display CLI configuration (home dir, registry URL, cache path, etc.)if interactive mode hangs: always include --pure flag when calling from an AI agent. without it, CLI waits for user input (arrow keys, confirmations, color rendering).
if scope is not specified: command will prompt for scope interactively (hangs in pure mode). always provide exactly one scope flag: -p (project), -g (global), -t <dir>, or --dir <dir>.
if skill already exists and should be preserved: omit --force flag. CLI will return error Already installed: <name> and skip installation. if skill should be overwritten, include --force.
if installation/removal needs auto-confirmation: include -y (for update, publish) or --force (for add, remove, clean). without these, CLI will hang on confirmation prompt in pure mode.
if publishing and not authenticated: ai-skills publish will fail with Not logged in. run ai-skills login --pure first to obtain and store GitHub/GitLab token.
if searching from GitHub source: GitHub API rate limits apply (60 req/hour unauthenticated, 5000/hour authenticated). if rate limit exceeded, search will fail with timeout or 403 error. consider adding --source local for internal registry (no rate limits).
if result set is empty: find returns empty list with no skills matching query. check query spelling or try broader terms. list returns empty list if no skills installed in scope.
if network timeout occurs: CLI has default 30s timeout for registry calls. check internet connectivity, or retry command. if registry is unreachable, fall back to --source local if available.
if authentication token expires: publish and login may fail with auth errors. run ai-skills login --pure to refresh token and re-authenticate.
name | version | source | description | url. no ANSI codes in pure mode.Installed: <skill-name> on success; error lines start with Error: or Already installed: on failure.Removed: <skill-name> on success; error lines start with not found or Cannot remove: on failure.Updated: N, Skipped: N, Failed: N where N is count.Published: <name>@<version> on success; error lines start with Error: or Not logged in on failure.Cleaned: N skill(s) removed where N is count.Login successful: <user> or Login failed: <reason>.user, email, authenticated (boolean).Created: /path/to/SKILL.md on success.Error: or command-specific error code. exit code 1 on failure, 0 on success.Installed: <name> confirmation; skill is now available in the target scope (project, global, or directory). user can verify with ai-skills list --pure <scope>.Removed: <name> confirmation; skill no longer appears in ai-skills list output.Updated: N, Skipped: N, Failed: N; all outdated skills in