lwy-project-skill-installer
Use this skill when the user wants to install, add, or configure a skill in a project. Analyze the project's tech stack and workflow, then recommend and install the best-matching skill. Triggers: 'install skill', 'add skill', 'configure skill', 'set up skill', 'enable skill', 'use skill in project', 'project skill', or when the user asks how to bring an existing skill capability into the current workspace.
What this skill does
# Project Skill Installer
Analyze the project's tech stack, workflow, and pain points, then **recommend** the best skills to install. Always confirm with the user via `AskUserQuestion` before installing anything.
> **Core principle**: First understand the project, then recommend, and install only after the user confirms.
> **Shared principle:** This skill shares the 5 common writer disciplines with `project-skill-writer` / `project-agent-writer` / `project-rules-writer`. See [../project-skill-writer/references/writer-discipline.md](../project-skill-writer/references/writer-discipline.md) for details.
## Use Cases
**Trigger when:**
- The user says "install a skill", "find a skill for X", "what skills would help this project"
- The user describes a capability gap ("I wish AI would automatically...")
- The user wants to set up a new project with skills
**Do not trigger when:**
- The user wants to **create** a new skill (delegate to `project-skill-writer`)
- The user wants to **create** an agent (delegate to `project-agent-writer`)
- The user wants to **create** a rule (delegate to `project-rules-writer`)
## Prerequisites
- Node.js >= 18
- Requires the globally available `find-skills` or `trae-skill-finder` skill
- If missing, prompt the user: `npx skills add find-skills -g -y`
## Workflow
```
[L1: Understand the goal]
↓
[L2: Project analysis]
↓
[L3: Skill discovery]
↓
[L4: Recommend] ← AskUserQuestion (confirmation required)
↓
[L5: Install]
↓
[L6: Verify]
```
## L1: Understand the Goal
Extract the user's needs—do not ask "what skill do you want?" but understand:
| What the user says | Real need |
|----------|----------|
| "install a skill" | Vague—proceed to L2 analysis to find gaps |
| "find a skill for testing" | Specific domain—search for testing skills |
| "set up this project with skills" | Full audit—analyze the project and recommend a suite |
| "I keep doing X manually" | Automation gap—find a skill that solves X |
## L2: Project Analysis
Scan the project to build a tech profile. Use search tools in parallel:
### Detection Targets
| Signal | What to look for | Tool |
|------|----------|------|
| Language | File extensions (`.ts`, `.py`, `.swift`, `.go`) | Glob |
| Framework | package.json dependencies, Podfile, go.mod, Cargo.toml | Read |
| Build tools | Makefile, webpack.config, vite.config, Bazel | Glob |
| Testing | jest.config, pytest.ini, XCTest, go test | Glob |
| CI/CD | .github/workflows/, Jenkinsfile, .gitlab-ci.yml | Glob |
| Existing skills | .agents/skills/, .trae/skills/, .cursor/skills/ | Glob |
| Existing rules | .agents/rules/, .trae/rules/ | Glob |
### Tech Profile Output
```
Project: {name}
Language: TypeScript, Swift
Framework: React 18, UIKit
Build: Vite, Bazel
Testing: Jest, XCTest
CI: GitHub Actions
Existing skills: [list]
Existing rules: [list]
```
## L3: Skill Discovery
Based on the tech profile and the user's goal, search for matching skills:
### Search Strategy
1. **Direct match**: search by the user's exact request → `npx skills find "<user_query>"`
2. **Tech match**: search by the detected tech stack → `npx skills find "react"`, `npx skills find "swift"`
3. **Gap match**: search by detected workflow gaps → if there is no testing skill, search `npx skills find "testing"`
### Skill Sources (priority order)
1. **Local registry**: check globally installed skills in `~/.trae/skills/` and `~/.trae-cn/skills/`
2. **Community registry**: `npx skills find "<query>"` — search the skills.sh marketplace
3. **Bytedance registry**: `npx @tiktok-fe/skills find "<query>"` — search the internal registry (if available)
### Filtering Criteria
Reject skills that:
- Conflict with an installed skill (same purpose)
- Do not match the project's language/framework
- Are global-only (this skill installs project-level ones)
- Have no description or are clearly low quality
## L4: Recommend (AskUserQuestion required)
**Critical**: Present recommendations via `AskUserQuestion` before installing any skill.
### Recommendation Format
For each recommended skill, prepare:
```
Skill: {name}
Purpose: {what it does, one sentence}
Reason: {why it fits this project}
Install: {command}
```
### AskUserQuestion Call
Use `AskUserQuestion`:
```json
{
"questions": [{
"question": "Based on your {language/framework} project, I recommend these skills. Which would you like to install?",
"header": "Skills",
"multiSelect": true,
"options": [
{
"label": "{skill-1-name} (Recommended)",
"description": "{one sentence: what it does + why it fits}"
},
{
"label": "{skill-2-name}",
"description": "{one sentence: what it does + why it fits}"
},
{
"label": "Skip",
"description": "Don't install any skills right now"
}
]
}]
}
```
**Rules**:
- Put the most relevant skill first and mark it "(Recommended)"
- At most 4 options (3 skills + Skip)
- Put "Skip" as the last option
- Use `multiSelect: true` to allow multiple installs
- Never install before the user confirms
## L5: Install
After the user confirms which skills to install:
### Install Path Discovery
Use [path discovery](references/path-discovery.md) to determine the project-relative install path:
1. Check whether `.agents/skills/` exists in the project root
2. Otherwise default to creating `.agents/skills/` (no longer write to `.trae/`, `.cursor/`, `.claude/`—those are IDE-managed)
### Install Commands
```bash
# Community skills (skills.sh)
npx skills add <package-name> --path <project-root>/.agents/skills/
# Bytedance internal skills
npx @tiktok-fe/skills add <package-name> --path <project-root>/.agents/skills/
```
### Install Rules
- **Always** use a project-relative path — never `~/.trae/skills/`, `~/.claude/skills/`, or other global paths
- Do not install into the project's `.trae/`, `.claude/`, `.cursor/`—those are IDE-written directories
- Install skills one at a time, verifying each before moving to the next
- If an install fails, report the error and suggest manual installation steps
## L6: Verify
Verify after installation:
- [ ] The skill directory exists at the expected path
- [ ] SKILL.md exists and is readable
- [ ] The skill description mentions relevant triggers
- [ ] No conflict with existing skills
Report to the user:
```
Installed {N} skills:
✓ {skill-1} → {path}
✓ {skill-2} → {path}
Usage: Just describe your need, and the skill activates automatically.
```
## Error Handling
| Problem | Solution |
|------|----------|
| `find-skills` unavailable | Prompt: `npx skills add find-skills -g -y` |
| No skill matches the query | Suggest creating a custom skill via `project-skill-writer` |
| User requests a global install | Reject, explain the project-scope limitation, offer a project-relative alternative |
| User requests creating an agent/rule | Route to `project-agent-writer` or `project-rules-writer` |
| Install command fails | Show the error, suggest manual `npx skills add <name> --path <path>` |
| Skill conflicts with an existing one | Show a comparison, ask the user which to keep |
## Scope
This skill handles **only**:
- ✅ Analyzing the project's skill needs
- ✅ Searching skill registries
- ✅ Recommending skills with user confirmation
- ✅ Installing skills to a project-relative path
- ✅ Verifying the installation
This skill does **not** handle:
- ❌ Creating new skills → `project-skill-writer`
- ❌ Creating agents → `project-agent-writer`
- ❌ Creating rules → `project-rules-writer`
- ❌ Global installation (always scoped to the project)
## References
- [Path discovery](references/path-discovery.md) — Install path determination
- [Agent Skills core practices](references/agent-skills-core-practices.md) — AI skill best practices
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.