Files
yusyus c44b88e801 docs: update stale version numbers, MCP counts, and test counts across docs/
Version headers/footers updated to 3.1.0-dev:
- docs/features/BOOTSTRAP_SKILL_TECHNICAL.md (was 2.8.0-dev)
- docs/reference/API_REFERENCE.md (was 2.7.0)
- docs/reference/CODE_QUALITY.md (was 2.7.0)
- docs/guides/TESTING_GUIDE.md (was 2.7.0)
- docs/guides/MIGRATION_GUIDE.md (was 2.7.0, historical tables untouched)

MCP tool count 18 → 26:
- docs/guides/MCP_SETUP.md
- docs/guides/TESTING_GUIDE.md
- docs/reference/CODE_QUALITY.md
- docs/reference/CLAUDE_INTEGRATION.md
- docs/integrations/CLINE.md
- docs/strategy/INTEGRATION_STRATEGY.md

Test count 700+/1200+ → 1,880+:
- docs/guides/MCP_SETUP.md
- docs/guides/TESTING_GUIDE.md
- docs/reference/CODE_QUALITY.md
- docs/reference/CLAUDE_INTEGRATION.md
- docs/features/HOW_TO_GUIDES.md
- docs/blog/UNIVERSAL_RAG_PREPROCESSOR.md

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-18 22:36:08 +03:00

1053 lines
24 KiB
Markdown

# Using Skill Seekers with Cline (VS Code Extension)
**Last Updated:** February 7, 2026
**Status:** Production Ready
**Difficulty:** Medium ⭐⭐
---
## 🎯 The Problem
Cline (formerly Claude Dev) is a powerful autonomous coding agent for VS Code, but:
- **Generic Knowledge** - AI doesn't know your project-specific frameworks or internal patterns
- **Manual Context** - Copy-pasting documentation into chat breaks autonomous workflow
- **No Framework Memory** - Cline forgets framework details between sessions
- **Custom Instructions Limit** - Built-in custom instructions are limited in scope
**Example:**
> "When using Cline to build a Django app, the agent might use outdated patterns or miss framework-specific conventions. You want Cline to automatically reference comprehensive framework documentation without manual prompting."
---
## ✨ The Solution
Use Skill Seekers to create **custom rules and MCP tools** for Cline:
1. **Generate structured docs** from any framework or codebase
2. **Package as .clinerules** - Cline's markdown rules format
3. **MCP Integration** - Expose documentation via Model Context Protocol
4. **Memory Bank** - Persistent framework knowledge across sessions
**Result:**
Cline becomes an expert in your frameworks with automatic context and autonomous access to documentation via MCP tools.
---
## 🚀 Quick Start (10 Minutes)
### Prerequisites
- VS Code installed (https://code.visualstudio.com/)
- Cline extension installed (https://marketplace.visualstudio.com/items?itemName=saoudrizwan.claude-dev)
- Python 3.10+ (for Skill Seekers)
- Claude API key (recommended) or other LLM
### Installation
```bash
# Install Skill Seekers with MCP support
pip install skill-seekers[mcp]
# Verify installation
skill-seekers --version
```
### Generate .clinerules
```bash
# Example: Django framework
skill-seekers scrape --config configs/django.json
# Package for Cline (markdown format)
skill-seekers package output/django --target markdown
# Extract SKILL.md (this becomes your .clinerules content)
# output/django-markdown/SKILL.md
```
### Setup in Cline
**Option 1: Project-Specific Rules** (recommended)
```bash
# Copy to project root as .clinerules
cp output/django-markdown/SKILL.md /path/to/your/project/.clinerules
```
**Option 2: Custom Instructions** (per-project settings)
1. Open Cline settings in VS Code (Cmd+, → search "Cline")
2. Find "Custom Instructions"
3. Add framework knowledge:
```
You are an expert in Django. Follow these patterns:
[Paste contents of SKILL.md here]
```
**Option 3: MCP Server** (for dynamic access)
```bash
# Configure Cline's MCP settings
# In Cline panel → Settings → MCP Servers → Add Server
# Add Skill Seekers MCP server:
{
"skill-seekers": {
"command": "python",
"args": ["-m", "skill_seekers.mcp.server_fastmcp", "--transport", "stdio"],
"env": {}
}
}
```
### Test in Cline
1. Open your project in VS Code
2. Open Cline panel (click Cline icon in sidebar)
3. Start a new task:
```
Create a Django model for users with email authentication
```
4. Verify Cline references your documentation patterns
---
## 📖 Detailed Setup Guide
### Step 1: Choose Your Documentation Source
**Option A: Use Preset Configs** (24+ frameworks)
```bash
# List available presets
ls configs/
# Popular presets:
# - react.json, vue.json, angular.json (Frontend)
# - django.json, fastapi.json, flask.json (Backend)
# - kubernetes.json, docker.json (Infrastructure)
```
**Option B: Custom Documentation**
Create `myframework-config.json`:
```json
{
"name": "myframework",
"description": "Custom framework documentation for Cline",
"base_url": "https://docs.myframework.com/",
"selectors": {
"main_content": "article",
"title": "h1",
"code_blocks": "pre code"
},
"categories": {
"getting_started": ["intro", "quickstart"],
"core_concepts": ["concepts", "architecture"],
"api": ["api", "reference"],
"best_practices": ["best-practices", "patterns"]
}
}
```
**Option C: GitHub Repository**
```bash
# Analyze codebase patterns
skill-seekers github --repo facebook/react
# Or local codebase
skill-seekers analyze --directory /path/to/repo --comprehensive
```
### Step 2: Optimize for Cline
**File-Based Rules**
Cline rules are markdown files with NO special syntax required:
```markdown
<!-- .clinerules -->
# Django Expert
You are an expert in Django. Follow these patterns:
## Models
Always include these fields in models:
\```python
from django.db import models
class MyModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ['-created_at']
\```
## Views
Use class-based views for CRUD operations:
\```python
from django.views.generic import ListView, DetailView
class UserListView(ListView):
model = User
template_name = 'users/list.html'
context_object_name = 'users'
\```
```
**Hierarchical Rules**
Create multiple rules files for organization:
```
my-django-project/
├── .clinerules # Core framework patterns
├── .clinerules.models # Model-specific rules
├── .clinerules.views # View-specific rules
├── .clinerules.testing # Testing patterns
└── .clinerules.project # Project-specific conventions
```
Cline automatically loads all `.clinerules*` files.
**Memory Bank Integration**
Combine rules with Cline's Memory Bank:
```bash
# Create memory bank structure
mkdir -p .cline/memory-bank
# Initialize memory bank
echo "# Project Memory Bank
## Tech Stack
- Django 5.x
- PostgreSQL 16
- Redis for caching
## Architecture
- Modular apps structure
- API-first design
- Async views for I/O-bound operations
## Conventions
- All models include timestamps
- Use class-based views
- pytest for testing
" > .cline/memory-bank/README.md
# Ask Cline to initialize
# In Cline chat: "Initialize a memory bank for this Django project"
```
### Step 3: Configure MCP Integration
**MCP Server Setup** (for dynamic documentation access)
1. **Install Skill Seekers MCP server:**
```bash
pip install skill-seekers[mcp]
```
2. **Configure in Cline settings:**
Open Cline panel → Settings → MCP Servers → Configure
Add this configuration:
```json
{
"mcpServers": {
"skill-seekers": {
"command": "python",
"args": [
"-m",
"skill_seekers.mcp.server_fastmcp",
"--transport",
"stdio"
],
"env": {}
}
}
}
```
3. **Restart VS Code**
4. **Verify MCP tools available:**
In Cline panel, check "Available Tools" - you should see:
- `list_configs` - List preset configurations
- `scrape_docs` - Scrape documentation dynamically
- `package_skill` - Package skills for Cline
- ... (26 total MCP tools)
**Using MCP Tools**
Now Cline can access documentation on-demand:
```
In Cline chat:
"Use the skill-seekers MCP tool to scrape React documentation
and generate .clinerules for this project"
Cline will:
1. Call list_configs to find react.json
2. Call scrape_docs with config
3. Call package_skill to create .clinerules
4. Load rules automatically
```
### Step 4: Test and Refine
**Test Cline's Knowledge**
Start autonomous tasks:
```
"Create a complete Django REST API for blog posts with:
- Post model with author foreign key
- Serializers with nested author data
- ViewSets with filtering and pagination
- URL routing
- Tests with pytest"
```
Verify Cline follows your documented patterns.
**Refine Rules**
Add project-specific patterns:
```markdown
<!-- .clinerules.project -->
# Project-Specific Conventions
## Database Queries
ALWAYS use select_related/prefetch_related for foreign keys:
\```python
# BAD
posts = Post.objects.all() # N+1 queries
# GOOD
posts = Post.objects.select_related('author').all()
\```
## API Responses
NEVER return sensitive fields:
\```python
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'email']
# Exclude: password, is_staff, etc.
\```
```
**Monitor Cline's Behavior**
Watch for:
- ✅ Cline references rules in explanations
- ✅ Generated code follows patterns
- ✅ Autonomous decisions align with documentation
- ❌ Generic patterns not from your rules (needs refinement)
---
## 🎨 Advanced Usage
### Multi-Framework Projects
**Full-Stack Django + React**
```bash
# Generate backend rules
skill-seekers scrape --config configs/django.json
cp output/django-markdown/SKILL.md .clinerules.backend
# Generate frontend rules
skill-seekers scrape --config configs/react.json
cp output/react-markdown/SKILL.md .clinerules.frontend
# Add project conventions
cat > .clinerules.project << 'EOF'
# Project Conventions
## Backend
- Django REST framework for API
- JWT authentication
- Async views for heavy operations
## Frontend
- React 18 with TypeScript
- Tanstack Query for API calls
- Zustand for state management
## Communication
- Backend exposes /api/v1/* endpoints
- Frontend proxies to localhost:8000 in dev
EOF
# Now Cline knows both Django AND React patterns
```
**Testing with Multiple Frameworks**
```bash
# Backend testing rules
cat > .clinerules.testing-backend << 'EOF'
# Django Testing Patterns
Use pytest with pytest-django:
\```python
import pytest
from django.test import Client
@pytest.mark.django_db
def test_create_post(client: Client):
response = client.post('/api/v1/posts/', {
'title': 'Test Post',
'content': 'Test content'
})
assert response.status_code == 201
\```
EOF
# Frontend testing rules
cat > .clinerules.testing-frontend << 'EOF'
# React Testing Patterns
Use React Testing Library:
\```typescript
import { render, screen } from '@testing-library/react';
import { Post } from './Post';
test('renders post title', () => {
render(<Post title="Test" />);
expect(screen.getByText('Test')).toBeInTheDocument();
});
\```
EOF
```
### Dynamic Context with MCP Tools
**Custom MCP Tool for Framework Search**
Create `custom_mcp_tool.py`:
```python
from fastmcp import FastMCP
mcp = FastMCP("Custom Framework Search")
@mcp.tool()
def search_framework_docs(framework: str, query: str) -> str:
"""
Search framework documentation dynamically.
Args:
framework: Framework name (django, react, etc.)
query: Search query
Returns:
Relevant documentation snippets
"""
# Use Skill Seekers to search
from skill_seekers.cli.adaptors import get_adaptor
adaptor = get_adaptor('markdown')
results = adaptor.search(framework, query)
return results
```
Register in Cline's MCP config:
```json
{
"mcpServers": {
"skill-seekers": {
"command": "python",
"args": ["-m", "skill_seekers.mcp.server_fastmcp", "--transport", "stdio"]
},
"custom-search": {
"command": "python",
"args": ["custom_mcp_tool.py"]
}
}
}
```
Now Cline can search docs on-demand:
```
In Cline: "Use custom-search MCP tool to find Django async views best practices"
```
### Cline + RAG Pipeline
**Combine Rules with Vector Search**
```python
# setup_cline_rag.py
from skill_seekers.cli.doc_scraper import main as scrape
from skill_seekers.cli.package_skill import main as package
# Scrape documentation
scrape(["--config", "configs/django.json"])
# Create Cline rules
package(["output/django", "--target", "markdown"])
# Also create RAG pipeline
package(["output/django", "--target", "langchain", "--chunk-for-rag"])
# Now you have:
# 1. .clinerules for Cline's context
# 2. LangChain documents for deep vector search
```
**MCP Tool for RAG Query**
```python
# mcp_rag_tool.py
from fastmcp import FastMCP
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings
mcp = FastMCP("RAG Search")
# Load vector store
embeddings = OpenAIEmbeddings()
vectorstore = Chroma(persist_directory="./chroma_db", embedding_function=embeddings)
@mcp.tool()
def rag_search(query: str, k: int = 5) -> str:
"""
Search documentation using RAG.
Args:
query: Search query
k: Number of results
Returns:
Top-k relevant documentation snippets
"""
results = vectorstore.similarity_search(query, k=k)
return "\n\n".join([doc.page_content for doc in results])
```
---
## 💡 Best Practices
### 1. Keep Rules Focused
**Bad: Everything in One File**
```markdown
<!-- .clinerules (20,000 chars!) -->
# Django Complete Guide
[... massive unstructured documentation ...]
```
**Good: Modular Rules**
```markdown
<!-- .clinerules (core concepts, 5,000 chars) -->
# Django Core Patterns
[... focused on common patterns ...]
<!-- .clinerules.models (database, 3,000 chars) -->
# Django Models Best Practices
[... focused on database patterns ...]
<!-- .clinerules.api (REST API, 4,000 chars) -->
# Django REST Framework
[... focused on API patterns ...]
```
### 2. Use Hierarchical Loading
Cline loads all `.clinerules*` files. Use naming for precedence:
```
.clinerules # Core framework (loaded first)
.clinerules.01-models # Database patterns
.clinerules.02-views # View patterns
.clinerules.03-testing # Testing patterns
.clinerules.99-project # Project overrides (loaded last)
```
### 3. Include Code Examples
Don't just describe patterns - show them:
```markdown
## Creating Django Models
\```python
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
email = models.EmailField(unique=True)
bio = models.TextField(blank=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ['-created_at']
def __str__(self):
return self.username
\```
Use this exact pattern for all models.
```
### 4. Leverage MCP for Dynamic Context
**Static Rules** (in .clinerules):
- Core patterns that rarely change
- Framework conventions
- Code style preferences
**Dynamic MCP Tools**:
- Search latest documentation
- Query GitHub for code examples
- Fetch API references on-demand
```
In Cline:
"Use skill-seekers MCP to search Django 5.0 async views documentation"
Cline calls MCP tool → gets latest docs → applies to task
```
### 5. Update Rules Regularly
```bash
# Quarterly framework updates
skill-seekers scrape --config configs/django.json
cp output/django-markdown/SKILL.md .clinerules
# Check what changed
diff .clinerules.old .clinerules
# Test with Cline
# Ask: "What's new in Django 5.0?"
```
---
## 🔥 Real-World Examples
### Example 1: Django REST API with Cline
**Project Structure:**
```
my-django-api/
├── .clinerules # Core Django patterns
├── .clinerules.api # DRF patterns
├── .clinerules.testing # pytest patterns
├── .clinerules.project # Project conventions
├── app/
│ ├── models.py
│ ├── serializers.py
│ ├── views.py
│ └── urls.py
└── tests/
```
**.clinerules (Core Django)**
```markdown
# Django Expert
You are an expert in Django 5.0. Follow these patterns:
## Models
Always include timestamps and __str__:
\```python
from django.db import models
class BaseModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class Post(BaseModel):
title = models.CharField(max_length=200)
content = models.TextField()
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
def __str__(self):
return self.title
\```
## Queries
Use select_related/prefetch_related:
\```python
# BAD
posts = Post.objects.all()
# GOOD
posts = Post.objects.select_related('author').all()
\```
```
**.clinerules.api (Django REST Framework)**
```markdown
# Django REST Framework Patterns
## Serializers
Use nested serializers for relationships:
\```python
from rest_framework import serializers
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'email']
class PostSerializer(serializers.ModelSerializer):
author = AuthorSerializer(read_only=True)
class Meta:
model = Post
fields = ['id', 'title', 'content', 'author', 'created_at']
\```
## ViewSets
Use ViewSets with filtering:
\```python
from rest_framework import viewsets, filters
class PostViewSet(viewsets.ModelViewSet):
queryset = Post.objects.select_related('author').all()
serializer_class = PostSerializer
filter_backends = [filters.SearchFilter]
search_fields = ['title', 'content']
\```
```
**Using Cline:**
```
Start Cline task:
"Create a complete blog API with posts and comments:
- Post model with author, title, content, created_at
- Comment model with author, post foreign key, content
- Serializers with nested data
- ViewSets with filtering
- URL routing
- Full test suite with pytest"
Cline will:
1. ✅ Use BaseModel with timestamps (from .clinerules)
2. ✅ Add __str__ methods (from .clinerules)
3. ✅ Use select_related in viewsets (from .clinerules)
4. ✅ Create nested serializers (from .clinerules.api)
5. ✅ Add filtering (from .clinerules.api)
6. ✅ Write pytest tests (from .clinerules.testing)
Result: Production-ready API following all your patterns!
```
### Example 2: React + TypeScript with Cline
**Project Structure:**
```
my-react-app/
├── .clinerules # Core React patterns
├── .clinerules.typescript # TypeScript patterns
├── .clinerules.testing # Testing Library patterns
├── src/
│ ├── components/
│ ├── hooks/
│ └── utils/
└── tests/
```
**.clinerules (Core React)**
```markdown
# React 18 + TypeScript Expert
## Components
Use functional components with TypeScript:
\```typescript
import { FC } from 'react';
interface PostProps {
title: string;
content: string;
author: {
name: string;
email: string;
};
}
export const Post: FC<PostProps> = ({ title, content, author }) => {
return (
<article>
<h2>{title}</h2>
<p>{content}</p>
<footer>By {author.name}</footer>
</article>
);
};
\```
## Hooks
Use custom hooks for logic:
\```typescript
import { useState, useEffect } from 'react';
interface UseFetchResult<T> {
data: T | null;
loading: boolean;
error: Error | null;
}
export function useFetch<T>(url: string): UseFetchResult<T> {
const [data, setData] = useState<T | null>(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState<Error | null>(null);
useEffect(() => {
fetch(url)
.then(res => res.json())
.then(setData)
.catch(setError)
.finally(() => setLoading(false));
}, [url]);
return { data, loading, error };
}
\```
```
---
## 🐛 Troubleshooting
### Issue: .clinerules Not Loading
**Symptoms:**
- Cline doesn't reference documentation
- Rules file exists but ignored
**Solutions:**
1. **Check file location**
```bash
# Must be at project root
ls -la .clinerules
# Not in subdirectory
# NOT: src/.clinerules
```
2. **Verify file format**
```bash
# Must be plain markdown
file .clinerules
# Should show: ASCII text
# Not binary or encoded
```
3. **Reload VS Code**
```
Cmd+Shift+P → "Developer: Reload Window"
```
4. **Check Cline logs**
```
In Cline panel → Settings → Show Logs
# Look for "Loaded rules from .clinerules"
```
### Issue: MCP Server Not Connecting
**Error:**
> "Failed to connect to MCP server: skill-seekers"
**Solutions:**
1. **Verify installation**
```bash
pip show skill-seekers
# Check [mcp] extra is installed
```
2. **Test MCP server directly**
```bash
python -m skill_seekers.mcp.server_fastmcp --transport stdio
# Should start without errors
```
3. **Check Python path**
```json
// MCP config - use absolute path
{
"mcpServers": {
"skill-seekers": {
"command": "/usr/local/bin/python3", // Absolute path
"args": ["-m", "skill_seekers.mcp.server_fastmcp", "--transport", "stdio"]
}
}
}
```
4. **Check environment variables**
```json
{
"mcpServers": {
"skill-seekers": {
"command": "python",
"args": ["-m", "skill_seekers.mcp.server_fastmcp", "--transport", "stdio"],
"env": {
"ANTHROPIC_API_KEY": "${env:ANTHROPIC_API_KEY}"
}
}
}
}
```
### Issue: Cline Not Using Rules
**Symptoms:**
- Rules loaded but Cline ignores them
- Generic code patterns
**Solutions:**
1. **Add explicit instructions**
```markdown
# Django Expert
You MUST follow these patterns in ALL Django code:
- Use timestamps in all models
- Use select_related for foreign keys
- Write tests for all views
Never deviate from these patterns.
```
2. **Use memory bank**
```
In Cline chat:
"Remember to ALWAYS follow the patterns in .clinerules"
```
3. **Reference rules explicitly**
```
In Cline task:
"Create a Django model following the patterns in .clinerules"
```
4. **Check custom instructions**
```
Cline Settings → Custom Instructions
# Should NOT conflict with .clinerules
```
---
## 📊 Before vs After Comparison
| Aspect | Before Skill Seekers | After Skill Seekers |
|--------|---------------------|---------------------|
| **Context Source** | Copy-paste into chat | Auto-loaded .clinerules |
| **AI Knowledge** | Generic patterns | Framework-specific patterns |
| **Setup Time** | Manual curation (hours) | Automated scraping (10 min) |
| **Consistency** | Varies per task | Persistent across tasks |
| **Updates** | Manual editing | Re-run scraper |
| **MCP Integration** | Manual tool creation | Pre-built MCP tools |
| **Multi-Framework** | Context confusion | Modular rules per framework |
| **Autonomous Workflow** | Frequent interruptions | Autonomous with correct patterns |
---
## 🤝 Community & Support
- **Questions:** [GitHub Discussions](https://github.com/yusufkaraaslan/Skill_Seekers/discussions)
- **Issues:** [GitHub Issues](https://github.com/yusufkaraaslan/Skill_Seekers/issues)
- **Website:** [skillseekersweb.com](https://skillseekersweb.com/)
- **Cline Docs:** [docs.cline.bot](https://docs.cline.bot/)
- **Cline GitHub:** [github.com/cline/cline](https://github.com/cline/cline)
---
## 📚 Related Guides
- [Cursor Integration](CURSOR.md) - Similar IDE, different approach
- [Windsurf Integration](WINDSURF.md) - Alternative AI IDE
- [Continue.dev Integration](CONTINUE_DEV.md) - IDE-agnostic assistant
- [LangChain Integration](LANGCHAIN.md) - Build RAG pipelines
- [MCP Setup Guide](../MCP_SETUP.md) - Detailed MCP configuration
---
## 📖 Next Steps
1. **Try another framework:** `skill-seekers scrape --config configs/fastapi.json`
2. **Set up MCP server:** Dynamic documentation access
3. **Create memory bank:** Persistent project knowledge
4. **Build RAG pipeline:** Deep documentation search with `--target langchain`
5. **Contribute examples:** Share your .clinerules patterns
---
**Sources:**
- [Cline VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=saoudrizwan.claude-dev)
- [Cline GitHub Repository](https://github.com/cline/cline)
- [Cline Documentation](https://docs.cline.bot/getting-started/installing-cline)
- [Cline Rules Documentation](https://deepwiki.com/cline/cline/7.1-cline-rules)
- [Cline Prompt Engineering Guide](https://medium.com/@evanmusick.dev/cline-prompt-engineering-crash-course-custom-instructions-that-actually-work-520ef1162fc2)
- [VS Code MCP Integration](https://code.visualstudio.com/docs/copilot/customization/mcp-servers)
- [MCP Developer Guide](https://code.visualstudio.com/api/extension-guides/ai/mcp)
- [Cline MCP Setup Guide](https://4sysops.com/archives/install-mcp-server-with-vs-code-extension-cline-for-ai-driven-aws-automation/)