Chatbot creator skill
A Claude Code skill that scaffolds a complete, multi-provider LLM chatbot web app from a single command
npx -y skills add Preetam3620/chatbot-creator-skillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Scaffold a standalone LLM chatbot app (FastAPI + React + Vite). Builds the full project — user auth, multi-turn chat with Claude/OpenAI/Gemini, WebSocket streaming, SQLite persistence. Warns before overwriting existing files.
SKILL.md
7.0 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it
Chatbot Creator
You are building a complete, standalone LLM chatbot application from scratch.
Reference files: All verbatim file contents live in references/. Read each reference file once at the step that needs it — do not re-read on every file write.
Required structure:
SKILL.md,references/, andscripts/must exist in the same directory. The skill reads fromreferences/at build time and runsscripts/validate_scaffold.pyat the end.
When to Invoke
Invoke this skill when the user asks to:
- "build me a chatbot" / "create a chat app" / "make a chatbot application"
- "scaffold a chatbot" / "new chatbot project" / "set up a chat app from scratch"
- Any request to create a full-stack LLM chat application with a FastAPI backend and React frontend
Do not invoke for:
- Adding chat features to an existing app
- Modifying or extending an already-scaffolded chatbot project
- General LLM API questions without a build request
This Skill Does NOT
- Deploy to any cloud provider — no Docker, Heroku, or Fly.io config
- Configure PostgreSQL or any other database — SQLite only out of the box
- Set up OAuth or social login — email/password auth only
- Generate tests or CI/CD pipelines
- Modify or extend an existing project's architecture
Stack & Versions
| Layer | Technology |
|---|---|
| Backend | Python 3.11+, FastAPI 0.104, SQLAlchemy 2.0, LangGraph ≥0.2, SQLite (default) |
| Frontend | React 18, TypeScript 5, Vite 5, React Router v6 |
| Auth | JWT (PyJWT + HS256), bcrypt password hashing |
| Streaming | WebSocket (browser native + FastAPI WebSocket) |
Project Structure
backend/
app/
__init__.py
main.py ← FastAPI app + lifespan + CORS + routers
config.py ← pydantic-settings; reads .env
database.py ← SQLAlchemy engine + SessionLocal + get_db
models/
__init__.py
user.py
chat.py
schemas/
__init__.py
auth.py
chat.py
api/
__init__.py
auth.py ← /api/auth/register, /login, /logout, /me
chat.py ← REST CRUD + WebSocket /api/chat/ws/{id}?token=<jwt>
services/
__init__.py
chat_graph.py ← LangGraph: MemorySaver, build_graph(), stream_response()
utils/
__init__.py
security.py ← JWT encode/decode, password hash/verify, revocation
requirements.txt
.env.example
frontend/
src/
main.tsx
App.tsx
api/
client.ts
auth.ts
chat.ts
hooks/
useAuth.ts
useChat.ts
pages/
Login.tsx
Register.tsx
Chat.tsx
components/
ProtectedRoute.tsx
SessionList.tsx
MessageList.tsx
ChatInput.tsx
ProviderBadge.tsx
types/
index.ts
styles/
index.css
package.json
vite.config.ts
tsconfig.json
.env.example
Build Steps
Step 1 — Backend config files
Before writing any files, check whether backend/ or frontend/ directories already exist in the current working directory. If either exists, list every file from scripts/validate_scaffold.py's EXPECTED_FILES that is already present, then print:
⚠️ The following files already exist and will be overwritten:
<list each existing file, one per line>
Type "yes" to continue and overwrite, or anything else to abort.
Wait for the user's response. Proceed only if they type exactly "yes". Otherwise stop immediately.
Read references/backend-reference.md now (once — keep it in context for all of Step 2).
Create backend/requirements.txt and backend/.env.example — copy verbatim from Backend Reference.
Step 2 — Backend Python files (dependency order)
Files marked ✦ are copied verbatim from references/backend-reference.md. Files without ✦ are either empty or have a one-line description that is sufficient to generate them correctly.
backend/app/__init__.py— empty filebackend/app/config.py✦backend/app/database.py✦backend/app/models/__init__.py— imports User, ChatSession, ChatMessagebackend/app/models/user.py✦backend/app/models/chat.py✦backend/app/schemas/__init__.py— emptybackend/app/schemas/auth.py✦backend/app/schemas/chat.py✦backend/app/utils/__init__.py— emptybackend/app/utils/security.py✦backend/app/services/__init__.py— emptybackend/app/services/chat_graph.py✦backend/app/api/__init__.py— emptybackend/app/api/auth.py✦backend/app/api/chat.py✦backend/app/main.py✦
⚠️ Common pitfalls
- Windows venv: use
venv\Scripts\activate, notsource venv/bin/activate- Python version: confirm
python --versionshows 3.11+ before creating the venv- Port conflict: if port 8000 is taken, change the uvicorn command and update
CORS_ORIGINSin.envto match- WebSocket auth: the token travels as a query string (
?token=<jwt>); some reverse proxies strip query strings — note this if the user deploys behind nginx or Caddy
Step 3 — Frontend config files
Read references/frontend-reference.md now (once — keep in context for all of Step 4).
Create frontend/package.json, frontend/vite.config.ts, frontend/tsconfig.json, frontend/tsconfig.node.json, frontend/.env.example — copy verbatim from Frontend Reference.
Also create frontend/index.html — standard Vite HTML shell with <div id="root"> and <script type="module" src="/src/main.tsx">.
Step 4 — Frontend TypeScript/TSX files (dependency order)
All files in this step are copied verbatim from references/frontend-reference.md.
frontend/src/types/index.tsfrontend/src/api/client.tsfrontend/src/api/auth.tsfrontend/src/api/chat.tsfrontend/src/hooks/useAuth.tsfrontend/src/hooks/useChat.tsfrontend/src/components/ProtectedRoute.tsxfrontend/src/components/ProviderBadge.tsxfrontend/src/components/SessionList.tsxfrontend/src/components/MessageList.tsxfrontend/src/components/ChatInput.tsxfrontend/src/pages/Login.tsxfrontend/src/pages/Register.tsxfrontend/src/pages/Chat.tsxfrontend/src/App.tsxfrontend/src/main.tsxfrontend/src/styles/index.css
⚠️ TypeScript check: After all frontend files are written, run
npm run buildinfrontend/to confirm zero TypeScript errors before the user customizes anything.
Step 5 — Validate and print startup instructions
Run the validation script to confirm all files were created:
python scripts/validate_scaffold.py
If any files are missing, re-run the relevant build step before continuing. Once all files are present, read references/startup-instructions.md and print its contents exactly as written.
What ships with it: 6 files
63.8 KB alongside SKILL.md, 1 of them executable
references/
- backend-reference.md22.4 KB
- frontend-reference.md33.1 KB
- startup-instructions.md1.3 KB
scripts/
- validate_scaffold.pyruns2.0 KB
- .gitignore142 B
- README.md5.0 KB