Add comprehensive release planning documentation: - V3_RELEASE_MASTER_PLAN.md - Complete 4-week campaign strategy - V3_RELEASE_SUMMARY.md - Quick reference summary - WEBSITE_HANDOFF_V3.md - Website update instructions for other Kimi - RELEASE_PLAN.md, RELEASE_CONTENT_CHECKLIST.md, RELEASE_EXECUTIVE_SUMMARY.md - QA_FIXES_SUMMARY.md - QA fixes documentation
677 lines
16 KiB
Markdown
677 lines
16 KiB
Markdown
# 🌐 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! 🚀**
|