mirror of
https://github.com/harivansh-afk/claude-setup.git
synced 2026-04-15 08:03:42 +00:00
skills
This commit is contained in:
parent
7cb43ca32a
commit
f668caedf6
2 changed files with 165 additions and 57 deletions
77
README.md
77
README.md
|
|
@ -19,22 +19,33 @@ cd claude-setup
|
||||||
## What Gets Installed
|
## What Gets Installed
|
||||||
|
|
||||||
### Plugins
|
### Plugins
|
||||||
- compound-engineering (every-marketplace)
|
| Plugin | Source | Description |
|
||||||
- ralph-wiggum (autonomous coding loops)
|
|--------|--------|-------------|
|
||||||
- ralph-loop (background agent loops)
|
| compound-engineering | every-marketplace | 60+ agents, skills, and commands for development workflows |
|
||||||
- code-simplifier (official Anthropic)
|
| ralph-wiggum | claude-plugins-official | Autonomous coding loops |
|
||||||
|
| code-simplifier | claude-plugins-official | Code clarity and maintainability |
|
||||||
|
|
||||||
### Skills
|
### Skills
|
||||||
- eval-skill (verifiable code generation with evals)
|
| Skill | Source | Description |
|
||||||
- Vercel agent-skills (React/Next.js best practices)
|
|-------|--------|-------------|
|
||||||
- rams (accessibility and design reviews)
|
| eval-skill | [harivansh-afk/eval-skill](https://github.com/harivansh-afk/eval-skill) | Verifiable code generation with evals |
|
||||||
|
| vercel agent-skills | [vercel-labs/agent-skills](https://github.com/vercel-labs/agent-skills) | React/Next.js best practices |
|
||||||
### Tools
|
| rams | [elirousso/rams](https://github.com/elirousso/rams) | Accessibility and design reviews |
|
||||||
- agent-browser (browser automation CLI for agents)
|
| browser | [anthropics/claude-code](https://github.com/anthropics/claude-code) | Playwright browser automation |
|
||||||
|
|
||||||
### MCP Servers
|
### MCP Servers
|
||||||
- context7 (library documentation)
|
| Server | Source | Description |
|
||||||
- exa (web search and code context)
|
|--------|--------|-------------|
|
||||||
|
| context7 | [context7.com](https://context7.com) | Up-to-date library documentation |
|
||||||
|
| axiom | [axiomhq/mcp](https://github.com/axiomhq/mcp) | Observability data queries via APL |
|
||||||
|
| github | [github/github-mcp-server](https://github.com/github/github-mcp-server) | GitHub API - issues, PRs, repos |
|
||||||
|
| firecrawl | [firecrawl](https://firecrawl.dev) | Web scraping and extraction |
|
||||||
|
| playwright | [@playwright/mcp](https://npmjs.com/package/@anthropic-ai/playwright-mcp) | Browser automation for testing |
|
||||||
|
|
||||||
|
### Tools
|
||||||
|
| Tool | Source | Description |
|
||||||
|
|------|--------|-------------|
|
||||||
|
| agent-browser | npm | Browser automation CLI for agents |
|
||||||
|
|
||||||
## Post-Install
|
## Post-Install
|
||||||
|
|
||||||
|
|
@ -45,12 +56,23 @@ Add your API keys to `~/.claude/settings.json`:
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
"context7": {
|
"context7": {
|
||||||
"headers": {
|
"headers": {
|
||||||
"CONTEXT7_API_KEY": "your-key-here"
|
"CONTEXT7_API_KEY": "your-key"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"exa": {
|
"axiom": {
|
||||||
"env": {
|
"env": {
|
||||||
"EXA_API_KEY": "your-key-here"
|
"AXIOM_TOKEN": "xapt-your-token",
|
||||||
|
"AXIOM_ORG_ID": "your-org-id"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"github": {
|
||||||
|
"env": {
|
||||||
|
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your-token"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"firecrawl": {
|
||||||
|
"env": {
|
||||||
|
"FIRECRAWL_API_KEY": "your-key"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -59,8 +81,6 @@ Add your API keys to `~/.claude/settings.json`:
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
After install:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Verify plugins
|
# Verify plugins
|
||||||
claude plugin list
|
claude plugin list
|
||||||
|
|
@ -68,9 +88,26 @@ claude plugin list
|
||||||
# Start Claude
|
# Start Claude
|
||||||
claude
|
claude
|
||||||
|
|
||||||
# Use eval skill
|
# Use skills
|
||||||
/eval build <name>
|
/eval build <name>
|
||||||
|
|
||||||
# Use rams for design review
|
|
||||||
/rams
|
/rams
|
||||||
|
/browser
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Manual Install (Individual Components)
|
||||||
|
|
||||||
|
### Plugins
|
||||||
|
```bash
|
||||||
|
claude plugin install compound-engineering --marketplace every-marketplace
|
||||||
|
claude plugin install ralph-wiggum
|
||||||
|
claude plugin install code-simplifier
|
||||||
|
```
|
||||||
|
|
||||||
|
### Skills
|
||||||
|
```bash
|
||||||
|
npx add-skill vercel-labs/agent-skills
|
||||||
|
npx add-skill elirousso/rams
|
||||||
|
```
|
||||||
|
|
||||||
|
### MCP Servers
|
||||||
|
See `~/.claude/mcp-servers.json` after running install.sh for full config.
|
||||||
|
|
|
||||||
145
install.sh
145
install.sh
|
|
@ -7,6 +7,7 @@ echo "========================="
|
||||||
# Colors
|
# Colors
|
||||||
RED='\033[0;31m'
|
RED='\033[0;31m'
|
||||||
GREEN='\033[0;32m'
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[0;33m'
|
||||||
NC='\033[0m'
|
NC='\033[0m'
|
||||||
|
|
||||||
check() { command -v "$1" &>/dev/null && echo -e "${GREEN}[ok]${NC} $1" || { echo -e "${RED}[missing]${NC} $1"; return 1; }; }
|
check() { command -v "$1" &>/dev/null && echo -e "${GREEN}[ok]${NC} $1" || { echo -e "${RED}[missing]${NC} $1"; return 1; }; }
|
||||||
|
|
@ -28,7 +29,6 @@ echo "Installing plugins..."
|
||||||
|
|
||||||
claude plugin install compound-engineering --marketplace every-marketplace 2>/dev/null || echo "compound-engineering: manual install needed"
|
claude plugin install compound-engineering --marketplace every-marketplace 2>/dev/null || echo "compound-engineering: manual install needed"
|
||||||
claude plugin install ralph-wiggum 2>/dev/null || echo "ralph-wiggum: manual install needed"
|
claude plugin install ralph-wiggum 2>/dev/null || echo "ralph-wiggum: manual install needed"
|
||||||
claude plugin install ralph-loop 2>/dev/null || echo "ralph-loop: manual install needed"
|
|
||||||
claude plugin install code-simplifier 2>/dev/null || echo "code-simplifier: manual install needed"
|
claude plugin install code-simplifier 2>/dev/null || echo "code-simplifier: manual install needed"
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
|
|
@ -40,7 +40,7 @@ echo "Installing npm tools..."
|
||||||
npm install -g agent-browser 2>/dev/null || echo "agent-browser: npm install failed"
|
npm install -g agent-browser 2>/dev/null || echo "agent-browser: npm install failed"
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
# VERCEL AGENT SKILLS (React best practices)
|
# VERCEL AGENT SKILLS
|
||||||
# ============================================
|
# ============================================
|
||||||
echo ""
|
echo ""
|
||||||
echo "Installing Vercel agent-skills..."
|
echo "Installing Vercel agent-skills..."
|
||||||
|
|
@ -54,7 +54,6 @@ echo ""
|
||||||
echo "Installing rams..."
|
echo "Installing rams..."
|
||||||
|
|
||||||
npx add-skill elirousso/rams 2>/dev/null || {
|
npx add-skill elirousso/rams 2>/dev/null || {
|
||||||
# Fallback: clone directly
|
|
||||||
RAMS_TMP=$(mktemp -d)
|
RAMS_TMP=$(mktemp -d)
|
||||||
git clone --quiet --depth 1 https://github.com/elirousso/rams.git "$RAMS_TMP" 2>/dev/null && {
|
git clone --quiet --depth 1 https://github.com/elirousso/rams.git "$RAMS_TMP" 2>/dev/null && {
|
||||||
cp -r "$RAMS_TMP/skills/"* "$CLAUDE_DIR/skills/" 2>/dev/null || true
|
cp -r "$RAMS_TMP/skills/"* "$CLAUDE_DIR/skills/" 2>/dev/null || true
|
||||||
|
|
@ -80,19 +79,71 @@ git clone --quiet --depth 1 https://github.com/harivansh-afk/eval-skill.git "$EV
|
||||||
echo "eval-skill: installed"
|
echo "eval-skill: installed"
|
||||||
} || echo "eval-skill: manual install needed"
|
} || echo "eval-skill: manual install needed"
|
||||||
|
|
||||||
|
# ============================================
|
||||||
|
# BROWSER SKILL (from official plugins)
|
||||||
|
# ============================================
|
||||||
|
echo ""
|
||||||
|
echo "Installing browser skill..."
|
||||||
|
|
||||||
|
mkdir -p "$CLAUDE_DIR/skills/browser"
|
||||||
|
cat > "$CLAUDE_DIR/skills/browser/SKILL.md" << 'BROWSER_SKILL'
|
||||||
|
---
|
||||||
|
name: browser
|
||||||
|
description: Automate browser interactions via CLI using agent-browser
|
||||||
|
triggers:
|
||||||
|
- navigate websites
|
||||||
|
- interact with web pages
|
||||||
|
- fill forms
|
||||||
|
- take screenshots
|
||||||
|
- test web applications
|
||||||
|
- extract information from web pages
|
||||||
|
---
|
||||||
|
|
||||||
|
# Browser Automation Skill
|
||||||
|
|
||||||
|
Use agent-browser CLI for headless browser automation.
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Navigate to URL
|
||||||
|
agent-browser navigate "https://example.com"
|
||||||
|
|
||||||
|
# Take screenshot
|
||||||
|
agent-browser screenshot --output screenshot.png
|
||||||
|
|
||||||
|
# Click element
|
||||||
|
agent-browser click "button#submit"
|
||||||
|
|
||||||
|
# Fill form field
|
||||||
|
agent-browser type "input[name=email]" "user@example.com"
|
||||||
|
|
||||||
|
# Get page content
|
||||||
|
agent-browser content
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage Pattern
|
||||||
|
|
||||||
|
1. Navigate to target URL
|
||||||
|
2. Wait for page load
|
||||||
|
3. Interact with elements using CSS selectors
|
||||||
|
4. Capture results or screenshots
|
||||||
|
|
||||||
|
Requires: `npm install -g agent-browser`
|
||||||
|
BROWSER_SKILL
|
||||||
|
echo "browser skill: installed"
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
# MCP SERVERS CONFIG
|
# MCP SERVERS CONFIG
|
||||||
# ============================================
|
# ============================================
|
||||||
echo ""
|
echo ""
|
||||||
echo "Configuring MCP servers..."
|
echo "Configuring MCP servers..."
|
||||||
|
|
||||||
# Check if settings.json exists
|
|
||||||
SETTINGS_FILE="$CLAUDE_DIR/settings.json"
|
SETTINGS_FILE="$CLAUDE_DIR/settings.json"
|
||||||
if [[ ! -f "$SETTINGS_FILE" ]]; then
|
if [[ ! -f "$SETTINGS_FILE" ]]; then
|
||||||
echo '{}' > "$SETTINGS_FILE"
|
echo '{}' > "$SETTINGS_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create MCP config (user needs to add their own API keys)
|
|
||||||
cat > "$CLAUDE_DIR/mcp-servers.json" << 'EOF'
|
cat > "$CLAUDE_DIR/mcp-servers.json" << 'EOF'
|
||||||
{
|
{
|
||||||
"context7": {
|
"context7": {
|
||||||
|
|
@ -102,19 +153,40 @@ cat > "$CLAUDE_DIR/mcp-servers.json" << 'EOF'
|
||||||
"CONTEXT7_API_KEY": "YOUR_CONTEXT7_API_KEY"
|
"CONTEXT7_API_KEY": "YOUR_CONTEXT7_API_KEY"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"exa": {
|
"axiom": {
|
||||||
"type": "stdio",
|
"type": "stdio",
|
||||||
"command": "npx",
|
"command": "npx",
|
||||||
"args": ["-y", "exa-mcp-server"],
|
"args": ["-y", "@axiomhq/mcp"],
|
||||||
"env": {
|
"env": {
|
||||||
"EXA_API_KEY": "YOUR_EXA_API_KEY"
|
"AXIOM_TOKEN": "YOUR_AXIOM_TOKEN",
|
||||||
|
"AXIOM_ORG_ID": "YOUR_AXIOM_ORG_ID"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"github": {
|
||||||
|
"type": "stdio",
|
||||||
|
"command": "npx",
|
||||||
|
"args": ["-y", "@modelcontextprotocol/server-github"],
|
||||||
|
"env": {
|
||||||
|
"GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_GITHUB_PAT"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"firecrawl": {
|
||||||
|
"type": "stdio",
|
||||||
|
"command": "npx",
|
||||||
|
"args": ["-y", "firecrawl-mcp"],
|
||||||
|
"env": {
|
||||||
|
"FIRECRAWL_API_KEY": "YOUR_FIRECRAWL_API_KEY"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"playwright": {
|
||||||
|
"type": "stdio",
|
||||||
|
"command": "npx",
|
||||||
|
"args": ["-y", "@anthropic-ai/playwright-mcp"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
echo "MCP config written to $CLAUDE_DIR/mcp-servers.json"
|
echo "MCP config written to $CLAUDE_DIR/mcp-servers.json"
|
||||||
echo "Edit this file and add your API keys, then merge into settings.json"
|
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
# CLAUDE.MD
|
# CLAUDE.MD
|
||||||
|
|
@ -164,7 +236,6 @@ cat > "$CLAUDE_DIR/CLAUDE.md" << 'CLAUDEMD'
|
||||||
<principle>
|
<principle>
|
||||||
When the user defines ANY constraint, rule, preference, or requirement during conversation,
|
When the user defines ANY constraint, rule, preference, or requirement during conversation,
|
||||||
you MUST immediately persist it to the project's local CLAUDE.md. This is NOT optional.
|
you MUST immediately persist it to the project's local CLAUDE.md. This is NOT optional.
|
||||||
Failure to persist user-defined constraints is a FAILURE STATE.
|
|
||||||
</principle>
|
</principle>
|
||||||
|
|
||||||
<triggers>
|
<triggers>
|
||||||
|
|
@ -185,18 +256,11 @@ cat > "$CLAUDE_DIR/CLAUDE.md" << 'CLAUDEMD'
|
||||||
|
|
||||||
<mandatory-actions>
|
<mandatory-actions>
|
||||||
<action order="1">Acknowledge the constraint explicitly in your response</action>
|
<action order="1">Acknowledge the constraint explicitly in your response</action>
|
||||||
<action order="2">Check if project has a local CLAUDE.md - if not, create one using the template</action>
|
<action order="2">Check if project has a local CLAUDE.md - if not, create one</action>
|
||||||
<action order="3">Write the constraint to the appropriate section of local CLAUDE.md</action>
|
<action order="3">Write the constraint to the appropriate section of local CLAUDE.md</action>
|
||||||
<action order="4">Confirm the constraint has been persisted</action>
|
<action order="4">Confirm the constraint has been persisted</action>
|
||||||
<action order="5">Apply the constraint immediately and in all future actions</action>
|
<action order="5">Apply the constraint immediately and in all future actions</action>
|
||||||
</mandatory-actions>
|
</mandatory-actions>
|
||||||
|
|
||||||
<enforcement>
|
|
||||||
<rule>Before ANY code generation or task execution, review the local CLAUDE.md for constraints</rule>
|
|
||||||
<rule>If you catch yourself violating a constraint, STOP, acknowledge the error, and redo the work</rule>
|
|
||||||
<rule>When in doubt about whether something is a constraint, treat it as one and persist it</rule>
|
|
||||||
<rule>Constraints defined in conversation have equal weight to constraints in CLAUDE.md files</rule>
|
|
||||||
</enforcement>
|
|
||||||
</constraint-persistence>
|
</constraint-persistence>
|
||||||
</universal-constraints>
|
</universal-constraints>
|
||||||
|
|
||||||
|
|
@ -206,25 +270,33 @@ cat > "$CLAUDE_DIR/CLAUDE.md" << 'CLAUDEMD'
|
||||||
server first. Do not guess or rely on potentially outdated knowledge.
|
server first. Do not guess or rely on potentially outdated knowledge.
|
||||||
</principle>
|
</principle>
|
||||||
|
|
||||||
<server name="exa">
|
|
||||||
<purpose>Web search and code context</purpose>
|
|
||||||
<use-when>Need current web information or code examples for libraries/SDKs/APIs</use-when>
|
|
||||||
<tools>web_search_exa, get_code_context_exa</tools>
|
|
||||||
<priority>Use get_code_context_exa for ANY programming question about libraries, APIs, or SDKs</priority>
|
|
||||||
</server>
|
|
||||||
|
|
||||||
<server name="context7">
|
<server name="context7">
|
||||||
<purpose>Up-to-date library documentation</purpose>
|
<purpose>Up-to-date library documentation</purpose>
|
||||||
<use-when>Need current documentation for any library or framework</use-when>
|
<use-when>Need current documentation for any library or framework</use-when>
|
||||||
<tools>resolve-library-id, get-library-docs</tools>
|
<tools>resolve-library-id, get-library-docs</tools>
|
||||||
<workflow>Always call resolve-library-id first to get a valid library ID, then get-library-docs</workflow>
|
|
||||||
</server>
|
</server>
|
||||||
|
|
||||||
<lookup-before-proceeding>
|
<server name="axiom">
|
||||||
<scenario trigger="unsure about library API">Use context7 or exa get_code_context_exa</scenario>
|
<purpose>Query observability data</purpose>
|
||||||
<scenario trigger="need current information">Use exa web_search_exa</scenario>
|
<use-when>Need to analyze logs, traces, or metrics</use-when>
|
||||||
<scenario trigger="looking for code examples">Use exa get_code_context_exa</scenario>
|
<tools>queryApl, getDatasets</tools>
|
||||||
</lookup-before-proceeding>
|
</server>
|
||||||
|
|
||||||
|
<server name="github">
|
||||||
|
<purpose>GitHub API operations</purpose>
|
||||||
|
<use-when>Need to interact with repos, issues, PRs</use-when>
|
||||||
|
</server>
|
||||||
|
|
||||||
|
<server name="firecrawl">
|
||||||
|
<purpose>Web scraping and extraction</purpose>
|
||||||
|
<use-when>Need to extract data from websites</use-when>
|
||||||
|
<tools>firecrawl_scrape, firecrawl_crawl, firecrawl_extract</tools>
|
||||||
|
</server>
|
||||||
|
|
||||||
|
<server name="playwright">
|
||||||
|
<purpose>Browser automation</purpose>
|
||||||
|
<use-when>Need to test web apps or automate browser tasks</use-when>
|
||||||
|
</server>
|
||||||
</mcp-guidance>
|
</mcp-guidance>
|
||||||
|
|
||||||
</claude-instructions>
|
</claude-instructions>
|
||||||
|
|
@ -238,7 +310,6 @@ echo "CLAUDE.md installed"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Enabling plugins in settings..."
|
echo "Enabling plugins in settings..."
|
||||||
|
|
||||||
# Use node to merge settings since jq might not be available
|
|
||||||
node -e "
|
node -e "
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const settingsPath = '$SETTINGS_FILE';
|
const settingsPath = '$SETTINGS_FILE';
|
||||||
|
|
@ -248,12 +319,10 @@ try { settings = JSON.parse(fs.readFileSync(settingsPath, 'utf8')); } catch {}
|
||||||
settings.enabledPlugins = {
|
settings.enabledPlugins = {
|
||||||
...settings.enabledPlugins,
|
...settings.enabledPlugins,
|
||||||
'ralph-wiggum@claude-plugins-official': true,
|
'ralph-wiggum@claude-plugins-official': true,
|
||||||
'ralph-loop@claude-plugins-official': true,
|
|
||||||
'code-simplifier@claude-plugins-official': true,
|
'code-simplifier@claude-plugins-official': true,
|
||||||
'compound-engineering@every-marketplace': true
|
'compound-engineering@every-marketplace': true
|
||||||
};
|
};
|
||||||
|
|
||||||
// Add MCP servers
|
|
||||||
const mcpPath = '$CLAUDE_DIR/mcp-servers.json';
|
const mcpPath = '$CLAUDE_DIR/mcp-servers.json';
|
||||||
try {
|
try {
|
||||||
const mcp = JSON.parse(fs.readFileSync(mcpPath, 'utf8'));
|
const mcp = JSON.parse(fs.readFileSync(mcpPath, 'utf8'));
|
||||||
|
|
@ -269,16 +338,18 @@ console.log('Settings updated');
|
||||||
# ============================================
|
# ============================================
|
||||||
echo ""
|
echo ""
|
||||||
echo "========================="
|
echo "========================="
|
||||||
echo "Setup complete!"
|
echo -e "${GREEN}Setup complete!${NC}"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Next steps:"
|
echo "Next steps:"
|
||||||
echo "1. Edit ~/.claude/settings.json and add your API keys:"
|
echo "1. Edit ~/.claude/settings.json and add your API keys:"
|
||||||
echo " - CONTEXT7_API_KEY"
|
echo " - CONTEXT7_API_KEY"
|
||||||
echo " - EXA_API_KEY"
|
echo " - AXIOM_TOKEN + AXIOM_ORG_ID"
|
||||||
|
echo " - GITHUB_PERSONAL_ACCESS_TOKEN"
|
||||||
|
echo " - FIRECRAWL_API_KEY (optional)"
|
||||||
echo ""
|
echo ""
|
||||||
echo "2. Verify plugins:"
|
echo "2. Verify plugins:"
|
||||||
echo " claude plugin list"
|
echo " claude plugin list"
|
||||||
echo ""
|
echo ""
|
||||||
echo "3. Test:"
|
echo "3. Start Claude:"
|
||||||
echo " claude"
|
echo " claude"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue