Sno Station
Sno Station은 AI 에이전트를 하나의 팀으로 묶는 오픈소스 워크스테이션으로, 로컬 머신에서 에이전트 협업을 가능하게 함
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A Lethal Company mod that saves and loads cruiser position, rotation, and condition, and lets you toggle the magnet remotely.
Install .NET SDK 10.0 or later.
Install PowerShell 7.
Install Visual Studio 2022.
Install Docker if you plan to use the documented local Markdown lint command.
Install ShellCheck, actionlint, and
pinact if you plan to run GitHub Actions quality checks locally.
Install APM to restore the repository-local
Codex Skills pinned in apm.lock.yaml.
apm install --frozen
apm audit --ci
See AGENTS.md for the Skill update procedure.
Restore NuGet packages.
dotnet restore --locked-mode
Open CruiserJumpPractice.sln in Visual Studio.
Run the relevant checks before opening a pull request.
dotnet format --no-restore --verify-no-changes
dotnet format is an aggregate formatter that checks whitespace, built-in code
style, and fixable analyzer diagnostics. Roslyn analyzers also run during build,
including diagnostics that cannot be automatically fixed.
Markdown is checked with
markdownlint-cli2.
The pinned Docker image below is the documented local command so contributors do
not need a local Node.js project, but Docker is not required.
Other installation methods are acceptable when they run the same
markdownlint-cli2 version with this repository's configuration.
The image's default working directory is /workdir, so mount the repository
there. Run the Docker command without network access and as a non-root user.
On Windows with PowerShell, use UID/GID 1000:1000:
docker run --rm --network none --user 1000:1000 -v ".:/workdir" davidanson/markdownlint-cli2:v0.22.1@sha256:0ed9a5f4c77ef447da2a2ac6e67caf74b214a7f80288819565e8b7d2ac148fe5
On Linux, use sudo docker and pass the host user's UID and GID:
sudo docker run --rm --network none --user "$(id -u):$(id -g)" -v ".:/workdir" davidanson/markdownlint-cli2:v0.22.1@sha256:0ed9a5f4c77ef447da2a2ac6e67caf74b214a7f80288819565e8b7d2ac148fe5
When updating Markdown lint tooling, update the documented local command and the CI action together after the repository cooldown period has elapsed.
GitHub Actions workflows and composite actions are checked with
actionlint.
The local lint pass has two parts:
actionlint checks workflow syntax, expressions, runner labels, and composite
action metadata.Run ShellCheck before actionlint. This keeps actionlint's ShellCheck integration available so actionlint can also inspect inline shell scripts in workflows. The pyflakes integration remains disabled because this repository does not currently contain Python files. Revisit that setting if Python scripts are added.
shellcheck .github/actions/publish-thunderstore/publish-thunderstore.sh
actionlint -pyflakes=
Install these tools from trusted distributions:
actionlint: upstream releases, package-manager integrations, Docker image,
or another trusted distribution.When updating CI, use cooldown-compliant pinned releases. The workflow downloads Linux release archives directly and verifies their SHA256 values before running them. It caches only the archives, not the extracted executables, so cached downloads are still verified before use.
GitHub Actions and reusable workflows are checked with pinact so external actions stay pinned to full commit SHAs with synchronized version comments.
pinact run --check --min-age 7
For local fixes or maintenance updates, use the same cooldown setting:
# Pin or refresh version comments.
pinact run --min-age 7
# Update pinned actions after the repository cooldown period.
pinact run --update --min-age 7
Set GITHUB_TOKEN when possible so pinact can query GitHub's API with normal
authenticated rate limits.
Install pinact from its upstream releases, package-manager integrations, or
another trusted distribution.
CI downloads the Linux amd64 release archive directly and verifies its SHA256 before running pinact. It caches only the archive, not the extracted executable, so cached downloads are still verified before use.
To update the lock file after modifying your package references, run:
dotnet restore --use-lock-file
When changing assets/manifest.json dependency strings:
assets/README.md and CHANGELOG.md.CHANGELOG.md.This project separates the SDK used to build and format the mod from the target framework that controls runtime compatibility.
TargetFramework on netstandard2.1 unless Lethal Company, BepInEx,
Unity, or compile-only dependencies require a compatibility change.dotnet-version values together.LangVersion explicit. Before increasing it, confirm SDK, Visual Studio
2022, and dependency compatibility, then update the C# format summary above.packages.lock.json, review new diagnostics,
and separate mechanical formatting from intentional rule or code changes when
practical.Maintenance references:
dotnet formatThe repository uses GitHub Actions for CI.
Action versions are pinned with pinact. Actions and other executable CI tooling should be updated after the repository cooldown period has elapsed. Keep SHA pins and version comments synchronized when updating pinned actions.
# Pin
pinact run --min-age 7
# Update
pinact run --update --min-age 7
This repository currently does not use GitHub Actions variables.
| Name | Used by | Description |
|---|---|---|
| None | Not applicable | No repository variables are currently used. |
| Name | Used by | Description |
|---|---|---|
THUNDERSTORE_TOKEN | .github/workflows/build.yml | Thunderstore service account token used by .github/actions/publish-thunderstore. |
# Debug build
DOTNET_CLI_UI_LANGUAGE=en dotnet build
# Release build
DOTNET_CLI_UI_LANGUAGE=en dotnet build --configuration Release
CHANGELOG.md.assets/CHANGELOG.md from stable entries in CHANGELOG.md.assets/manifest.json when needed.assets/manifest.json:
CruiserJumpPractice/CruiserJumpPractice.csproj with a
SemVer version such as 1.2.3..github/workflows/build.yml packages assets/CHANGELOG.md.generate-version action updates assets/manifest.json from the
project version.Update the leading compatibility marker in assets/manifest.json only when the
assets/README.md Compatibility section records a newly tested or
maintainer-confirmed Lethal Company version.
Use the compact marker format at the start of the description:
[v<version>][v<older-version>/<newer-version>]For example, use [v73/v81] when the marker intentionally covers both Lethal
Company versions.
Marker versions mean tested or maintainer-confirmed Lethal Company versions
from assets/README.md.
List slash-separated versions from older to newer.
Keep best-effort or lower-confidence compatibility notes out of the marker;
document those in assets/README.md or CHANGELOG.md instead.
When updating the marker:
[v<version-or-versions>] <description without the compatibility marker>.[v81] and slash-separated markers
such as [v73/v81] as the same leading compatibility marker.Keep detailed compatibility and test-environment information in
assets/README.md and CHANGELOG.md.
Treat CHANGELOG.md as the developer-facing compatibility history.
Handle dependency string changes in assets/manifest.json as separate
dependency maintenance.
Document the reason and compatibility impact in that change.
The current workflow deploys to the Thunderstore aoirint team and publishes to
the lethal-company community with these
categories:
ModsTweaks & Quality Of LifeAI GeneratedThe THUNDERSTORE_TOKEN secret must belong to a Thunderstore service account
that can publish to that team.
NOTE: Prerelease versions such as 1.2.3-alpha.1 are uploaded only to GitHub,
because Thunderstore does not support them.
Structured validation logs are disabled by default. To enable them for release validation, open the generated CruiserJumpPractice config file and set:
[Debug]
ValidationLogging = true
Enabled validation records use one JSON object per log line after the stable
[CJP_VALIDATION] prefix and following space. Prefer sharing extracted
[CJP_VALIDATION] lines plus nearby error lines when asking for validation
help. Share full BepInEx logs only when needed, because other mods or BepInEx
can include unrelated local environment details.
Harmony callback failures that are intentionally swallowed may emit
callback_exception validation records. These records include only the stable
callback token and exception type.
Config editor.BepInEx\config\BepInEx.cfg in the config list.Logging.Console.LogLevels to All.Settings > Import local mod.bin/Debug/netstandard2.1/.Start modded.Lethal Company.exe and exit to generate the BepInEx config files.C:/Program Files (x86)/Steam/steamapps/common/Lethal Company/BepInEx/config/BepInEx.cfg.bin/Debug/netstandard2.1/ into
C:/Program Files (x86)/Steam/steamapps/common/Lethal Company/BepInEx/plugins/.Logging.Console.Enabled to true.Logging.Console.LogLevels to All.Lethal Company.exe again.Some parts of this project were developed with AI tools based on large language models (LLMs), including agent-based tools. The project maintainer reviews the code. This disclosure is made in compliance with Thunderstore and community policies.