Install any skill in seconds. Free to start, no credit card required.
Get Started Free →ASGI server for Python web applications - Fast, production-ready server for async frameworks
.claude/skills/aiskillstore-uvicorn/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-12 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 25% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 24% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 17% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 103% | 0% |
Uvicorn is a lightning-fast ASGI server implementation, using uvloop and httptools. It's the go-to server for modern Python async web frameworks.
bash# Run ASGI app uv run uvicorn main:app # With host/port uv run uvicorn main:app --host 0.0.0.0 --port 8000 # Development with auto-reload uv run uvicorn main:app --reload
python# main.py async def app(scope, receive, send): assert scope['type'] == 'http' await send({ 'type': 'http.response.start', 'status': 200, 'headers': [(b'content-type', b'text/plain')], }) await send({ 'type': 'http.response.body', 'body': b'Hello, World!', })
python# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"}
bashuv run uvicorn main:app --reload
python# main.py from fastapi import FastAPI def create_app(): app = FastAPI() # Configure app return app app = create_app()
bashuv run uvicorn --factory main:create_app
pythonimport uvicorn # Simple run if __name__ == "__main__": uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)
pythonimport asyncio import uvicorn async def main(): config = uvicorn.Config("main:app", port=5000, log_level="info") server = uvicorn.Server(config) await server.serve() if __name__ == "__main__": asyncio.run(main())
bashexport UVICORN_HOST="0.0.0.0" export UVICORN_PORT="8000" export UVICORN_RELOAD="true" uv run uvicorn main:app
bash# Use multiple worker processes uv run uvicorn main:app --workers 4 # Note: Can't use --reload with --workers
bash# Install gunicorn uv add gunicorn # Run with Gunicorn process manager uv run gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker
bashuv run uvicorn main:app --ssl-keyfile=./key.pem --ssl-certfile=./cert.pem
bashuv run uvicorn main:app --uds /tmp/uvicorn.sock
bashuv run uvicorn main:app \ --host 0.0.0.0 \ --port 8000 \ --reload \ --reload-dir ./app \ --log-level info \ --access-log \ --workers 4
--host: Bind host (default: 127.0.0.1)--port: Bind port (default: 8000)--reload: Enable auto-reload for development--workers: Number of worker processes--log-level: Logging level (critical, error, warning, info, debug)--access-log: Enable access logging--factory: Treat app as application factorydockerfileFROM python:3.12-slim WORKDIR /app # Install dependencies COPY requirements.txt . RUN pip install -r requirements.txt # Copy application COPY . . # Run with uvicorn CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
yamlservices: app: build: . ports: - "8000:8000" environment: - UVICORN_RELOAD=true volumes: - .:/app command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload
--app-dir--reload-dir--workers for production, avoid with --reloadbashuv run uvicorn main:app --reload --log-level debug
python@app.get("/health") async def health(): return {"status": "healthy"}
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 11,979 | 7,647 | -36% | 1 | 1 | 0% | 1,306 | 1,639 | +25% | 0 | 0 | — |
case-02 | pass→pass | 13,264 | 9,329 | -30% | 1 | 1 | 0% | 1,607 | 1,992 | +24% | 0 | 0 | — |
case-07 | pass→pass | 16,232 | 10,163 | -37% | 1 | 1 | 0% | 1,928 | 2,252 | +17% | 0 | 0 | — |
case-03 | pass→pass | 9,544 | 7,615 | -20% | 1 | 1 | 0% | 833 | 1,692 | +103% | 0 | 0 | — |
case-04 | pass→pass | 11,832 | 8,833 | -25% | 1 | 1 | 0% | 1,202 | 1,777 | +48% | 0 | 0 | — |
case-05 | pass→pass | 7,970 | 8,576 | +8% | 1 | 1 | 0% | 601 | 1,777 | +196% | 0 | 0 | — |
case-06 | pass→pass | 19,960 | 15,390 | -23% | 1 | 1 | 0% | 2,949 | 3,057 | +4% | 0 | 0 | — |
case-08 | pass→pass | 13,690 | 10,611 | -22% | 1 | 1 | 0% | 1,591 | 2,312 | +45% | 0 | 0 | — |
case-09 | pass→pass | 10,739 | 9,028 | -16% | 1 | 1 | 0% | 749 | 1,886 | +152% | 0 | 0 | — |
case-10 | pass→pass | 11,253 | 7,352 | -35% | 1 | 1 | 0% | 1,216 | 1,712 | +41% | 0 | 0 | — |
case-11 | pass→pass | 9,148 | 8,192 | -10% | 1 | 1 | 0% | 701 | 1,858 | +165% | 0 | 0 | — |
case-12 | fail→pass | 12,939 | 9,154 | -29% | 1 | 1 | 0% | 1,375 | 1,858 | +35% | 0 | 0 | — |
case-13 | pass→pass | 6,046 | 7,748 | +28% | 1 | 1 | 0% | 1,003 | 1,614 | +61% | 0 | 0 | — |
case-14 | pass→pass | 9,288 | 8,832 | -5% | 1 | 1 | 0% | 1,662 | 1,917 | +15% | 0 | 0 | — |
case-15 | fail→fail | 16,283 | 11,768 | -28% | 1 | 1 | 0% | 2,029 | 2,364 | +17% | 0 | 0 | — |
case-16 | fail→fail | 6,406 | 8,565 | +34% | 1 | 1 | 0% | 1,084 | 1,803 | +66% | 0 | 0 | — |
case-17 | pass→pass | 17,639 | 10,046 | -43% | 1 | 1 | 0% | 2,336 | 3,248 | +39% | 0 | 0 | — |
case-18 | pass→pass | 9,544 | 2,974 | -69% | 1 | 1 | 0% | 1,036 | 1,699 | +64% | 0 | 0 | — |
case-19 | pass→pass | 12,735 | 10,041 | -21% | 1 | 1 | 0% | 1,384 | 2,028 | +47% | 0 | 0 | — |
case-20 | pass→pass | 9,856 | 5,543 | -44% | 1 | 1 | 0% | 1,729 | 2,409 | +39% | 0 | 0 | — |
case-21 | pass→pass | 10,344 | 13,541 | +31% | 1 | 1 | 0% | 1,906 | 2,968 | +56% | 0 | 0 | — |
case-22 | pass→pass | 13,729 | 8,292 | -40% | 1 | 1 | 0% | 1,929 | 2,988 | +55% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +5 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.