Simple web UI on top of the Skill Seekers CLI tool.
- ✅ Zero-friction UI: Click preset or enter URL
- ✅ Skills Gallery: See all generated skills
- ✅ Direct Download: One-click download
- ✅ Persistence: All skills saved in
./output/ - ✅ Modern Stack: Next.js + FastAPI + Docker
# One command - starts everything!
./docker-start.sh
# Or manually
docker-compose up -d --buildThen open: http://localhost:3000
# Backend (with uv)
cd backend
../.venv/bin/uvicorn app:app --reload
# Frontend (with npm)
cd frontend
npm run dev┌──────────────────────────────────────┐
│ Frontend (Next.js + TypeScript) │
│ Port 3000 │
└────────────┬─────────────────────────┘
│ HTTP
▼
┌──────────────────────────────────────┐
│ Backend (FastAPI + uv) │
│ Port 8000 │
└────────────┬─────────────────────────┘
│ subprocess.run()
▼
┌──────────────────────────────────────┐
│ Original CLI Tools (unchanged!) │
│ • doc_scraper.py │
│ • enhance_skill.py │
│ • package_skill.py │
└────────────┬─────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ ./output/ │
│ (Persisted Volume) │
│ skill1.zip, skill2.zip... │
└──────────────────────────────────────┘
- User fills form → Clicks "Create Skill"
- Backend API receives request
- Backend calls
doc_scraper.py(existing CLI tool) - Scraper scrapes docs (15-30 minutes)
- Backend calls
package_skill.py(existing CLI tool) - Skill appears in gallery
- User downloads
.zipfile
Key Insight: This is just a thin web wrapper. The original CLI tools do all the heavy lifting!
- FastAPI: Modern Python web framework
- uv: Fast Python package manager
- Python 3.11: Latest stable Python
- Next.js 15: React framework with SSR
- TypeScript: Type-safe JavaScript
- Tailwind CSS: Utility-first CSS
- Docker: Containerization
- Volume Mounts: Persistence
GET / - Health check
POST /api/create-skill - Create new skill
GET /api/jobs/{job_id} - Get job status
GET /api/download/{name} - Download skill
GET /api/presets - List presets
GET /api/skills - List all skills
All generated skills are stored in ./output/ directory:
./output/
├── react.zip # Generated skills
├── vue.zip
├── godot.zip
└── react_data/ # Scraped data (cached)This directory is:
- ✅ Mounted as Docker volume (persists across restarts)
- ✅ Accessible on host machine
- ✅ Shareable between containers
- ✅ Backed up with your code
# Start
./docker-start.sh
# View logs
docker-compose logs -f
# Stop
docker-compose down
# Rebuild
docker-compose up --build -d
# Remove everything (including volumes)
docker-compose down -v# Start backend
cd backend && ../.venv/bin/uvicorn app:app --reload
# Start frontend
cd frontend && npm run dev
# Install dependencies
uv venv && uv pip install -r backend/requirements.txt
cd frontend && npm installCreate .env or .env.local:
# Backend
PYTHONUNBUFFERED=1
# Frontend
NEXT_PUBLIC_API_URL=http://localhost:8000All presets from configs/ directory are automatically loaded:
- react.json
- vue.json
- godot.json
- django.json
- fastapi.json
- etc.
# 1. Update API URL in docker-compose.yml
NEXT_PUBLIC_API_URL=https://api.yourdomain.com
# 2. Deploy
docker-compose -f docker-compose.yml up -d
# 3. Optional: Add nginx reverse proxyBackend (FastAPI):
- Deploy to Railway, Render, Fly.io, etc.
- Expose port 8000
Frontend (Next.js):
- Deploy to Vercel, Netlify, etc.
- Set
NEXT_PUBLIC_API_URLto backend URL
# Check output directory permissions
ls -la ./output
# Check Docker volume
docker-compose exec backend ls -la /output# Verify mounts
docker-compose exec backend ls -la /
# Should see: doc_scraper.py, enhance_skill.py, package_skill.py# Check if backend is running
curl http://localhost:8000
# Check Docker network
docker-compose exec frontend ping backend# Clear Docker cache
docker-compose down
docker system prune -a
docker-compose up --build- Docker build: ~2-3 minutes
- Skill generation: 15-30 minutes (depends on docs size)
- Docker start: ~10 seconds
- Skill generation: Same (15-30 min)
- Backend: ~500MB RAM
- Frontend: ~200MB RAM
- Disk: ~100-500KB per skill
For production:
- ❌ Don't expose backend port publicly
- ✅ Use environment secrets (not .env files)
- ✅ Add rate limiting
- ✅ Enable HTTPS
- ✅ Regular security updates
- ✅ Input validation
Built on top of Skill Seekers by Yusuf Karaaslan.
Web UI by Moinul Moin (@moinulmoin).
MIT License - Same as original Skill Seekers
✅ Simple: Just a web wrapper, CLI does the work
✅ Fast: Modern tools (uv, Next.js 15)
✅ Persistent: Skills saved in ./output/
✅ Production-ready: Docker + standalone builds
✅ Zero-friction: No auth, no signup, just use it
🚀 Get started: ./docker-start.sh