Skip to content
Back to skills

2325 Website Handoff V3 Ba2b2666

BSecurity

**For:** Kimi instance working on skillseekersweb **Repository:** `/mnt/1ece809a-2821-4f10-aecb-fcdf34760c0b/Git/skillseekersweb` **Deadline:** Week 1 of release (Feb 9-15, 2026) ---

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
devopstypescriptpythongobashreactvuedjangodockerawsazure

Works with

  • cursor
  • cli
  • api
  • mcp

Security analysis

B88/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 2325-website_handoff_v3_ba2b2666 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 2325 Website Handoff V3 Ba2b2666?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 2325 Website Handoff V3 Ba2b2666
[![Security: B β€” Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-2325-website-handoff-v3-ba2b2666/badge)](https://www.skillsdirectory.com/skills/tools-only-2325-website-handoff-v3-ba2b2666)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# 🌐 Website Handoff: v3.0.0 Updates

**For:** Kimi instance working on skillseekersweb  
**Repository:** `/mnt/1ece809a-2821-4f10-aecb-fcdf34760c0b/Git/skillseekersweb`  
**Deadline:** Week 1 of release (Feb 9-15, 2026)

---

## 🎯 Mission

Update the Skill Seekers website for v3.0.0 "Universal Intelligence Platform" release.

**Key Deliverables:**
1. βœ… Blog section (new)
2. βœ… 4 blog posts
3. βœ… Homepage v3.0.0 updates
4. βœ… New integration guides
5. βœ… v3.0.0 changelog
6. βœ… RSS feed
7. βœ… Deploy to Vercel

---

## πŸ“ Repository Structure

```
/mnt/1ece809a-2821-4f10-aecb-fcdf34760c0b/Git/skillseekersweb/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ content/
β”‚   β”‚   β”œβ”€β”€ docs/              # Existing docs
β”‚   β”‚   └── blog/              # NEW - Create this
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ index.astro        # Homepage - UPDATE
β”‚   β”‚   β”œβ”€β”€ blog/              # NEW - Create this
β”‚   β”‚   β”‚   β”œβ”€β”€ index.astro    # Blog listing
β”‚   β”‚   β”‚   └── [...slug].astro # Blog post page
β”‚   β”‚   └── rss.xml.ts         # NEW - RSS feed
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   └── astro/
β”‚   β”‚       └── blog/          # NEW - Blog components
β”‚   └── layouts/               # Existing layouts
β”œβ”€β”€ public/                    # Static assets
└── astro.config.mjs           # Astro config
```

---

## πŸ“ Task 1: Create Blog Section

### Step 1.1: Create Content Collection

**File:** `src/content/blog/_schema.ts`

```typescript
import { defineCollection, z } from 'astro:content';

const blogCollection = defineCollection({
  type: 'content',
  schema: z.object({
    title: z.string(),
    description: z.string(),
    pubDate: z.coerce.date(),
    author: z.string().default('Skill Seekers Team'),
    authorTwitter: z.string().optional(),
    tags: z.array(z.string()).default([]),
    image: z.string().optional(),
    draft: z.boolean().default(false),
    featured: z.boolean().default(false),
  }),
});

export const collections = {
  'blog': blogCollection,
};
```

**File:** `src/content/config.ts` (Update existing)

```typescript
import { defineCollection, z } from 'astro:content';

// Existing docs collection
const docsCollection = defineCollection({
  type: 'content',
  schema: z.object({
    title: z.string(),
    description: z.string(),
    section: z.string(),
    order: z.number().optional(),
  }),
});

// NEW: Blog collection
const blogCollection = defineCollection({
  type: 'content',
  schema: z.object({
    title: z.string(),
    description: z.string(),
    pubDate: z.coerce.date(),
    author: z.string().default('Skill Seekers Team'),
    authorTwitter: z.string().optional(),
    tags: z.array(z.string()).default([]),
    image: z.string().optional(),
    draft: z.boolean().default(false),
    featured: z.boolean().default(false),
  }),
});

export const collections = {
  'docs': docsCollection,
  'blog': blogCollection,
};
```

### Step 1.2: Create Blog Posts

**Post 1: v3.0.0 Release Announcement**

**File:** `src/content/blog/2026-02-10-v3-0-0-release.md`

```markdown
---
title: "Skill Seekers v3.0.0: The Universal Intelligence Platform"
description: "Transform any documentation into structured knowledge for any AI system. 16 output formats. 1,852 tests. One tool for LangChain, LlamaIndex, Cursor, Claude, and more."
pubDate: 2026-02-10
author: "Skill Seekers Team"
authorTwitter: "@skillseekers"
tags: ["v3.0.0", "release", "langchain", "llamaindex", "cursor", "claude"]
image: "/images/blog/v3-release-banner.png"
featured: true
---

# Skill Seekers v3.0.0: The Universal Intelligence Platform

## TL;DR

- πŸš€ **16 output formats** (was 4 in v2.x)
- πŸ› οΈ **26 MCP tools** (was 9)
- βœ… **1,852 tests** passing (was 700+)
- ☁️ **Cloud storage** support (S3, GCS, Azure)
- πŸ”„ **CI/CD ready** (GitHub Action + Docker)

```bash
pip install skill-seekers
skill-seekers scrape --config react.json
```

## The Problem We're Solving

Every AI project needs documentation:

- **RAG pipelines**: "Scrape these docs, chunk them, embed them..."
- **AI coding tools**: "I wish Cursor knew this framework..."
- **Claude skills**: "Convert this documentation into a skill"

Everyone rebuilds the same scraping infrastructure. **Stop rebuilding. Start using.**

## The Solution: Universal Preprocessor

Skill Seekers v3.0.0 transforms any documentation into structured knowledge for **any AI system**:

### For RAG Pipelines
```bash
# LangChain
skill-seekers scrape --format langchain --config react.json

# LlamaIndex  
skill-seekers scrape --format llama-index --config vue.json

# Pinecone-ready
skill-seekers scrape --target markdown --config django.json
```

### For AI Coding Assistants
```bash
# Cursor
skill-seekers scrape --target claude --config react.json
cp output/react-claude/.cursorrules ./

# Windsurf, Cline, Continue.dev - same process
```

### For Claude AI
```bash
skill-seekers install --config react.json
# Auto-fetches, scrapes, enhances, packages, uploads
```

## What's New in v3.0.0

### 16 Platform Adaptors

| Category | Platforms | Command |
|----------|-----------|---------|
| **RAG/Vectors** | LangChain, LlamaIndex, Chroma, FAISS, Haystack, Qdrant, Weaviate | `--format <name>` |
| **AI Platforms** | Claude, Gemini, OpenAI | `--target <name>` |
| **AI Coding** | Cursor, Windsurf, Cline, Continue.dev | `--target claude` |
| **Generic** | Markdown | `--target markdown` |

### 26 MCP Tools

Your AI agent can now prepare its own knowledge:

- **Config tools** (3): generate_config, list_configs, validate_config
- **Scraping tools** (8): estimate_pages, scrape_docs, scrape_github, scrape_pdf, scrape_codebase, detect_patterns, extract_test_examples, build_how_to_guides
- **Packaging tools** (4): package_skill, upload_skill, enhance_skill, install_skill
- **Source tools** (5): fetch_config, submit_config, add/remove_config_source, list_config_sources
- **Splitting tools** (2): split_config, generate_router
- **Vector DB tools** (4): export_to_weaviate, export_to_chroma, export_to_faiss, export_to_qdrant

### Cloud Storage

Upload skills directly to cloud storage:

```bash
# AWS S3
skill-seekers cloud upload output/react/ --provider s3 --bucket my-bucket

# Google Cloud Storage
skill-seekers cloud upload output/react/ --provider gcs --bucket my-bucket

# Azure Blob Storage
skill-seekers cloud upload output/react/ --provider azure --container my-container
```

### CI/CD Ready

**GitHub Action:**
```yaml
- uses: skill-seekers/action@v1
  with:
    config: configs/react.json
    format: langchain
```

**Docker:**
```bash
docker run -v $(pwd):/data skill-seekers:latest scrape --config /data/config.json
```

### Production Quality

- βœ… **1,852 tests** across 100 test files
- βœ… **58,512 lines** of Python code
- βœ… **80+ documentation** files
- βœ… **12 example projects** for every integration

## Quick Start

```bash
# Install
pip install skill-seekers

# Create a config
skill-seekers config --wizard

# Or use a preset
skill-seekers scrape --config configs/react.json

# Package for your platform
skill-seekers package output/react/ --target langchain
```

## Migration from v2.x

v3.0.0 is **fully backward compatible**. All v2.x configs and commands work unchanged. New features are additive.

## Links

- πŸ“– [Full Documentation](https://skillseekersweb.com/docs)
- πŸ’» [GitHub Repository](https://github.com/yusufkaraaslan/Skill_Seekers)
- 🐦 [Follow us on Twitter](https://twitter.com/skillseekers)
- πŸ’¬ [Join Discussions](https://github.com/yusufkaraaslan/Skill_Seekers/discussions)

---

**Ready to transform your documentation?**

```bash
pip install skill-seekers
```

*The universal preprocessor for AI systems.*
```

---

**Post 2: RAG Pipeline Tutorial**

**File:** `src/content/blog/2026-02-12-rag-tutorial.md`

```markdown
---
title: "From Documentation to RAG Pipeline in 5 Minutes"
description: "Learn how to scrape React documentation and ingest it into a LangChain + Chroma RAG pipeline with Skill Seekers v3.0.0"
pubDate: 2026-02-12
author: "Skill Seekers Team"
tags: ["tutorial", "rag", "langchain", "chroma", "react"]
image: "/images/blog/rag-tutorial-banner.png"
---

# From Documentation to RAG Pipeline in 5 Minutes

[Full tutorial content with code examples]
```

---

**Post 3: AI Coding Assistant Guide**

**File:** `src/content/blog/2026-02-14-ai-coding-guide.md`

```markdown
---
title: "Give Cursor Complete Framework Knowledge with Skill Seekers"
description: "How to convert any framework documentation into Cursor AI rules for better code completion and understanding"
pubDate: 2026-02-14
author: "Skill Seekers Team"
tags: ["cursor", "ai-coding", "tutorial", "windsurf", "cline"]
image: "/images/blog/ai-coding-banner.png"
---

# Give Cursor Complete Framework Knowledge

[Full guide content]
```

---

**Post 4: GitHub Action Tutorial**

**File:** `src/content/blog/2026-02-16-github-action.md`

```markdown
---
title: "Auto-Generate AI Knowledge on Every Documentation Update"
description: "Set up CI/CD pipelines with Skill Seekers GitHub Action to automatically update your AI skills when docs change"
pubDate: 2026-02-16
author: "Skill Seekers Team"
tags: ["github-actions", "ci-cd", "automation", "devops"]
image: "/images/blog/github-action-banner.png"
---

# Auto-Generate AI Knowledge with GitHub Actions

[Full tutorial content]
```

---

## 🎨 Task 2: Create Blog Pages

### Step 2.1: Blog Listing Page

**File:** `src/pages/blog/index.astro`

```astro
---
import { getCollection } from 'astro:content';
import Layout from '../../layouts/Layout.astro';
import BlogList from '../../components/astro/blog/BlogList.astro';

const posts = await getCollection('blog', ({ data }) => {
  return !data.draft;
});

// Sort by date (newest first)
const sortedPosts = posts.sort((a, b) => 
  b.data.pubDate.valueOf() - a.data.pubDate.valueOf()
);

// Get featured post
const featuredPost = sortedPosts.find(post => post.data.featured);
const regularPosts = sortedPosts.filter(post => post !== featuredPost);
---

<Layout 
  title="Blog - Skill Seekers"
  description="Latest news, tutorials, and updates from Skill Seekers"
>
  <main class="max-w-6xl mx-auto px-4 py-12">
    <h1 class="text-4xl font-bold mb-4">Blog</h1>
    <p class="text-xl text-gray-600 mb-12">
      Latest news, tutorials, and updates from Skill Seekers
    </p>

    {featuredPost && (
      <section class="mb-16">
        <h2 class="text-2xl font-semibold mb-6">Featured</h2>
        <BlogCard post={featuredPost} featured />
      </section>
    )}

    <section>
      <h2 class="text-2xl font-semibold mb-6">All Posts</h2>
      <BlogList posts={regularPosts} />
    </section>
  </main>
</Layout>
```

### Step 2.2: Individual Blog Post Page

**File:** `src/pages/blog/[...slug].astro`

```astro
---
import { getCollection } from 'astro:content';
import Layout from '../../layouts/Layout.astro';

export async function getStaticPaths() {
  const posts = await getCollection('blog');
  return posts.map(post => ({
    params: { slug: post.slug },
    props: { post },
  }));
}

const { post } = Astro.props;
const { Content } = await post.render();
---

<Layout 
  title={post.data.title}
  description={post.data.description}
  image={post.data.image}
>
  <article class="max-w-3xl mx-auto px-4 py-12">
    <header class="mb-12">
      <div class="flex gap-2 mb-4">
        {post.data.tags.map(tag => (
          <span class="px-3 py-1 bg-blue-100 text-blue-800 rounded-full text-sm">
            {tag}
          </span>
        ))}
      </div>
      <h1 class="text-4xl font-bold mb-4">{post.data.title}</h1>
      <p class="text-xl text-gray-600 mb-6">{post.data.description}</p>
      <div class="flex items-center gap-4 text-gray-500">
        <span>{post.data.author}</span>
        <span>β€’</span>
        <time datetime={post.data.pubDate.toISOString()}>
          {post.data.pubDate.toLocaleDateString('en-US', {
            year: 'numeric',
            month: 'long',
            day: 'numeric',
          })}
        </time>
      </div>
    </header>

    <div class="prose prose-lg max-w-none">
      <Content />
    </div>
  </article>
</Layout>
```

### Step 2.3: Create Blog Components

**File:** `src/components/astro/blog/BlogCard.astro`

```astro
---
interface Props {
  post: any;
  featured?: boolean;
}

const { post, featured = false } = Astro.props;
---

<article class={`bg-white rounded-lg shadow-md overflow-hidden ${featured ? 'md:flex' : ''}`}>
  {post.data.image && (
    <img 
      src={post.data.image} 
      alt={post.data.title}
      class={`object-cover ${featured ? 'md:w-1/2 h-64 md:h-auto' : 'w-full h-48'}`}
    />
  )}
  <div class="p-6">
    <div class="flex gap-2 mb-3">
      {post.data.tags.slice(0, 3).map(tag => (
        <span class="px-2 py-1 bg-gray-100 text-gray-700 rounded text-xs">
          {tag}
        </span>
      ))}
    </div>
    <h3 class={`font-bold mb-2 ${featured ? 'text-2xl' : 'text-xl'}`}>
      <a href={`/blog/${post.slug}`} class="hover:text-blue-600">
        {post.data.title}
      </a>
    </h3>
    <p class="text-gray-600 mb-4 line-clamp-3">{post.data.description}</p>
    <div class="flex items-center gap-2 text-sm text-gray-500">
      <span>{post.data.author}</span>
      <span>β€’</span>
      <time datetime={post.data.pubDate.toISOString()}>
        {post.data.pubDate.toLocaleDateString('en-US', {
          month: 'short',
          day: 'numeric',
          year: 'numeric',
        })}
      </time>
    </div>
  </div>
</article>
```

**File:** `src/components/astro/blog/BlogList.astro`

```astro
---
import BlogCard from './BlogCard.astro';

interface Props {
  posts: any[];
}

const { posts } = Astro.props;
---

<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
  {posts.map(post => (
    <BlogCard post={post} />
  ))}
</div>
```

---

## πŸ“‘ Task 3: Create RSS Feed

**File:** `src/pages/rss.xml.ts`

```typescript
import rss from '@astrojs/rss';
import { getCollection } from 'astro:content';

export async function GET(context: any) {
  const posts = await getCollection('blog');
  
  return rss({
    title: 'Skill Seekers Blog',
    description: 'Latest news, tutorials, and updates from Skill Seekers',
    site: context.site,
    items: posts.map(post => ({
      title: post.data.title,
      description: post.data.description,
      pubDate: post.data.pubDate,
      link: `/blog/${post.slug}/`,
    })),
  });
}
```

---

## 🏠 Task 4: Update Homepage

**File:** `src/pages/index.astro`

### Key Updates Needed:

1. **Hero Section:**
   - Update tagline to "Universal Documentation Preprocessor"
   - Add v3.0.0 badge
   - Highlight "16 Output Formats"

2. **Features Section:**
   - Add new platform adaptors (16 total)
   - Update MCP tools count (26)
   - Add test count (1,852)

3. **Add Blog Preview:**
   - Show latest 3 blog posts
   - Link to blog section

4. **Add CTA:**
   - "Get Started with v3.0.0"
   - Link to installation docs

---

## πŸ“ Task 5: Update Changelog

**File:** `src/content/docs/community/changelog.md`

Add v3.0.0 section at the top (same content as main repo CHANGELOG).

---

## πŸ”— Task 6: Add Navigation Links

Update site navigation to include:
- Blog link
- New integration guides
- v3.0.0 highlights

---

## πŸš€ Task 7: Deploy

```bash
cd /mnt/1ece809a-2821-4f10-aecb-fcdf34760c0b/Git/skillseekersweb

# Install dependencies
npm install

# Test build
npm run build

# Deploy to Vercel
vercel --prod
```

---

## πŸ“‹ Checklist

### Content
- [ ] 4 blog posts created in `src/content/blog/`
- [ ] All posts have proper frontmatter
- [ ] All posts have images (or placeholder)

### Pages
- [ ] Blog listing page (`src/pages/blog/index.astro`)
- [ ] Blog post page (`src/pages/blog/[...slug].astro`)
- [ ] RSS feed (`src/pages/rss.xml.ts`)

### Components
- [ ] BlogCard component
- [ ] BlogList component

### Configuration
- [ ] Content collection config updated
- [ ] RSS feed configured

### Homepage
- [ ] Hero updated with v3.0.0 messaging
- [ ] Features section updated
- [ ] Blog preview added

### Navigation
- [ ] Blog link added
- [ ] New integration guides linked

### Testing
- [ ] Build passes (`npm run build`)
- [ ] All pages render correctly
- [ ] RSS feed works
- [ ] Links work

### Deployment
- [ ] Deployed to Vercel
- [ ] Verified live site
- [ ] Checked all pages

---

## πŸ“ž Questions?

**Main Repo:** `/mnt/1ece809a-2821-4f10-aecb-fcdf34760c0b/Git/Skill_Seekers`  
**Master Plan:** See `V3_RELEASE_MASTER_PLAN.md` in main repo  
**Content:** Blog post content is provided above

**Key Resources:**
- Examples: Copy from main repo `/examples/`
- Integration guides: Copy from main repo `/docs/integrations/`
- Images: Create or use placeholders initially

---

**Deadline:** End of Week 1 (Feb 15, 2026)

**Good luck! πŸš€**

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.