T08 · Insecure Dependencies
- Location
SKILL.md:10- Finding
Unpinned External CLI Installation and Execution
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a legitimate AI-skill manager, but it asks agents to run unpinned tooling and make broad skill changes without enough confirmation safeguards.
Install only if you trust the @tiktok-fe/skills package and are comfortable letting an agent manage skill files that affect future AI-agent behavior. Prefer pinned package versions, review update lists before applying changes, avoid blanket --force or -y on destructive commands, limit actions to project scope or specific agents, and disable telemetry if you do not want install metadata uploaded.
SKILL.md:10Unpinned External CLI Installation and Execution
llms/commands/add.txt:90Installation Telemetry Is Enabled by Default
The workflow includes creating a new skill, editing SKILL.md, and publishing it, which enables the agent to produce and distribute new executable instructions that affect future agent behavior. In the context of a skill-management system, self-modification and publication are especially sensitive because they can propagate unsafe logic or persistence beyond the current session.
ai-skills whoami --json
ai-skills init --name my-skill --template basic --pure
# (edit SKILL.md)
ai-skills publish --dir ./my-skill --pure -y
Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.
In Pure mode:
- All output goes through `console.log` (no ANSI escape codes)
- No interactive prompts — operations that need confirmation silently skip or fail
- `shouldOverwrite` always returns `false` — use `--force` to overwrite existing skills
- Error messages use `Error: <reason>` format
## Source Platforms
Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.
| `-s, --soft` | Use symlink mode (shared storage) |
| `--no-soft` | Force hard copy mode |
| `-a, --agents <names>` | Specify agent(s) to install to (comma-separated) |
| `-f, --force` | Overwrite existing skills without prompt |
| `--cli` | Interactive mode (default) |
| `--pure` | Plain text output mode |
Updating project skills is a form of self-modification: the tool changes the skill files that agents rely on for future behavior. This is especially sensitive because project-scoped skills may directly affect repository-local agent actions, so an unsafe update can alter behavior in a targeted workspace.
|--------|-------------|
| `-p, --project` | Update project skills (default) |
| `-g, --global` | Update global skills |
| `-t, --target <dir>` | Update skills in custom directory |
| `--dir <dir>` | Update skills in exact directory |
| `-a, --agents <names>` | Filter by specific agent(s) |
| `--filter <name>` | Update only the named skill |
Updating global skills modifies shared agent behavior across multiple projects and sessions, amplifying the effect of any bad or compromised update. The documentation presents this as a routine operation without emphasizing that it changes trusted agent instructions at a broad scope.
| `-p, --project` | Update project skills (default) |
| `-g, --global` | Update global skills |
| `-t, --target <dir>` | Update skills in custom directory |
| `--dir <dir>` | Update skills in exact directory |
| `-a, --agents <names>` | Filter by specific agent(s) |
| `--filter <name>` | Update only the named skill |
| `-y, --yes` | Skip confirmation prompts |
The instruction to always use --force for overwrites tells an agent to replace existing installed skills without confirmation. Because skills influence agent behavior, forced overwrite is a direct self-modification path that can replace a trusted skill with different content, potentially introducing malicious or incompatible behavior.
### 4. Use `--force` for Overwrites
In pure mode, `shouldOverwrite` always returns `false`. Use `--force` to overwrite existing skills:
```bash
# ✅ Correct — Force overwrite
This guidance normalizes self-modification of the agent's skill environment through update operations, including non-interactive application flows elsewhere in the file. For an agent, changing its own installed skills can alter future behavior, capabilities, or trust boundaries, creating persistence and supply-chain risk if updates are unreviewed or triggered automatically.
ai-skills remove skill-name --global --pure --force
```
### Update Skills
```bash
# Check for updates
The activation description is very broad and matches many generic requests about finding, installing, updating, publishing, or managing skills across multiple agents. That over-breadth can cause the skill to trigger in situations the user did not specifically intend, increasing the chance of unnecessary package-management actions or exposure to other risky instructions in the skill.
The skill instructs use of npx @tiktok-fe/skills without pinning a specific version, so each invocation may fetch and execute whatever package version is current at runtime. In an agent context, that creates supply-chain risk and makes behavior non-reproducible; a compromised or maliciously updated package could be executed automatically.
The guidance explicitly recommends auto-confirm flags such as -y and --force so the agent can bypass interactive confirmation for update, add, remove, clean, and publish flows. In a skill-management tool, removing human confirmation increases the chance that an agent performs destructive or trust-sensitive operations without adequate user approval.
# 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
The documentation instructs users and agents to execute npx @tiktok-fe/skills without pinning a specific version, which causes retrieval and execution of whatever package version is current at runtime. In an agent skill-management context, this increases supply-chain risk because a compromised or maliciously updated package could be run immediately with the user's privileges.
The command explicitly supports installing skills from external Git repositories and URLs into local agent directories, which can alter the user's local environment. The documentation does not present a clear trust warning, integrity verification requirement, or review step before installing content from untrusted sources, increasing supply-chain risk for skills that may contain unsafe instructions or files.
The documentation includes a reset-all capability that can overwrite user settings without any documented confirmation prompt, warning, or recovery guidance. In an agent-driven context, this increases the chance of accidental destructive configuration changes, especially if an agent issues the command on the user's behalf.
This plain-text command description defines search as an alias without narrowing context or providing exclusion conditions. Because search is a very generic term, it could collide with unrelated user intents and cause unintended invocation of this skill.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
| `-n, --name <name>` | Skill name (if omitted, prompts or uses current directory name) |
| `-d, --description <text>` | Skill description (written to SKILL.md front matter; if omitted, prompts or uses default) |
| `-t, --template <type>` | Template: `basic` or `advanced` (or a path to existing skill dir) |
| `-y, --yes` | Skip prompts, use defaults |
| `--cli` | Interactive mode (default) |
| `--pure` | Plain text output mode |
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
|--------|-------------|
| `-d, --dir <path>` | Path to skill directory (defaults to current directory) |
| `-v, --version <ver>` | Version to publish (auto-increments if omitted) |
| `-y, --yes` | Skip confirmation prompts |
| `--cli` | Interactive mode (default) |
| `--pure` | Plain text output mode |
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
|--------|-------------|
| `-d, --dir <path>` | Path to skill directory (defaults to current directory) |
| `-v, --version <ver>` | Version to publish (auto-increments if omitted) |
| `-y, --yes` | Skip confirmation prompts |
| `--cli` | Interactive mode (default) |
| `--pure` | Plain text output mode |
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
|--------|-------------|
| `-d, --dir <path>` | Path to skill directory (defaults to current directory) |
| `-v, --version <ver>` | Version to publish (auto-increments if omitted) |
| `-y, --yes` | Skip confirmation prompts |
| `--cli` | Interactive mode (default) |
| `--pure` | Plain text output mode |
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
# Unpublish a specific version
ai-skills unpublish myuser/skills/my-skill --version 1.0.0
# Unpublish entire skill (skip confirmation)
ai-skills unpublish myuser/skills/my-skill --all --force
# Pure mode
The command explicitly supports applying updates to installed skills, including unattended use via --yes, but the documentation does not warn that updates can overwrite existing skill files and materially change agent behavior. In the context of agent skills, silent updates increase supply-chain and integrity risk because users may approve automation without understanding that executable prompts/configuration are being replaced.
The -y, --yes option skips confirmation prompts for updates, which means the tool can make consequential changes to installed skill definitions without a human checkpoint. In an agent-skill ecosystem, this increases the chance of unsafe behavior changes or supply-chain compromise being adopted automatically.
| `--dir <dir>` | Update skills in exact directory |
| `-a, --agents <names>` | Filter by specific agent(s) |
| `--filter <name>` | Update only the named skill |
| `-y, --yes` | Skip confirmation prompts |
| `-l, --list` | List available updates without applying |
| `--include-external` | Include externally sourced skills in update check |
| `--cli` | Interactive mode (default) |
--yes is documented as applying updates without confirmation, enabling autonomous modification of installed skills. Because skills influence downstream agent behavior, removing human review can allow unintended or malicious upstream changes to propagate automatically across environments.
Same logic but all output via `console.log`:
- Lists each skill with current → available version
- `--list` mode: Shows updates without applying
- `--yes`: Applies without confirmation
- `--filter`: Only checks/updates the specified skill
## Examples
This markdown file documents that the command outputs username, real name, and email for the authenticated user, but it does not include any warning that personally identifiable information will be displayed or emitted in JSON. Because the skill affects user privacy by revealing account identity data, the description should disclose that behavior clearly.
The file presents user-facing output and sample identity data using Chinese-specific values such as '张三' with no indication that this skill is region-specific or that language/locale may vary. This can constitute a language/locale policy issue because the documentation implicitly fixes a specific locale without user opt-in or justification.
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
```bash
ai-skills add my-skill --source local --project --pure
# Installs to: .cursor/skills/my-skill, .claude/skills/my-skill, etc.
```
### Global-Level
No suspicious patterns detected.