writing-skills
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment
setup-and-configurationInstall and configure GeoNode 5.1-style deployments, choose Docker or bare topology, validate settings and startup lifecycle, and diagnose service or hardening failures without claiming unavailable infrastructure is verified.
Independent GitHub snapshot · Automated classification · Original documentation governs
Use this skill when a user needs to install GeoNode, generate an environment file, choose Docker versus bare deployment, align Django/GeoServer/database settings, validate startup, or diagnose a deployment that is partly running. This is a routing and validation skill: follow the linked references for the long variable tables and recipes.
.env. Never paste secrets into chat or logs.--sample-file and --output; inspect the resulting file locally and
protect it as a secret-bearing artifact.Before startup, confirm the following values are intentional and mutually consistent:
DJANGO_SETTINGS_MODULE=geonode.settings, a unique SECRET_KEY, and
DEBUG=False for any exposed deployment.SITEURL is the externally visible canonical URL with the right scheme,
host, port, and trailing slash. ALLOWED_HOSTS includes the request host but
is not an accidental wildcard in a public deployment.DATABASE_URL points to a spatially capable PostGIS database for normal
deployments. If DEFAULT_BACKEND_DATASTORE is set, validate its
GEODATABASE_URL separately. Spatialite is a development fallback, not a
substitute for PostGIS behavior.GEOSERVER_LOCATION is reachable from GeoNode; public and UI locations are
the URLs users and GeoServer advertise. Keep internal and public URLs
distinct when Docker DNS is involved.BROKER_URL and CELERY_RESULT_BACKEND point to the same intended Redis
topology when asynchronous processing is enabled. ASYNC_SIGNALS and
Celery eager settings must match the deployment goal.python scripts/generate_envfile.py --help and, if generating a file,
use a disposable sample/output pair. Confirm no secret appears in stdout.PASSWORD, SECRET, TOKEN, KEY, or URL credentials.python manage.py check and then
python manage.py check --deploy when settings and dependencies are
available. A database or GeoServer error is a service gate, not proof that
the configuration is valid.python manage.py migrate for the default database
and, when configured, python manage.py migrate --database=datastore.
For Docker, let the documented startup lifecycle perform migrations and
inspect container health and logs.{placeholder} tokens, is written only to the
requested destination, and the generator reports counts/path—not values.db and redis before Django,
Django before GeoServer, and a separate worker health signal. See the
topology reference for dependency conditions and safe inspection commands.Report deployment mode, configuration checks, lifecycle stage reached, exact service gates tested, and unresolved prerequisites. Include whether the result is package-valid, settings-valid, service-ready, or production reviewed; do not collapse these statuses. Link the relevant troubleshooting entry and keep all credentials redacted.