A Natural Language Software Developer — Best practices for AI-assisted development to prevent vibe coding
NatLangSWE stands for Natural Language Software Engineer — a discipline for writing software through structured communication with AI coding assistants.
Natural Language Software Development is the practice of directing AI assistants like Claude Code using explicit, well-defined guidelines rather than ad-hoc prompts. This repository teaches the best practices for this emerging development paradigm.
"Vibe coding" happens when developers prompt AI assistants without clear constraints or standards, resulting in:
- Inconsistent code quality
- Security vulnerabilities
- Poor architectural decisions
- Code that "works" but violates best practices
- Technical debt that compounds with each generation
Instead of vague prompts like "write me a web server", Natural Language Software Development provides explicit rules that AI assistants follow. By adding these guidelines to your AI's context, you get code that adheres to proven standards — whether that's NASA's safety-critical rules, idiomatic language patterns, or framework-specific conventions.
- Clone natlangswe into your project (or as a sibling directory):
cd your-project git clone https://github.com/NatLangSWE/natlangswe.git natlangswe - Delete what you don't need — Remove the files and folders that aren't relevant to your stack (e.g., delete
frameworks/pytorch/if you're not using PyTorch) - Create a
CLAUDE.mdin your project root - Reference the remaining files in your
CLAUDE.mdso Claude Code reads them before writing code
For a SvelteKit + TypeScript + Bun + PostgreSQL project:
# Coding Standards
Read the relevant natlangswe/ files before writing code.
## Reference Files
- natlangswe/languages/typescript/POWER_OF_10.md
- natlangswe/frameworks/sveltekit/POWER_OF_10.md
- natlangswe/frameworks/svelte5-runes/POWER_OF_10.md
- natlangswe/frameworks/tailwindcss/POWER_OF_10.md
- natlangswe/databases/postgresql/POWER_OF_10.md
- natlangswe/toolchains/bun/POWER_OF_10.md
- natlangswe/frameworks/sveltekit/PREFERENCES.md
- natlangswe/patterns/COMMENTS.md
- natlangswe/patterns/MINIMAL_DEPENDENCIES.md
- natlangswe/patterns/FEATURE_SLICED_DESIGN.mdSee stacks/svelteship/CLAUDE.md for a full working example.
NatLangSWE/
├── languages/
│ ├── rust/ # Rust guidelines
│ ├── python/ # Python guidelines
│ └── typescript/ # TypeScript guidelines
├── frameworks/
│ ├── nextjs/ # NextJS (TSX) guidelines
│ ├── sveltekit/ # SvelteKit (TypeScript) guidelines
│ ├── svelte5-runes/ # Svelte 5 Runes (reactivity) guidelines
│ ├── react/ # React (TSX) guidelines
│ ├── tailwindcss/ # TailwindCSS guidelines
│ ├── axum/ # Rust Axum guidelines
│ ├── electron/ # Electron (TypeScript) guidelines
│ ├── fastapi/ # FastAPI (Python) guidelines
│ └── pytorch/ # PyTorch (Python) guidelines
├── databases/
│ └── postgresql/ # PostgreSQL guidelines
├── toolchains/
│ ├── uv/ # UV (Python toolchain) guidelines
│ ├── bun/ # Bun (TypeScript toolchain) guidelines
│ └── cargo-rustup/ # Cargo + Rustup (Rust toolchain) guidelines
├── patterns/ # Cross-language design patterns
├── stacks/ # Recommended tech stacks
NASA JPL's safety-critical coding rules adapted for modern development.
| Language | Guidelines |
|---|---|
| Rust | POWER_OF_10.md |
| Python | POWER_OF_10.md |
| TypeScript | POWER_OF_10.md |
| Framework | Guidelines |
|---|---|
| React | POWER_OF_10.md |
| NextJS | POWER_OF_10.md ・ PREFERENCES.md |
| SvelteKit | POWER_OF_10.md ・ PREFERENCES.md |
| Svelte 5 Runes | POWER_OF_10.md |
| TailwindCSS | POWER_OF_10.md |
| Electron | POWER_OF_10.md |
| Axum | POWER_OF_10.md |
| FastAPI | POWER_OF_10.md |
| PyTorch | POWER_OF_10.md |
| Database | Guidelines |
|---|---|
| PostgreSQL | POWER_OF_10.md |
| Toolchain | Guidelines |
|---|---|
| UV | POWER_OF_10.md |
| Bun | POWER_OF_10.md |
| Cargo + Rustup | POWER_OF_10.md |
- Feature-Sliced Design — Monorepo architecture with strict layers
- Minimal Dependencies — When to use vs. avoid libraries
- Code Comments — Inline, concise commenting guidelines
- FastMVP — Vercel + NextJS + Convex/Supabase + Clerk + Stripe
- SvelteShip — Vercel + SvelteKit + Supabase + Stripe
Contributions welcome! Feel free to submit guidelines for additional languages or improvements to existing ones.
CC0 1.0 Universal — Public Domain