Set up Enferno here and build a customers page for signed-in users.
Claude Code
✓git clone level09/enferno · ./setup.sh
✓read AGENTS.md · skill enferno-dev
✓flask create-db · flask install
✓model Customer · flask db migrate
✓route /customers/ · auth_required("session")
✓template · v-data-table, no build step
✓uv run python checks.py
✓ All 8 checks passed
Claude Code
Customers page is live at /customers/ behind login. Want me to add search?
Describe what to build… ↑
Start
Start with one prompt.
Open Claude Code, Codex or Cursor in an empty folder and paste this. Replace the last line with your app.
prompt
Set up github.com/level09/enferno in this folder and follow its AGENTS.md.
Then build: a customer portal where clients see their invoices.
Run checks.py when you're done and show me the result.
Already have an agent setup? Add the skill: npx skills add level09/enferno
What your agent will run
bash
git clone [email protected]:level09/enferno.git && cd enferno
./setup.sh # deps + .env with generated secrets (--full for Redis/Celery)
uv run flask create-db # tables, migrations stamped
uv run flask install # admin user
uv run flask run # http://localhost:5000
Why Enferno
Built so agents get it right the first time.
Agents go wrong when a codebase has five ways to do one thing. Enferno has one, writes it down, and lets the agent check its own work.
The rules are written down
A 90-line AGENTS.md covers the stack, routes and hard rules. The enferno-dev skill holds the full code patterns.
›AGENTS.md · stack, layout, routes, rules
›.agents/skills/enferno-dev
›.claude/skills → same skill
›npx skills add level09/enferno
Agents check their own work
checks.py runs real code paths against your database. The agent runs it, reads it, fixes what broke.
$ uv run python checks.py
✓ App boots without errors
✓ Database connection works
✓ All blueprints register
✓ Critical routes exist
✓ Login and logout work
✓ All 8 checks passed
No build step
Vue 3, Vuetify and Tabler icons run straight in the browser. No webpack for the agent to fight.
<!-- no node_modules -->
<v-data-table
:items="items">
</v-data-table>
// delimiters: ${ }
One command per job
Everything is a CLI call an agent can run and read.
$flask create-db
$flask db migrate -m "…"
$flask add-role -e … -r …
$ruff check --fix .
Complexity is opt-in
SQLite by default, so the first run needs no infrastructure. Add the rest when you decide.
sqlite · defaultpostgresredisceleryalembic
./setup.sh --full
Auth your agent doesn't have to write
Flask-Security-Too with TOTP 2FA, passkeys, recovery codes, Google and GitHub login, roles, and CSRF on every form and API call.
Any agent that reads AGENTS.md or agent skills: Claude Code, Codex, Cursor, Copilot and Gemini CLI. The skill lives in .agents/skills/, the shared location, and Claude Code sees it through .claude/skills.
Not necessarily. Your agent writes the Vue code following the project's patterns, and Enferno works with vanilla JavaScript too. Vue 3 and Vuetify are there when you want a rich component library.
Yes. It's plain Flask with a CLI. "What your agent will run" above lists the five commands to get running.
Absolutely. MIT license gives you complete freedom to build and sell commercial applications without any restrictions or attribution requirements.
Enferno provides production-ready defaults: authentication with 2FA, passkeys and OAuth, Alembic migrations, a Vue 3 admin with no build step, and Docker deployment. Redis, Celery and PostgreSQL are opt-in. It's the boilerplate you'd build anyway, already battle-tested.
Open source
Free forever. Build without limits.
Full source, commercial use, no attribution required. Point your agent at it and ship.