{"id":"56f9cfff-fb21-4c4f-95f0-6d963e986618","shortId":"tmVrsS","kind":"skill","title":"litestar-deployment","tagline":"Auto-activate for Dockerfile, docker-compose.yml, railway.json, railway.toml, Procfile, cloudbuild.yaml, app.yaml, service.yaml, deploy.sh, systemd units, Kubernetes manifests, Terraform, or granian/litestar run in deployment context. Use when deploying Litestar apps to container","description":"# Litestar Deployment\n\nProduction deployment patterns for Litestar ASGI applications across Docker, Railway, Kubernetes/GKE, Cloud Run, and systemd. Covers multi-stage Dockerfiles, distroless images, asset pipelines, worker containers, and health-check integration.\n\nAll deployment paths use **Granian** (via `litestar-granian`) as the ASGI server, **uv** for Python package management, and **Bun** for frontend asset builds.\n\n**Build vs. deploy split:** this skill is about **running** Litestar artifacts in production. For **producing** those artifacts — wheel bundling with embedded Vite assets, PyApp onefile binaries, GitHub Actions CI/release pipelines — see [litestar-build](../litestar-build/SKILL.md).\n\n## Code Style Rules\n\n- `from __future__ import annotations` is allowed in consumer-app modules (Dockerfiles, deploy scripts, settings).\n- All Python samples use PEP 604 unions (`T | None`).\n- Granian over uvicorn in every CMD/entrypoint. Use `litestar run` (which delegates to Granian when `litestar-granian` is installed).\n- Environment-driven configuration via `@dataclass` settings — never hardcode secrets or connection strings.\n- Shell scripts follow Google Shell Style Guide (set -euo pipefail, quoted variables).\n\n## Quick Reference\n\n| Target | Reference | Key File |\n| --- | --- | --- |\n| Docker (standard multi-stage) | [references/docker-standard.md](references/docker-standard.md) | `Dockerfile` |\n| Docker (distroless production) | [references/docker-distroless.md](references/docker-distroless.md) | `Dockerfile.distroless` |\n| SAQ worker container | [references/docker-workers.md](references/docker-workers.md) | `Dockerfile.worker` |\n| Docker Compose (app + infra) | [references/docker-compose.md](references/docker-compose.md) | `docker-compose.yml` |\n| Railway | [references/railway.md](references/railway.md) | `railway.app.json` |\n| Kubernetes / GKE | [references/kubernetes.md](references/kubernetes.md) | `deploy.py`, templates/ |\n| Cloud Run | [references/cloud-run.md](references/cloud-run.md) | `service.yaml` |\n| systemd native | [references/systemd.md](references/systemd.md) | `litestar.service` |\n\n### Dockerfile CMD (all variants)\n\n```dockerfile\n# Web server\nENTRYPOINT [\"tini\", \"--\"]\nCMD [\"litestar\", \"run\", \"--host\", \"0.0.0.0\", \"--port\", \"8000\"]\n\n# SAQ worker (separate container)\nENTRYPOINT [\"tini\", \"--\"]\nCMD [\"app\", \"workers\", \"run\"]\n```\n\n### Environment variables (required in every target)\n\n```bash\nLITESTAR_APP=\"app.server.asgi:create_app\"   # app discovery\nDATABASE_URL=\"postgresql+asyncpg://...\"       # async driver\nSAQ_REDIS_URL=\"redis://cache:6379/0\"         # worker queue\nSECRET_KEY=\"...\"                              # session signing\n```\n\n<workflow>\n\n## Workflow\n\n### Step 1: Choose deployment target\n\nDocker Compose for local/staging. Railway for rapid PaaS. GKE/K8s for production at scale. Cloud Run for serverless containers. systemd for bare-metal.\n\n### Step 2: Write the Dockerfile\n\nStart from `Dockerfile.distroless` for production (preferred). Use standard multi-stage for environments that need a shell. Use `Dockerfile.dev` for local Docker development. Always pin `ARG PYTHON_VERSION=3.13`.\n\n### Step 3: Build frontend assets inside Docker\n\nCopy Bun lockfiles first (layer caching), install JS deps, then `bun run build` and `uv run app assets build`. Assets must be in the wheel before `uv build`.\n\n### Step 4: Create separate worker image\n\nSAQ workers use the same build stages but a different CMD (`app workers run`). No port exposed, no health-check HTTP endpoint. Set `SAQ_USE_SERVER_LIFESPAN=false`.\n\n### Step 5: Set up CI/CD\n\nBuild images in CI, push to registry, deploy via `railway up`, `gcloud run deploy`, or `kubectl apply`. Tag images with git SHA for production — never deploy `latest` to prod.\n\n### Step 6: Configure health checks and monitoring\n\nExpose `/health` on the API container. K8s uses startupProbe + livenessProbe + readinessProbe on `/health:8000`. Cloud Run and Railway use the same endpoint for readiness.\n\n</workflow>\n\n<guardrails>\n\n## Guardrails\n\n- **Distroless for production, slim for dev.** Distroless (`gcr.io/distroless/cc-debian12:nonroot`) has no shell, no apt, minimal CVE surface. Use slim only when you need a shell for debugging.\n- **Non-root user (UID 65532).** Match the distroless `nonroot` user. Create with `useradd --system --uid 65532` in standard images.\n- **uv for all package installs.** No pip, no pip-tools. `uv sync --frozen --no-dev` in builder, `uv pip install` wheel in runner.\n- **UV_COMPILE_BYTECODE=1.** Pre-compile .pyc in the builder — saves 200-500ms cold-start in containers.\n- **UV_LINK_MODE=copy.** Hardlinks break on overlay filesystems. Always copy.\n- **Tini as PID 1.** Containers need an init process for signal forwarding and zombie reaping. `ENTRYPOINT [\"tini\", \"--\"]`.\n- **STOPSIGNAL SIGINT.** Granian handles SIGINT for graceful shutdown. Docker sends SIGTERM by default; set `STOPSIGNAL SIGINT` or Granian ignores the signal and gets SIGKILL after timeout.\n- **Multi-architecture support.** Use `docker buildx` with `--platform linux/amd64,linux/arm64`. Distroless Dockerfile handles arch-specific lib paths via `TARGETARCH`.\n- **Asset build inside Docker.** Vite/Bun builds run in the builder stage. Never mount host `node_modules` into production images.\n- **Health check endpoints.** Every API container must expose `/health`. K8s probes hit this path. Cloud Run and Railway use it for readiness.\n- **LITESTAR_APP env var.** Both Litestar CLI and Granian read this for app discovery. Set it in Dockerfile and override per-environment.\n- **Never run as root.** `USER nonroot` in Dockerfile. `runAsNonRoot: true` in K8s pod security context.\n- **Pin Python version.** `ARG PYTHON_VERSION=3.13` at the top. Never use `python:latest`.\n- **Separate worker containers from web containers.** SAQ workers poll Redis, not HTTP. They need different CMD, different scaling, and no port.\n- **Build-time env vars to prevent connection attempts.** Set `DATABASE_POOL_DISABLED=true`, `SAQ_USE_SERVER_LIFESPAN=false`, `SAQ_WEB_ENABLED=false` during build to prevent the app from trying to connect to databases during asset compilation.\n\n</guardrails>\n\n<validation>\n\n### Validation Checkpoint\n\nBefore shipping a Litestar deployment, verify:\n\n- [ ] Dockerfile uses multi-stage build (python-base -> builder -> runner)\n- [ ] `ARG PYTHON_VERSION` is pinned (not `latest`)\n- [ ] `COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/` present\n- [ ] `UV_COMPILE_BYTECODE=1` and `UV_LINK_MODE=copy` set in builder\n- [ ] Frontend assets built inside Docker (not copied from host)\n- [ ] `uv build` creates wheel; runner installs wheel (not editable)\n- [ ] Runner uses non-root user (UID 65532)\n- [ ] `ENTRYPOINT [\"tini\", \"--\"]` set\n- [ ] `STOPSIGNAL SIGINT` set (for Granian graceful shutdown)\n- [ ] `LITESTAR_APP` env var set\n- [ ] `/health` endpoint exists and is used by probes/readiness checks\n- [ ] SAQ worker is a separate container with different CMD, no EXPOSE\n- [ ] No secrets in Dockerfile (use env vars or mounted secrets)\n- [ ] Production image is distroless or has documented justification for slim\n- [ ] Docker Compose `depends_on` uses `condition: service_healthy`\n\n</validation>\n\n<example>\n\n## Example\n\nSee [references/docker-distroless.md](references/docker-distroless.md) for a complete 4-stage distroless Dockerfile with multi-arch support, Vite asset build, and non-root execution.\n\nFor a full local stack (app + worker + migrator + PostgreSQL + Valkey), see [references/docker-compose.md](references/docker-compose.md).\n\nFor Kubernetes production deployment with HPA, Ingress, and GKE Workload Identity, see [references/kubernetes.md](references/kubernetes.md).\n\n</example>\n\n---\n\n## References Index\n\n- [Docker Standard Multi-Stage](references/docker-standard.md) — slim-based Dockerfile with cache mounts\n- [Docker Distroless (Production)](references/docker-distroless.md) — preferred production image\n- [Docker Workers (SAQ)](references/docker-workers.md) — background task container\n- [Docker Compose](references/docker-compose.md) — full local/staging stack\n- [Railway](references/railway.md) — PaaS deployment with Redis provisioning\n- [Kubernetes / GKE](references/kubernetes.md) — Deployment, Service, HPA, Ingress\n- [Cloud Run](references/cloud-run.md) — serverless container deployment\n- [systemd Native](references/systemd.md) — bare-metal service unit\n\n## Official References\n\n- <https://docs.litestar.dev/latest/usage/cli.html> — Litestar CLI and `litestar run`\n- <https://docs.litestar.dev/latest/topics/deployment/index.html> — Official deployment guide\n- <https://docs.railway.com/> — Railway platform docs\n- <https://cloud.google.com/run/docs> — Cloud Run documentation\n- <https://cloud.google.com/kubernetes-engine/docs> — GKE documentation\n- <https://www.freedesktop.org/software/systemd/man/systemd.service.html> — systemd service units\n- <https://github.com/GoogleContainerTools/distroless> — Distroless container images\n\n## Cross-References\n\n- [litestar-build](../litestar-build/SKILL.md) — how the wheel and PyApp onefile artifacts this skill deploys are produced (Hatchling config, Vite-in-package bundling, GitHub release pipelines)\n- [litestar-granian](../litestar-granian/SKILL.md) — ASGI server tuning (workers, threads, HTTP/2, backpressure)\n- [litestar-saq](../litestar-saq/SKILL.md) — SAQ worker configuration and task definitions\n- [litestar-vite](../litestar-vite/SKILL.md) — Vite asset build pipeline and TypeGen\n- [litestar settings](../litestar-settings/references/settings.md) — env-driven `@dataclass` settings pattern\n\n## Shared Styleguide Baseline\n\n- [General Principles](../litestar-styleguide/references/general.md)\n- [Python](../litestar-styleguide/references/python.md)\n- [Litestar](../litestar-styleguide/references/litestar.md)","tags":["litestar","deployment","skills","litestar-org","advanced-alchemy","agent-skills","agentskills","ai-agents","claude-code-plugin","claude-code-skills","gemini-cli-extension","htmx"],"capabilities":["skill","source-litestar-org","skill-litestar-deployment","topic-advanced-alchemy","topic-agent-skills","topic-agentskills","topic-ai-agents","topic-claude-code-plugin","topic-claude-code-skills","topic-gemini-cli-extension","topic-htmx","topic-inertia","topic-litestar","topic-mcp","topic-python"],"categories":["litestar-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/litestar-org/litestar-skills/litestar-deployment","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add litestar-org/litestar-skills","source_repo":"https://github.com/litestar-org/litestar-skills","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (9,816 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:13:53.531Z","embedding":null,"createdAt":"2026-05-18T13:20:56.818Z","updatedAt":"2026-05-18T19:13:53.531Z","lastSeenAt":"2026-05-18T19:13:53.531Z","tsv":"'-500':592 '/astral-sh/uv:latest':856 '/bin':859 '/distroless/cc-debian12:nonroot':515 '/googlecontainertools/distroless':1115 '/health':482,493,701,914 '/kubernetes-engine/docs':1104 '/latest/topics/deployment/index.html':1088 '/latest/usage/cli.html':1080 '/litestar-build/skill.md':126,1125 '/litestar-granian/skill.md':1151 '/litestar-saq/skill.md':1162 '/litestar-settings/references/settings.md':1181 '/litestar-styleguide/references/general.md':1193 '/litestar-styleguide/references/litestar.md':1197 '/litestar-styleguide/references/python.md':1195 '/litestar-vite/skill.md':1172 '/run/docs':1098 '/software/systemd/man/systemd.service.html':1109 '/uv':857 '/uvx':858 '0.0.0.0':264 '1':309,582,613,864 '2':337 '200':591 '3':371 '3.13':369,759 '4':406,969 '5':441 '6':475 '604':150 '6379/0':300 '65532':539,550,898 '8000':266,494 'across':44 'action':119 'activ':6 'allow':135 'alway':364,608 'annot':133 'api':485,697 'app':32,139,226,274,285,288,289,393,422,716,727,816,910,991 'app.server.asgi':286 'app.yaml':14 'appli':461 'applic':43 'apt':520 'arch':668,976 'arch-specif':667 'architectur':655 'arg':366,756,845 'artifact':102,108,1132 'asgi':42,79,1152 'asset':59,90,114,374,394,396,674,824,874,979,1174 'async':294 'attempt':796 'auto':5 'auto-activ':4 'background':1039 'backpressur':1158 'bare':334,1072 'bare-met':333,1071 'base':842,1023 'baselin':1190 'bash':283 'binari':117 'break':604 'build':91,92,125,372,389,395,404,416,445,675,679,789,812,839,883,980,1124,1175 'build-tim':788 'builder':572,589,683,843,872 'buildx':659 'built':875 'bun':87,378,387 'bundl':110,1144 'bytecod':581,863 'cach':299,382,1026 'check':66,431,478,694,922 'checkpoint':827 'choos':310 'ci':448 'ci/cd':444 'ci/release':120 'cli':721,1082 'cloud':48,241,326,495,707,1062,1099 'cloud.google.com':1097,1103 'cloud.google.com/kubernetes-engine/docs':1102 'cloud.google.com/run/docs':1096 'cloudbuild.yaml':13 'cmd':252,260,273,421,782,931 'cmd/entrypoint':159 'code':127 'cold':595 'cold-start':594 'compil':580,585,825,862 'complet':968 'compos':225,314,955,1043 'condit':959 'config':1139 'configur':176,476,1165 'connect':184,795,820 'consum':138 'consumer-app':137 'contain':34,62,220,270,330,486,598,614,698,769,772,928,1041,1066,1117 'context':27,752 'copi':377,602,609,852,869,879 'cover':52 'creat':287,407,545,884 'cross':1120 'cross-refer':1119 'cve':522 'databas':291,798,822 'dataclass':178,1185 'debug':533 'default':639 'definit':1168 'deleg':164 'dep':385 'depend':956 'deploy':3,26,30,36,38,69,94,142,311,452,458,470,832,1002,1051,1058,1067,1090,1135 'deploy.py':239 'deploy.sh':16 'dev':511,570 'develop':363 'differ':420,781,783,930 'disabl':800 'discoveri':290,728 'distroless':57,213,506,512,542,664,947,971,1029,1116 'doc':1095 'docker':45,204,212,224,313,362,376,635,658,677,877,954,1015,1028,1035,1042 'docker-compose.yml':9,230 'dockerfil':8,56,141,211,251,255,340,665,732,745,834,937,972,1024 'dockerfile.dev':359 'dockerfile.distroless':217,343 'dockerfile.worker':223 'docs.litestar.dev':1079,1087 'docs.litestar.dev/latest/topics/deployment/index.html':1086 'docs.litestar.dev/latest/usage/cli.html':1078 'docs.railway.com':1092 'document':950,1101,1106 'driven':175,1184 'driver':295 'edit':890 'embed':112 'enabl':809 'endpoint':433,502,695,915 'entrypoint':258,271,625,899 'env':717,791,911,939,1183 'env-driven':1182 'environ':174,277,353,737 'environment-driven':173 'euo':194 'everi':158,281,696 'exampl':962 'execut':985 'exist':916 'expos':427,481,700,933 'fals':439,806,810 'file':203 'filesystem':607 'first':380 'follow':188 'forward':621 'frontend':89,373,873 'frozen':567 'full':988,1045 'futur':131 'gcloud':456 'gcr.io':514 'gcr.io/distroless/cc-debian12:nonroot':513 'general':1191 'get':649 'ghcr.io':855 'ghcr.io/astral-sh/uv:latest':854 'git':465 'github':118,1145 'github.com':1114 'github.com/googlecontainertools/distroless':1113 'gke':236,1007,1056,1105 'gke/k8s':321 'googl':189 'grace':633,907 'granian':72,76,154,166,170,629,644,723,906,1150 'granian/litestar':23 'guardrail':505 'guid':192,1091 'handl':630,666 'hardcod':181 'hardlink':603 'hatchl':1138 'health':65,430,477,693 'health-check':64,429 'healthi':961 'hit':704 'host':263,687,881 'hpa':1004,1060 'http':432,778 'http/2':1157 'ident':1009 'ignor':645 'imag':58,410,446,463,553,692,945,1034,1118 'import':132 'index':1014 'infra':227 'ingress':1005,1061 'init':617 'insid':375,676,876 'instal':172,383,558,575,887 'integr':67 'js':384 'justif':951 'k8s':487,702,749 'key':202,304 'kubectl':460 'kubernet':19,235,1000,1055 'kubernetes/gke':47 'latest':471,766,851 'layer':381 'lib':670 'lifespan':438,805 'link':600,867 'linux/amd64':662 'linux/arm64':663 'litestar':2,31,35,41,75,101,124,161,169,261,284,715,720,831,909,1081,1084,1123,1149,1160,1170,1179,1196 'litestar-build':123,1122 'litestar-deploy':1 'litestar-granian':74,168,1148 'litestar-saq':1159 'litestar-vit':1169 'litestar.service':250 'livenessprob':490 'local':361,989 'local/staging':316,1046 'lockfil':379 'manag':85 'manifest':20 'match':540 'metal':335,1073 'migrat':993 'minim':521 'mode':601,868 'modul':140,689 'monitor':480 'mount':686,942,1027 'ms':593 'multi':54,207,350,654,837,975,1018 'multi-arch':974 'multi-architectur':653 'multi-stag':53,206,349,836,1017 'must':397,699 'nativ':247,1069 'need':355,529,615,780 'never':180,469,685,738,763 'no-dev':568 'node':688 'non':535,894,983 'non-root':534,893,982 'none':153 'nonroot':543,743 'offici':1076,1089 'onefil':116,1131 'overlay':606 'overrid':734 'paa':320,1050 'packag':84,557,1143 'path':70,671,706 'pattern':39,1187 'pep':149 'per':736 'per-environ':735 'pid':612 'pin':365,753,849 'pip':560,563,574 'pip-tool':562 'pipefail':195 'pipelin':60,121,1147,1176 'platform':661,1094 'pod':750 'poll':775 'pool':799 'port':265,426,787 'postgresql':293,994 'pre':584 'pre-compil':583 'prefer':346,1032 'present':860 'prevent':794,814 'principl':1192 'probe':703 'probes/readiness':921 'process':618 'procfil':12 'prod':473 'produc':106,1137 'product':37,104,214,323,345,468,508,691,944,1001,1030,1033 'provis':1054 'push':449 'pyapp':115,1130 'pyc':586 'python':83,146,367,754,757,765,841,846,1194 'python-bas':840 'queue':302 'quick':198 'quot':196 'railway':46,231,317,454,498,710,1048,1093 'railway.app.json':234 'railway.json':10 'railway.toml':11 'rapid':319 'read':724 'readi':504,714 'readinessprob':491 'reap':624 'redi':297,776,1053 'refer':199,201,1013,1077,1121 'references/cloud-run.md':243,244,1064 'references/docker-compose.md':228,229,997,998,1044 'references/docker-distroless.md':215,216,964,965,1031 'references/docker-standard.md':209,210,1020 'references/docker-workers.md':221,222,1038 'references/kubernetes.md':237,238,1011,1012,1057 'references/railway.md':232,233,1049 'references/systemd.md':248,249,1070 'registri':451 'releas':1146 'requir':279 'root':536,741,895,984 'rule':129 'run':24,49,100,162,242,262,276,327,388,392,424,457,496,680,708,739,1063,1085,1100 'runasnonroot':746 'runner':578,844,886,891 'sampl':147 'saq':218,267,296,411,435,773,802,807,923,1037,1161,1163 'save':590 'scale':325,784 'script':143,187 'secret':182,303,935,943 'secur':751 'see':122,963,996,1010 'send':636 'separ':269,408,767,927 'server':80,257,437,804,1153 'serverless':329,1065 'servic':960,1059,1074,1111 'service.yaml':15,245 'session':305 'set':144,179,193,434,442,640,729,797,870,901,904,913,1180,1186 'sha':466 'share':1188 'shell':186,190,357,518,531 'ship':829 'shutdown':634,908 'sigint':628,631,642,903 'sigkil':650 'sign':306 'signal':620,647 'sigterm':637 'skill':97,1134 'skill-litestar-deployment' 'slim':509,525,953,1022 'slim-bas':1021 'source-litestar-org' 'specif':669 'split':95 'stack':990,1047 'stage':55,208,351,417,684,838,970,1019 'standard':205,348,552,1016 'start':341,596 'startupprob':489 'step':308,336,370,405,440,474 'stopsign':627,641,902 'string':185 'style':128,191 'styleguid':1189 'support':656,977 'surfac':523 'sync':566 'system':548 'systemd':17,51,246,331,1068,1110 'tag':462 'target':200,282,312 'targetarch':673 'task':1040,1167 'templat':240 'terraform':21 'thread':1156 'time':790 'timeout':652 'tini':259,272,610,626,900 'tool':564 'top':762 'topic-advanced-alchemy' 'topic-agent-skills' 'topic-agentskills' 'topic-ai-agents' 'topic-claude-code-plugin' 'topic-claude-code-skills' 'topic-gemini-cli-extension' 'topic-htmx' 'topic-inertia' 'topic-litestar' 'topic-mcp' 'topic-python' 'tri':818 'true':747,801 'tune':1154 'typegen':1178 'uid':538,549,897 'union':151 'unit':18,1075,1112 'url':292,298 'use':28,71,148,160,347,358,413,436,488,499,524,657,711,764,803,835,892,919,938,958 'user':537,544,742,896 'useradd':547 'uv':81,391,403,554,565,573,579,599,861,866,882 'uvicorn':156 'valid':826 'valkey':995 'var':718,792,912,940 'variabl':197,278 'variant':254 'verifi':833 'version':368,755,758,847 'via':73,177,453,672 'vite':113,978,1141,1171,1173 'vite-in-packag':1140 'vite/bun':678 'vs':93 'web':256,771,808 'wheel':109,401,576,885,888,1128 'worker':61,219,268,275,301,409,412,423,768,774,924,992,1036,1155,1164 'workflow':307 'workload':1008 'write':338 'www.freedesktop.org':1108 'www.freedesktop.org/software/systemd/man/systemd.service.html':1107 'zombi':623","prices":[{"id":"fc9cd768-3d74-4e33-9523-1dd4092a801b","listingId":"56f9cfff-fb21-4c4f-95f0-6d963e986618","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"litestar-org","category":"litestar-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:20:56.818Z"}],"sources":[{"listingId":"56f9cfff-fb21-4c4f-95f0-6d963e986618","source":"github","sourceId":"litestar-org/litestar-skills/litestar-deployment","sourceUrl":"https://github.com/litestar-org/litestar-skills/tree/main/skills/litestar-deployment","isPrimary":false,"firstSeenAt":"2026-05-18T13:20:56.818Z","lastSeenAt":"2026-05-18T19:13:53.531Z"}],"details":{"listingId":"56f9cfff-fb21-4c4f-95f0-6d963e986618","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"litestar-org","slug":"litestar-deployment","github":{"repo":"litestar-org/litestar-skills","stars":7,"topics":["advanced-alchemy","agent-skills","agentskills","ai-agents","claude-code-plugin","claude-code-skills","gemini-cli-extension","htmx","inertia","litestar","mcp","python","sqlspec"],"license":"mit","html_url":"https://github.com/litestar-org/litestar-skills","pushed_at":"2026-05-13T16:04:09Z","description":"Opinionated first-party agent skills, plugins, subagents, slash commands, and MCP servers for the Litestar framework ecosystem — publishable to Claude Code, Gemini CLI, Codex CLI, Cursor, OpenCode, and VS Code/Copilot from a single repo.","skill_md_sha":"67a25456a7600923b04c5aed24367b413dbe5a26","skill_md_path":"skills/litestar-deployment/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/litestar-org/litestar-skills/tree/main/skills/litestar-deployment"},"layout":"multi","source":"github","category":"litestar-skills","frontmatter":{"name":"litestar-deployment","description":"Auto-activate for Dockerfile, docker-compose.yml, railway.json, railway.toml, Procfile, cloudbuild.yaml, app.yaml, service.yaml, deploy.sh, systemd units, Kubernetes manifests, Terraform, or granian/litestar run in deployment context. Use when deploying Litestar apps to containers, Railway, Cloud Run, GKE, systemd, or CI/CD release targets. Not for non-Litestar Python apps or build artifact packaging alone."},"skills_sh_url":"https://skills.sh/litestar-org/litestar-skills/litestar-deployment"},"updatedAt":"2026-05-18T19:13:53.531Z"}}