Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
4 changes: 2 additions & 2 deletions .claude/skills/verify-model-visually/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ finding — call it out.
2. **Run the deterministic linter first (geometry net):**

```bash
npm --prefix tools run lint:bpmn
npm run lint:bpmn
```

It globs every production model. Clean = silent, exit 0; non-zero = real geometry problems —
**capture each finding** (every line names the element/flow + rule) but don't stop; still do the
visual pass. Missing binary → `npm --prefix tools ci` once, then re-run. bpmnlint also runs in the
visual pass. Missing binary → `npm ci` once, then re-run. bpmnlint also runs in the
pre-commit hook and the `build` job of `.github/workflows/pre-merge.yml`; **skip this step only when
geometry was already gated upstream this run** (CI's lint step or the pre-commit hook) and note that.

Expand Down
4 changes: 2 additions & 2 deletions .conductor/settings.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ run_mode = "nonconcurrent"

# One-time setup per workspace: install BPMN tooling + git hooks, and the frontend deps.
setup = """
npm --prefix tools ci
npm --prefix tools run hooks:install
npm ci
npm run hooks:install
npm --prefix frontend ci
"""

Expand Down
4 changes: 2 additions & 2 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Repo-wide pre-commit hook. Install once with: npm --prefix tools run hooks:install
# Repo-wide pre-commit hook. Install once with: npm run hooks:install
#
# It is the single git hooks path for the repo (frontend does NOT use husky, so the two hook
# systems can't fight over core.hooksPath). It runs two cheap, high-value checks on what you staged:
Expand All @@ -13,7 +13,7 @@ staged="$(git diff --cached --name-only --diff-filter=ACMR)"
# 1) BPMN models
if echo "$staged" | grep -q '\.bpmn$'; then
echo "pre-commit: linting BPMN models"
npm --prefix "$root/tools" run --silent lint:bpmn
npm --prefix "$root" run --silent lint:bpmn
fi

# 2) Frontend staged files
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/pre-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ jobs:
with:
node-version-file: frontend/.nvmrc
cache: npm
cache-dependency-path: tools/package-lock.json
cache-dependency-path: package-lock.json

- name: Lint BPMN (bpmnlint)
run: |
npm --prefix tools ci
npm --prefix tools run lint:bpmn
npm ci
npm run lint:bpmn

- name: Set up JDK 21
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v4
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ npm --prefix frontend run dev # UI on :5173 (proxies /api
| Regenerate the API client | `npm --prefix frontend run api:generate` (check: `api:check`) |
| API scenarios (running stack) | `cd bruno && npx --yes @usebruno/cli run . --env local -r` |
| Browser e2e (running stack) | `npm --prefix frontend run e2e` |
| BPMN lint | `npm --prefix tools run lint:bpmn` |
| BPMN lint | `npm run lint:bpmn` |
| Backend OCI image · full-stack run | `./gradlew :service:app:bootBuildImage` · `docker compose -f stack/docker-compose.full.yml up` — [ADR-0014](docs/adr/0014-build-and-deployment-approach.md), CONTRIBUTING "Run it in containers" |

## Architecture — the rules are machine-enforced
Expand Down Expand Up @@ -79,7 +79,7 @@ codebase "process" means the BPMN model, so the step rail is `widgets/leasing-pr

- `bpmn-to-code` generates typed process constants from the models at build time; a custom model
test requires every service task to use a delegate expression (`#{beanName}`).
- `bpmnlint` runs on staged `.bpmn` via `.githooks/pre-commit` (install: `npm --prefix tools run hooks:install`).
- `bpmnlint` runs on staged `.bpmn` via `.githooks/pre-commit` (install: `npm run hooks:install`).

## Testing

Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ welcome — bug reports, feature ideas, docs, and code.
```bash
git clone git@github.com:miragon-blueprints/fullstack-example.git
cd fullstack-example
npm --prefix tools ci && npm --prefix tools run hooks:install # BPMN lint + git hooks
npm ci && npm run hooks:install # BPMN lint + git hooks
npm --prefix frontend ci # frontend dependencies
```

Expand Down Expand Up @@ -114,7 +114,7 @@ npm --prefix frontend run api:generate # regenerate the typed client from opena
npm --prefix frontend run e2e # Playwright specs (chromium)

# BPMN
npm --prefix tools run lint:bpmn # bpmnlint the .bpmn models
npm run lint:bpmn # bpmnlint the .bpmn models
```

## Ground rules
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ fullstack-example/
├── openapi/openapi.json # GENERATED by a test, COMMITTED, drift-gated in CI
├── frontend/ # React + FSD (npm-only; e2e/ Playwright specs)
├── bruno/ # API scenario collections
├── tools/ # bpmnlint + git-hook installer
├── package.json # bpmnlint + git-hook installer tooling
├── stack/ # docker-compose.yml (dev DB) · docker-compose.full.yml (full stack)
├── docs/{README.md, adr/, assets/} # ADRs + diagrams
├── .claude/{skills/, agents/} # 8 skills, 2 subagents
Expand Down
File renamed without changes.
6 changes: 3 additions & 3 deletions tools/package.json → package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
"name": "fullstack-example-tooling",
"version": "1.0.0",
"private": true,
"description": "Dev tooling for the fullstack bike-leasing blueprint: BPMN linting (bpmnlint) and git hook installation. Run from the repo root via `npm --prefix tools run <script>`.",
"description": "Dev tooling for the fullstack bike-leasing blueprint: BPMN linting (bpmnlint) and git hook installation. Run from the repo root via `npm run <script>`.",
"scripts": {
"lint:bpmn": "bpmnlint --max-warnings=0 \"../service/app/src/main/resources/bpmn/*.bpmn\"",
"hooks:install": "git -C .. config core.hooksPath .githooks"
"lint:bpmn": "bpmnlint --max-warnings=0 \"service/app/src/main/resources/bpmn/*.bpmn\"",
"hooks:install": "git config core.hooksPath .githooks"
},
"devDependencies": {
"@miragon/bpmnlint-plugin-rules": "0.5.0",
Expand Down
Loading