From fastloom-sdk
Use when the user wants to set up a new fastloom-based service from scratch, bootstrap a fastloom project, or generate the initial app.py / settings.py / tenants.yaml scaffold for a service consuming the fastloom library. Triggers on phrases like "new fastloom service", "set up fastloom", "bootstrap fastloom", "scaffold a fastloom backend".
How this skill is triggered — by the user, by Claude, or both
Slash command
/fastloom-sdk:scaffold-fastloom-serviceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate the three files every fastloom service needs at its project root, plus the `pyproject.toml` extras hint.
Generate the three files every fastloom service needs at its project root, plus the pyproject.toml extras hint.
Ask in one round:
PROJECT_NAME).mongo, rabbit, kafka, redis, mcp, celery, httpx, openai. fastapi is always included.OIDC_URL) or OAuth2 (authorizationUrl + tokenUrl) or none for local dev.Use the user's answers to produce these files. Write to cwd unless the user specifies a subdirectory.
pyproject.toml (snippet to add or merge)[project]
name = "<service-name>"
requires-python = ">=3.12,<3.14"
dependencies = [
"fastloom[fastapi,<other-selected-extras>]>=0.4,<0.5",
]
settings.pyCompose Settings from BaseGeneralSettings + LauncherSettings plus exactly the capability mixins the user picked. Always alias Configs as TC. Add a TenantSettings(BaseModel) placeholder with a name: str field. Reference: docs/settings.md in the fastloom repo.
tenants.yamlA default: block with the SCREAMING_SNAKE_CASE infrastructure fields (MONGO_URI, RABBIT_URI, REDIS_URL — only the ones matching selected extras), ENVIRONMENT: development, PROJECT_NAME, APP_PORT: 8000, DEBUG: true, observability toggles off. Add one example tenant block under default: with just name: and an optional website_url:. Do not put MONGO_DATABASE or any infrastructure URI in the per-tenant overrides — databases are shared across tenants; partition via the tenant field on documents.
app.pyA minimal App(...) declaration: one demo router with a /ping route, models_module=models and signals_module=signals only if the user picked mongo / rabbit respectively. Include cache_healthcheck=True if redis is selected.
If the user said they want a fully working starter, also create:
<service-name>/__init__.py<service-name>/api/__init__.py + a ping.py router with GET /ping returning {"pong": "ok"}<service-name>/models/__init__.py if mongo was picked<service-name>/signals/__init__.py if rabbit was pickedAny, no untyped dicts (see fastloom's .claude/rules/typing.md if available).MONGO_DATABASE in tenant overrides.Str[T] for URL/DSN fields in Settings.Field(default_factory=...) for runtime defaults.Tell the user what to do next:
poetry install
launch
# Then visit http://localhost:8000/api/<service-name>/docs
npx claudepluginhub aradng/fastloom --plugin fastloom-sdkCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.