agentleFS
suitenumeriquesuitenumerique/docs/.agents/skills/docs-start/SKILL.md

docs-start

Skill17k starsChanged 7 days agoMITView on GitHub

Start the La Suite Docs development stack with the least work possible. Use when asked to start, run, launch, boot or bring up Docs, the dev stack or the backend, after a clone, a pull or a branch switch. Checks what is built, stale and running, then runs only the Makefile targets needed (bootstrap only on a first run, rebuilds only the images whose dependencies changed), and copes with a frontend served by a local `yarn dev`.

Adopted by

Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data

Week of Sep 13: 0 new projectsWeek of Sep 20: 0 new projectsWeek of Sep 27: 0 new projectsWeek of Oct 4: 0 new projectsWeek of Oct 11: 0 new projectsWeek of Oct 18: 0 new projectsWeek of Oct 25: 0 new projectsWeek of Nov 1: 0 new projects
Sep 2026Oct 2026Nov 2026
New projects taking a version of this file each week, over the 8 weeks our latest run read: only 0 in all, so this is a hint, not a trend.

Who's talking about suitenumerique/docs

The biggest 5 of 110 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 110

Talked about on GitHub, Bluesky, YouTube and Hacker News (110 times).

On GitHub · 50

45 more on GitHub

On Bluesky · 47

42 more on Bluesky

On YouTube · 11

6 more on YouTube

On Hacker News · 2

The file

Show its rules and text

We split this skill into the rules it gives an agent

16 rules. About 0 are common, 6 are distinctive, and 10 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈6

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 10

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Run it with the Bash tool (Git Bash on Windows).

    line 19
  2. Distinctive:

    Read the plan before running it.

    line 30
  3. Very specific:

    First run: When no dev image and no postgresql container exist (a fresh clone), run make bootstrap.

    line 35
  4. Distinctive:

    An image is stale only when its dependencies changed: Every dev container bind-mounts its sources, so code changes never need a rebuild.

    line 45
  5. Very specific:

    Keep --no-deps. Without it, a dependency recreated in the same up gets its volumes renewed too, and postgresql and kc_postgresql keep their …

    line 70
  6. Very specific:

    Always pass DOCKER_USER as the plan prints it: 0:0 on Windows, uid:gid elsewhere.

    line 76
  7. Very specific:

    When the check says the local node_modules are out of sync, tell the user and offer cd src/frontend && yarn install.

    line 95
  8. Very specific:

    Already up: When every backend service is running and answering, the plan skips make run/make run-backend and only recreates what changed.

    line 98
  9. Distinctive:

    Use the Bash tool from the repository root and the Makefile targets as written.

    line 115
  10. Very specific:

    Before make bootstrap, a rebuild, or anything else long, tell the user in one line what you are about to run and why ("backend image stale: …

    line 119
  11. Very specific:

    Never run make down, make clean, docker compose down, docker system prune or --no-cache builds to "start clean".

    line 122
  12. Very specific:

    Run check-stack.sh again. The endpoints must answer 200 and the plan must say "Nothing to do".

    line 128
  13. Distinctive:

    If the traceback shows a missing module or a missing export after a pull, the dependencies are stale.

    line 143
  14. Very specific:

    env file ... .local not found: run make create-env-local-files.

    line 148
  15. Distinctive:

    The Docker daemon is not reachable: ask the user to start Docker Desktop.

    line 159
  16. Very specific:

    Keep the image table above and the IMAGES list in check-stack.sh in step with compose.yml and the Dockerfiles.

    line 174

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Start the Docs stack

The goal is a running stack for the smallest cost: some contributors have a slow connection or little memory. make bootstrap and every make build-* are expensive, so run them only when the check below says so. make run is usually all that is needed.

1. Check first, change nothing

bash .agents/skills/docs-start/check-stack.sh

Run it with the Bash tool (Git Bash on Windows). It is read-only and takes around 20 seconds. It reports:

  • the Docker daemon, the lasuite-network network, the env.d/development/*.local files and the JWT keys,
  • how the frontend is served: the frontend-development container, a host process on :3000 (a local yarn dev: mode: local), or nothing yet,
  • each dev image: missing, stale or up to date,
  • containers whose dependency volumes are older than their image,
  • the services' state, the two databases and the endpoints,
  • a suggested plan, plus notes.

Read the plan before running it. It is a suggestion; the rules below explain it and take precedence.

2. Rules behind the plan

First run. When no dev image and no postgresql container exist (a fresh clone), run make bootstrap. It creates the network, the .local files and the keys, builds every image, runs the migrations, builds the mails, starts everything and seeds the demo data. Never run it on a stack that is already set up, nor while a local yarn dev holds :3000 (it starts the frontend container, which cannot bind the port): stop the local frontend first. It rebuilds everything, flushes the database (make demo runs resetdb), and generate-secret-keys appends one more OIDC_STORE_REFRESH_TOKEN_KEY to common.local on every run.

An image is stale only when its dependencies changed. Every dev container bind-mounts its sources, so code changes never need a rebuild. Only these do:

imagemake targetstale when these changeservices
impress:backend-developmentmake build-backendsrc/backend/uv.lock, pyproject.toml, root Dockerfileapp-dev, celery-dev
impress:yhub-developmentmake build-yhubsrc/yhub-server/yarn.lock, package.json, its Dockerfileyhub
impress:y-provider-developmentmake build-yjs-providersrc/frontend/yarn.lock, the root, y-provider and eslint-plugin package.json, its Dockerfiley-provider-development-converter
impress:frontend-developmentmake build-frontendsrc/frontend/yarn.lock, the root, impress and eslint-plugin package.json, src/frontend/Dockerfilefrontend-development

Build only the stale images, one target each. Never use make build: it rebuilds all four. When the frontend runs locally, never build the frontend image.

Some containers need --renew-anon-volumes. /app/.venv and the node_modules directories are anonymous volumes. docker compose up --force-recreate, which is what make run does, carries them over to the new container. After a rebuild, the container can therefore keep running the old dependencies. The check reports it ("STALE dependency volume(s)"), and the plan renews them for those services only:

DOCKER_USER=<same as the Makefile> docker compose up -d --force-recreate --renew-anon-volumes --no-deps <services>
  • Keep --no-deps. Without it, a dependency recreated in the same up gets its volumes renewed too, and postgresql and kc_postgresql keep their data in anonymous volumes.
  • Each renewal leaves the old volume dangling. docker volume ls -f dangling=true lists them. Suggest a cleanup to the user; never prune yourself.
  • Always pass DOCKER_USER as the plan prints it: 0:0 on Windows, uid:gid elsewhere. Without it, compose runs the containers as 1000 and the bind-mounted files become unwritable.

The frontend.

  • mode: local: something already answers on :3000 from the host, usually the user's own yarn dev. This is expected. Run make run-backend, not make run: make run would try to start the frontend-development container and fail with "port 3000 is already allocated". Tell the user the frontend on :3000 is theirs and was left alone.
  • mode: undecided: nothing on :3000, but src/frontend/node_modules exists locally. Ask the user whether to run the frontend locally or in Docker.
    • Locally: make run-backend, then make run-frontend-development. That target blocks, so start it with run_in_background. It stops the container and runs yarn dev.
    • In Docker: build the frontend image if it is missing or stale, then run make run.
  • mode: container: make run.
  • When the check says the local node_modules are out of sync, tell the user and offer cd src/frontend && yarn install. It mostly hits the yarn cache.

Already up. When every backend service is running and answering, the plan skips make run/make run-backend and only recreates what changed. Those targets force-recreate every container and would drop the open collaboration websockets for nothing. With nothing to change, the plan says so. Report that and stop.

Databases.

  • make migrate when migrations are pending.
  • On an empty backend database (containers removed with make down: the postgresql data lives in an anonymous volume), run make migrate then make demo.
  • make migrate-yhub after rebuilding yhub, or when its database is empty. It is idempotent: a BUSYGROUP error in its output is harmless.

3. Run the plan

  • Use the Bash tool from the repository root and the Makefile targets as written.
  • Builds and make bootstrap can exceed the 2-minute default. Pass timeout: 600000, or use run_in_background for make bootstrap.
  • Before make bootstrap, a rebuild, or anything else long, tell the user in one line what you are about to run and why ("backend image stale: uv.lock changed").
  • Never run make down, make clean, docker compose down, docker system prune or --no-cache builds to "start clean". They lose data or the build cache, and a slow connection pays for it.

4. Verify, then report

Run check-stack.sh again. The endpoints must answer 200 and the plan must say "Nothing to do". Then give the user a short summary:

Troubleshooting

  • A service keeps restarting: docker compose logs --tail 80 <service>. If the traceback shows a missing module or a missing export after a pull, the dependencies are stale. The check tells whether the image or only the volumes are behind. A container out of sync with its volumes is often fixed by the --renew-anon-volumes --no-deps command above, even when the check sees nothing.
  • env file ... .local not found: run make create-env-local-files. A new .local file was added to compose.yml since the last bootstrap.
  • yhub /collaboration/ready/v1 answers 503: its postgres or valkey is down (docker compose ps yhub-postgres yhub-valkey). If the log names a missing relation, run make migrate-yhub.
  • Edits to docker/auth/realm.json have no effect (invalid_scope, client_not_found): Keycloak imports the realm only once, and its kc_postgresql keeps it in an anonymous volume. Run docker compose up -d --force-recreate --renew-anon-volumes kc_postgresql keycloak (with DOCKER_USER). Everyone will have to log in again, and whatever was changed in Keycloak since the import (users, clients) is lost: warn the user first.
  • The Docker daemon is not reachable: ask the user to start Docker Desktop. Do not try to start it yourself.

Improvements

Whenever you notice something that would make starting the stack cheaper or more reliable, tell the user and ask before proposing a change. This covers:

  • the Makefile: a target that does too much, a missing guard, a non-idempotent step,
  • compose.yml or the Dockerfiles,
  • this skill or check-stack.sh: a false positive or negative in the staleness check, a new service, a new image, a new .local file.

Keep the image table above and the IMAGES list in check-stack.sh in step with compose.yml and the Dockerfiles.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.