agentleFS
bablsoftbablsoft/accessflow/.claude/skills/dev-stack/SKILL.md

dev-stack

Skill12 starsChanged 2 months agoApache-2.0View on GitHub

Bring up, inspect, or tear down an AccessFlow local stack — the infra-only dev loop, the zero-config demo stack, one of the three e2e stacks, or the website. Handles the port collisions, tells you the seeded credentials, and never tears down a stack you did not name. Trigger when the user says "start the app", "run it locally", "spin up the stack", "restart the backend", "boot the e2e stack", "why is 5173 taken", or "give me a working login".

4 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions4 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 4

    1. dzianisv/skills★ 4same name
    2. LarsLrn/orcai★ 2same name
    3. pumpkit-io/sdlc★ 2same name
    4. PiloTracer/pilo.ai.logicbison★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository8 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 4 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If the user says "start the app" with no qualifier, that is dev up.

    line 13
  2. Distinctive:

    Never silently kill the process holding it.

    line 40
  3. Very specific:

    Frontend and website: always use preview_start with the .claude/launch.json name (frontend, website).

    line 47
  4. Distinctive:

    Don't run the Playwright suite from here — that is the e2e workflow.

    line 91

“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “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

dev-stack

Inputs

  • target — dev (default) | demo | e2e | e2e-setup | e2e-sso | website
  • action — up (default) | status | logs | down

If the user says "start the app" with no qualifier, that is dev up. If they mention a spec or Playwright, it is one of the e2e targets. If they want to look at the product with no setup, it is demo.

The stacks

TargetWhat runsPorts
devbackend/docker-compose-dev.yml (Postgres + Redis + Mailcrab) + mvn -f backend/pom.xml spring-boot:run + the frontend launch configAPI 8080 · SPA 5173 · Mailcrab UI 1080 · PG 5432 · Redis 6379
demoroot docker-compose.yml — the whole product, zero configAPI 8080 · SPA 5173
e2ee2e/docker-compose.e2e.yml, images built from the working tree, admin seeded via bootstrapAPI 8080 · SPA 5173
e2e-setupe2e/docker-compose.e2e.setup.yml, no admin seeded (first-run wizard)API 8081 · SPA 5174
e2e-ssoe2e/docker-compose.e2e.sso.yml + a mock SimpleSAMLphp IdPAPI 8082 · SPA 5175 · IdP 8085
websitethe website launch config (python3 -m http.server, no build step)8090

Workflow

1. Preflight

docker info >/dev/null || echo "Docker is not running"
lsof -i :5173 -i :8080 -sTCP:LISTEN

The 5173 collision is the single most common trap. The dev, demo and e2e targets all bind host port 5173, and the user's own local app often already holds it. If it is taken, say so and offer the choice — free the port, or set E2E_BASE_URL / E2E_API_BASE for the e2e targets. Never silently kill the process holding it.

2. Bring it up

  • Infra / compose: docker compose -f <file> up -d --wait (the --wait is what makes the next step reliable). For the e2e targets prefer the packaged scripts, which already carry the right flags: cd e2e && npm run stack:up / stack:setup:up / stack:sso:up.
  • Frontend and website: always use preview_start with the .claude/launch.json name (frontend, website). Never run npm run dev through Bash — it holds the shell and the output is not surfaced.
  • Backend in dev: mvn -f backend/pom.xml spring-boot:run, backgrounded. It needs env vars (DB_PASSWORD, ENCRYPTION_KEY, JWT_PRIVATE_KEY, …); the reference is docs/09-deployment.md. If they are not set, say so rather than inventing values — or suggest demo, which ships committed insecure keys for exactly this reason.

3. Wait and report

curl -fsS http://localhost:<api-port>/actuator/health

Then tell the user, in one block: the SPA URL, the API URL, the Mailcrab URL when it is running, and the login. For the e2e stack the seeded admin is:

e2e@accessflow.test / E2ePassword!123      (org "E2E Test Org", role ADMIN)

e2e-setup seeds nothing on purpose — the wizard at /setup is the point.

4. status / logs / down

  • status — container health per stack plus which stack owns 5173/8080/8081/8082.
  • logs — npm run stack:logs (or docker compose -f <file> logs --tail=200).
  • down — docker compose -f <file> down -v. Only the stack the user named.

Definition of done

  • /actuator/health returns UP on the target's API port.
  • The SPA responds on its port (verify with preview_start + a read, not by asking the user).
  • The seeded credentials and every URL were printed.
  • status shows no orphaned stack still holding a port.

Out of scope — do not do these

  • Never docker compose down -v a stack the user did not name. -v drops volumes, so it destroys their local data.
  • Never edit the committed demo keys in the root docker-compose.yml. They are deliberately insecure and deliberately committed so docker compose up works on a fresh clone (CLAUDE.md → Repository Layout).
  • Never kill a process holding a port without asking.
  • Don't run the Playwright suite from here — that is the e2e workflow; this skill only gets the stack up.

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.