Onboarding wizard for Endor Labs. Guides users through prerequisites, MCP server configuration, authentication, namespace setup, and running their first scan. Use when the user says "endor setup", "configure endor", "endor auth", "set up endor", "install endor", "endor onboarding", or when any MCP tool fails with an auth or namespace error. Do NOT use when the user already has a working setup — route to specific skills instead.
90
88%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Guide the user from zero to scanning in 5 minutes. The MCP server runs via npx using the published endorctl npm package - no binary installation required.
Node.js v18+ is required to run the MCP server via npx.
node --versionIf not installed, provide installation instructions:
# macOS (Homebrew)
brew install node
# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# Or use nvm (recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 20npx --versionnpx comes bundled with Node.js. If missing, run npm install -g npx.
npx -y endorctl --versionThis downloads and runs endorctl without installing it globally. The -y flag auto-confirms the download.
Look for endor-cli-tools in the project's .claude/settings.json.
Ask the user which workflow fits their use case:
| Workflow | Best For | Auth Source |
|---|---|---|
| Local Development | Single namespace, stable local dev, most developers | API key in ~/.endorctl/config.yaml via endorctl init |
| Multi-Namespace | Frequent namespace switching, checking multiple repos | Env vars in settings.json (ENDOR_MCP_SERVER_AUTH_MODE, ENDOR_NAMESPACE) |
These are mutually exclusive. Using both simultaneously causes an auth error loop. If the user is unsure, recommend Local Development — it's simpler and covers most use cases.
Before proceeding, check for conflicts:
test -f ~/.endorctl/config.yaml && echo "config.yaml exists"config.yaml exists and user chose Multi-Namespace: warn that it must be removed (rm -rf ~/.endorctl) to avoid conflictsconfig.yaml does not exist and user chose Local Development: good — endorctl init will create it in Step 3Create or update .claude/settings.json in the project root. Use the template matching the chosen workflow:
Local Development (no auth env vars — auth comes from config.yaml):
{
"mcpServers": {
"endor-cli-tools": {
"command": "npx",
"args": [
"-y",
"endorctl",
"ai-tools",
"mcp-server"
]
}
}
}Multi-Namespace (auth via env vars — no config.yaml):
{
"mcpServers": {
"endor-cli-tools": {
"command": "npx",
"args": [
"-y",
"endorctl",
"ai-tools",
"mcp-server"
],
"env": {
"ENDOR_MCP_SERVER_AUTH_MODE": "google",
"ENDOR_API": "https://api.endorlabs.com",
"ENDOR_NAMESPACE": "demo-trial"
}
}
}
}Tell the user: You must restart Claude Code after creating or modifying settings.json for the MCP server to become available.
google, github, api-key) and namespaceendorctl init to generate ~/.endorctl/config.yaml:npx -y endorctl init --auth-mode=<MODE>| Provider | ENDOR_MCP_SERVER_AUTH_MODE | Additional Config |
|---|---|---|
google | None | |
| GitHub | github | None |
| GitLab | gitlab | None |
| Enterprise SSO | sso | Also set ENDOR_MCP_SERVER_AUTH_TENANT |
email | Also set ENDOR_MCP_SERVER_AUTH_EMAIL |
ENDOR_MCP_SERVER_AUTH_MODE in settings.json accordingly.Instruct the user to set these environment variables themselves (never ask them to paste credentials into chat):
export ENDOR_API_CREDENTIALS_KEY=<your-api-key>
export ENDOR_API_CREDENTIALS_SECRET=<your-api-secret>Or use a pre-existing token:
export ENDOR_TOKEN=<your-token>The namespace was configured during endorctl init in Step 3.
Never print ~/.endorctl/config.yaml in Bash or chat — it contains live API credentials. Tool transcripts log stdout, so cat, grep across the file, or grep -v '…' “redaction” still leaks values (e.g. ENDOR_API_CREDENTIALS_KEY / SECRET are not reliably stripped).
Safe verification:
test -f ~/.endorctl/config.yaml && echo "config.yaml present"If the namespace is wrong, re-run npx -y endorctl init.
Replace "demo-trial" with the user's actual namespace in the ENDOR_NAMESPACE field of settings.json. The namespace is their Endor Labs organization name, found at app.endorlabs.com in the top-left corner.
Direct them to:
/endor-demo to try with simulated dataAfter restarting Claude Code, try using one of the MCP tools to verify the connection:
Use the check_dependency_for_vulnerabilities MCP tool with a known package:
npmlodash4.17.20If this returns vulnerability data, the setup is working.
If it opens a browser for authentication, that's expected on first use. Complete the login flow.
Congratulate the user and provide next steps:
## Setup Complete!
Your Endor Labs MCP server is configured and ready. Here's what to try:
### First Steps
1. `/endor-scan` - Scan your current project for security issues
2. `/endor-check express 4.17.1` - Check a dependency for vulnerabilities
3. `/endor-help` - See all available commands
### Daily Workflow
- Run `/endor-scan` regularly during development
- Use `/endor-check` when adding new dependencies
- Run `/endor-review` before creating pull requests
### Learn More
- `/endor-demo` - Interactive demo with sample data
- `/endor-help` - Full command reference| Issue | Solution |
|---|---|
node: command not found | Install Node.js v18+ (see Step 1) |
npx: command not found | Install Node.js v18+ (npx is bundled) |
endorctl: not found via npx | Check internet connection; run npx -y endorctl --version |
| MCP tools not showing in Claude Code | Restart Claude Code after editing settings.json |
| Browser auth not opening | Check ENDOR_MCP_SERVER_AUTH_MODE is set correctly (Multi-Namespace workflow only) |
| Auth error loop / persistent auth failures | Conflict between config.yaml and env vars in settings.json — choose one workflow and remove the other (see Authentication Workflows in Step 2.2) |
namespace not found | Verify ENDOR_NAMESPACE matches your org name at app.endorlabs.com |
permission denied | Verify your account has access to the namespace |
| Timeout on first run | First npx run downloads the package - this may take 30-60 seconds |
| Behind a corporate proxy | Set HTTPS_PROXY environment variable in settings.json env block |
Once configured, these tools are available to Claude Code:
| Tool | Description |
|---|---|
scan | Scan repository for vulnerabilities, secrets, SAST issues |
check_dependency_for_vulnerabilities | Check a specific package version for CVEs |
check_dependency_for_risks | Check for vulnerabilities AND malware (prefer over above) |
get_endor_vulnerability | Get detailed CVE/GHSA vulnerability information |
get_resource | Retrieve any Endor Labs resource (Project, Finding, Policy, etc.) |
security_review | AI-powered code diff security review (Enterprise only) |
344e7ff
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.