solid-like-a-rock Action

June 11, 2026 · View on GitHub

Lint your Swift architecture boundaries in CI — solid-like-a-rock enforces Clean Architecture / SOLID import rules on every pull request, with inline annotations.

Usage

name: Architecture
on: [pull_request]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: nenadvulic/solid-like-a-rock-action@v1
        with:
          paths: Sources
          exclude: .build Pods

Inputs

InputDefaultDescription
versionlatestsolid-like-a-rock release to use (e.g. 0.6.0). Linux binaries start at 0.6.0.
paths.Directories or files to lint (space-separated; individual paths must not contain spaces).
config(tool discovery)Path to .solid.yml; by default the tool walks up from the working directory.
baseline(none)Path to a baseline JSON; only new violations fail.
exclude(none)Space-separated path fragments to skip (e.g. .build Pods checkouts); added to the config's own exclude. Fragments must not contain spaces.

Runners

Works on ubuntu-latest, ubuntu-24.04-arm, and macos-* runners. The binary is downloaded from the release, checksum-verified, and cached.

Versioning

Pin @v1 to always get the latest compatible action. The action resolves the latest solid-like-a-rock release at runtime, so @v1 users automatically pick up new tool versions — no action upgrade needed. To pin the tool itself, set the version input. Each solid-like-a-rock release auto-publishes a new vX.Y.Z action tag and advances the floating v1 tag.