mirror of
https://github.com/cexll/myclaude.git
synced 2026-02-05 02:30:26 +08:00
feat skill-install install script and security scan
This commit is contained in:
167
skills/skill-install/SKILL.md
Normal file
167
skills/skill-install/SKILL.md
Normal file
@@ -0,0 +1,167 @@
|
||||
---
|
||||
name: skill-install
|
||||
description: Install Claude skills from GitHub repositories with automated security scanning. Triggers when users want to install skills from a GitHub URL, need to browse available skills in a repository, or want to safely add new skills to their Claude environment.
|
||||
---
|
||||
|
||||
# Skill Install
|
||||
|
||||
## Overview
|
||||
|
||||
Install Claude skills from GitHub repositories with built-in security scanning to protect against malicious code, backdoors, and vulnerabilities.
|
||||
|
||||
## When to Use
|
||||
|
||||
Trigger this skill when the user:
|
||||
- Provides a GitHub repository URL and wants to install skills
|
||||
- Asks to "install skills from GitHub"
|
||||
- Wants to browse and select skills from a repository
|
||||
- Needs to add new skills to their Claude environment
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Parse GitHub URL
|
||||
|
||||
Accept a GitHub repository URL from the user. The URL should point to a repository containing a `skills/` directory.
|
||||
|
||||
Supported URL formats:
|
||||
- `https://github.com/user/repo`
|
||||
- `https://github.com/user/repo/tree/main/skills`
|
||||
- `https://github.com/user/repo/tree/branch-name/skills`
|
||||
|
||||
Extract:
|
||||
- Repository owner
|
||||
- Repository name
|
||||
- Branch (default to `main` if not specified)
|
||||
|
||||
### Step 2: Fetch Skills List
|
||||
|
||||
Use the WebFetch tool to retrieve the skills directory listing from GitHub.
|
||||
|
||||
GitHub API endpoint pattern:
|
||||
```
|
||||
https://api.github.com/repos/{owner}/{repo}/contents/skills?ref={branch}
|
||||
```
|
||||
|
||||
Parse the response to extract:
|
||||
- Skill directory names
|
||||
- Each skill should be a subdirectory containing a SKILL.md file
|
||||
|
||||
### Step 3: Present Skills to User
|
||||
|
||||
Use the AskUserQuestion tool to let the user select which skills to install.
|
||||
|
||||
Set `multiSelect: true` to allow multiple selections.
|
||||
|
||||
Present each skill with:
|
||||
- Skill name (directory name)
|
||||
- Brief description (if available from SKILL.md frontmatter)
|
||||
|
||||
### Step 4: Fetch Skill Content
|
||||
|
||||
For each selected skill, fetch all files in the skill directory:
|
||||
|
||||
1. Get the file tree for the skill directory
|
||||
2. Download all files (SKILL.md, scripts/, references/, assets/)
|
||||
3. Store the complete skill content for security analysis
|
||||
|
||||
Use WebFetch with GitHub API:
|
||||
```
|
||||
https://api.github.com/repos/{owner}/{repo}/contents/skills/{skill_name}?ref={branch}
|
||||
```
|
||||
|
||||
For each file, fetch the raw content:
|
||||
```
|
||||
https://raw.githubusercontent.com/{owner}/{repo}/{branch}/skills/{skill_name}/{file_path}
|
||||
```
|
||||
|
||||
### Step 5: Security Scan
|
||||
|
||||
**CRITICAL:** Before installation, perform a thorough security analysis of each skill.
|
||||
|
||||
Read the security scan prompt template from `references/security_scan_prompt.md` and apply it to analyze the skill content.
|
||||
|
||||
Examine for:
|
||||
1. **Malicious Command Execution** - eval, exec, subprocess with shell=True
|
||||
2. **Backdoor Detection** - obfuscated code, suspicious network requests
|
||||
3. **Credential Theft** - accessing ~/.ssh, ~/.aws, environment variables
|
||||
4. **Unauthorized Network Access** - external requests to suspicious domains
|
||||
5. **File System Abuse** - destructive operations, unauthorized writes
|
||||
6. **Privilege Escalation** - sudo attempts, system modifications
|
||||
7. **Supply Chain Attacks** - suspicious package installations
|
||||
|
||||
Output the security analysis with:
|
||||
- Security Status: SAFE / WARNING / DANGEROUS
|
||||
- Risk Level: LOW / MEDIUM / HIGH / CRITICAL
|
||||
- Detailed findings with file locations and severity
|
||||
- Recommendation: APPROVE / APPROVE_WITH_WARNINGS / REJECT
|
||||
|
||||
### Step 6: User Decision
|
||||
|
||||
Based on the security scan results:
|
||||
|
||||
**If SAFE (APPROVE):**
|
||||
- Proceed directly to installation
|
||||
|
||||
**If WARNING (APPROVE_WITH_WARNINGS):**
|
||||
- Display the security warnings to the user
|
||||
- Use AskUserQuestion to confirm: "Security warnings detected. Do you want to proceed with installation?"
|
||||
- Options: "Yes, install anyway" / "No, skip this skill"
|
||||
|
||||
**If DANGEROUS (REJECT):**
|
||||
- Display the critical security issues
|
||||
- Refuse to install
|
||||
- Explain why the skill is dangerous
|
||||
- Do NOT provide an option to override for CRITICAL severity issues
|
||||
|
||||
### Step 7: Install Skills
|
||||
|
||||
For approved skills, install to `~/.claude/skills/`:
|
||||
|
||||
1. Create the skill directory: `~/.claude/skills/{skill_name}/`
|
||||
2. Write all skill files maintaining the directory structure
|
||||
3. Ensure proper file permissions (executable for scripts)
|
||||
4. Verify SKILL.md exists and has valid frontmatter
|
||||
|
||||
Use the Write tool to create files.
|
||||
|
||||
### Step 8: Confirmation
|
||||
|
||||
After installation, provide a summary:
|
||||
- List of successfully installed skills
|
||||
- List of skipped skills (if any) with reasons
|
||||
- Location: `~/.claude/skills/`
|
||||
- Next steps: "The skills are now available. Restart Claude or use them directly."
|
||||
|
||||
## Example Usage
|
||||
|
||||
**User:** "Install skills from https://github.com/example/claude-skills"
|
||||
|
||||
**Assistant:**
|
||||
1. Fetches skills list from the repository
|
||||
2. Presents available skills: "skill-a", "skill-b", "skill-c"
|
||||
3. User selects "skill-a" and "skill-b"
|
||||
4. Performs security scan on each skill
|
||||
5. skill-a: SAFE - proceeds to install
|
||||
6. skill-b: WARNING (makes HTTP request) - asks user for confirmation
|
||||
7. Installs approved skills to ~/.claude/skills/
|
||||
8. Confirms: "Successfully installed: skill-a, skill-b"
|
||||
|
||||
## Security Notes
|
||||
|
||||
- **Never skip security scanning** - Always analyze skills before installation
|
||||
- **Be conservative** - When in doubt, flag as WARNING and let user decide
|
||||
- **Critical issues are blocking** - CRITICAL severity findings cannot be overridden
|
||||
- **Transparency** - Always show users what was found during security scans
|
||||
- **Sandboxing** - Remind users that skills run with Claude's permissions
|
||||
|
||||
## Resources
|
||||
|
||||
### references/security_scan_prompt.md
|
||||
|
||||
Contains the detailed security analysis prompt template with:
|
||||
- Complete list of security categories to check
|
||||
- Output format requirements
|
||||
- Example analyses for safe, suspicious, and dangerous skills
|
||||
- Decision criteria for APPROVE/REJECT recommendations
|
||||
|
||||
Load this file when performing security scans to ensure comprehensive analysis.
|
||||
137
skills/skill-install/references/security_scan_prompt.md
Normal file
137
skills/skill-install/references/security_scan_prompt.md
Normal file
@@ -0,0 +1,137 @@
|
||||
# Security Scan Prompt for Skills
|
||||
|
||||
Use this prompt template to analyze skill content for security vulnerabilities before installation.
|
||||
|
||||
## Prompt Template
|
||||
|
||||
```
|
||||
You are a security expert analyzing a Claude skill for potential security risks.
|
||||
|
||||
Analyze the following skill content for security vulnerabilities:
|
||||
|
||||
**Skill Name:** {skill_name}
|
||||
**Skill Content:**
|
||||
{skill_content}
|
||||
|
||||
## Security Analysis Criteria
|
||||
|
||||
Examine the skill for the following security concerns:
|
||||
|
||||
### 1. Malicious Command Execution
|
||||
- Detect `eval()`, `exec()`, `subprocess` with `shell=True`
|
||||
- Identify arbitrary code execution patterns
|
||||
- Check for command injection vulnerabilities
|
||||
|
||||
### 2. Backdoor Detection
|
||||
- Look for obfuscated code (base64, hex encoding)
|
||||
- Identify suspicious network requests to unknown domains
|
||||
- Detect file hash patterns matching known malware
|
||||
- Check for hidden data exfiltration mechanisms
|
||||
|
||||
### 3. Credential Theft
|
||||
- Detect attempts to access environment variables containing secrets
|
||||
- Identify file operations on sensitive paths (~/.ssh, ~/.aws, ~/.netrc)
|
||||
- Check for credential harvesting patterns
|
||||
- Look for keylogging or clipboard monitoring
|
||||
|
||||
### 4. Unauthorized Network Access
|
||||
- Identify external network requests
|
||||
- Check for connections to suspicious domains (pastebin, ngrok, bit.ly, etc.)
|
||||
- Detect data exfiltration via HTTP/HTTPS
|
||||
- Look for reverse shell patterns
|
||||
|
||||
### 5. File System Abuse
|
||||
- Detect destructive file operations (rm -rf, shutil.rmtree)
|
||||
- Identify unauthorized file writes to system directories
|
||||
- Check for file permission modifications
|
||||
- Look for attempts to modify critical system files
|
||||
|
||||
### 6. Privilege Escalation
|
||||
- Detect sudo or privilege escalation attempts
|
||||
- Identify attempts to modify system configurations
|
||||
- Check for container escape patterns
|
||||
|
||||
### 7. Supply Chain Attacks
|
||||
- Identify suspicious package installations
|
||||
- Detect dynamic imports from untrusted sources
|
||||
- Check for dependency confusion attacks
|
||||
|
||||
## Output Format
|
||||
|
||||
Provide your analysis in the following format:
|
||||
|
||||
**Security Status:** [SAFE / WARNING / DANGEROUS]
|
||||
|
||||
**Risk Level:** [LOW / MEDIUM / HIGH / CRITICAL]
|
||||
|
||||
**Findings:**
|
||||
1. [Category]: [Description]
|
||||
- File: [filename:line_number]
|
||||
- Severity: [LOW/MEDIUM/HIGH/CRITICAL]
|
||||
- Details: [Explanation]
|
||||
- Recommendation: [How to fix or mitigate]
|
||||
|
||||
**Summary:**
|
||||
[Brief summary of the security assessment]
|
||||
|
||||
**Recommendation:**
|
||||
[APPROVE / REJECT / APPROVE_WITH_WARNINGS]
|
||||
|
||||
## Decision Criteria
|
||||
|
||||
- **APPROVE**: No security issues found, safe to install
|
||||
- **APPROVE_WITH_WARNINGS**: Minor concerns but generally safe, user should be aware
|
||||
- **REJECT**: Critical security issues found, do not install
|
||||
|
||||
Be thorough but avoid false positives. Consider the context and legitimate use cases.
|
||||
```
|
||||
|
||||
## Example Analysis
|
||||
|
||||
### Safe Skill Example
|
||||
|
||||
```
|
||||
**Security Status:** SAFE
|
||||
**Risk Level:** LOW
|
||||
**Findings:** None
|
||||
**Summary:** The skill contains only documentation and safe tool usage instructions. No executable code or suspicious patterns detected.
|
||||
**Recommendation:** APPROVE
|
||||
```
|
||||
|
||||
### Suspicious Skill Example
|
||||
|
||||
```
|
||||
**Security Status:** WARNING
|
||||
**Risk Level:** MEDIUM
|
||||
**Findings:**
|
||||
1. [Network Access]: External HTTP request detected
|
||||
- File: scripts/helper.py:42
|
||||
- Severity: MEDIUM
|
||||
- Details: Script makes HTTP request to api.example.com without user consent
|
||||
- Recommendation: Review the API endpoint and ensure it's legitimate
|
||||
|
||||
**Summary:** The skill makes external network requests that should be reviewed.
|
||||
**Recommendation:** APPROVE_WITH_WARNINGS
|
||||
```
|
||||
|
||||
### Dangerous Skill Example
|
||||
|
||||
```
|
||||
**Security Status:** DANGEROUS
|
||||
**Risk Level:** CRITICAL
|
||||
**Findings:**
|
||||
1. [Command Injection]: Arbitrary command execution detected
|
||||
- File: scripts/malicious.py:15
|
||||
- Severity: CRITICAL
|
||||
- Details: Uses subprocess.call() with shell=True and unsanitized input
|
||||
- Recommendation: Do not install this skill
|
||||
|
||||
2. [Data Exfiltration]: Suspicious network request
|
||||
- File: scripts/malicious.py:28
|
||||
- Severity: HIGH
|
||||
- Details: Sends data to pastebin.com without user knowledge
|
||||
- Recommendation: This appears to be a data exfiltration attempt
|
||||
|
||||
**Summary:** This skill contains critical security vulnerabilities including command injection and data exfiltration. It appears to be malicious.
|
||||
**Recommendation:** REJECT
|
||||
```
|
||||
Reference in New Issue
Block a user