Files
LabApiPluginTemplate/content/AGENTS.md
T

3.7 KiB

SCP: Secret Laboratory LabAPI plugin generated from the labapi-plugin template.

Project Overview

  • The plugin targets netstandard2.1 intentionally.
  • LabAPI runs on the game's .NET Framework 4.8 environment, but the Unity version used by SCP: Secret Laboratory supports loading plugins targeting netstandard2.1.
  • The official LabAPI repository is LabApi GitHub. Use it to verify LabAPI APIs, behavior, and implementation details instead of guessing.

Rules

  • Do not change TargetFramework.
  • Do not add multi-targeting.
  • Do not change LangVersion.
  • Do not remove or broaden the existing warning handling.
  • Do not replace the floating Northwood.LabAPI version with a pinned version unless explicitly requested.
  • Do not automatically synchronize RequiredApiVersion with the NuGet package version.
  • Do not add comments unless explicitly requested.
  • Do not invent LabAPI APIs, namespaces, classes, methods, properties, events, or attributes.
  • Do not hand-roll configuration serialization or file I/O.
  • Do not make unrelated changes to project configuration.
  • Do not scan or read the repository broadly at the start of a task.
  • Only inspect files relevant to the current request.
  • Prefer targeted searches over broad repository exploration.

Documentation

  • The docs directory contains project documentation and must be consulted before starting any task.
  • Use the relevant documentation in docs to understand the project's architecture, conventions, design decisions, and non-obvious behavior before making changes.
  • Do not create documentation that merely restates what the code already makes obvious.
  • Document architecture, non-obvious behavior, important design decisions, and conventions that cannot be understood easily from the code alone.
  • Keep documentation concise and focused on useful context.
  • Update the relevant documentation when a change affects documented behavior, architecture, conventions, or design decisions.
  • Keep documentation consistent with the current state of the code.
  • Do not create unnecessary documentation files.

LabAPI API Guidelines

Plugin<TConfig> requires the following members:

  • Name
  • Description
  • Author
  • RequiredApiVersion
  • Enable()
  • Disable()

Optional overridable members include:

  • Version
  • Priority
  • ConfigFileName

Config is automatically serialized and deserialized by LabAPI using YamlDotNet.

Before using a LabAPI API that is not already present in the project, verify that it exists and confirm its signature using one of these sources:

  1. The restored LabApi.dll and LabApi.xml from the NuGet package.
  2. The official LabAPI source: https://github.com/northwood-studios/LabAPI.

Never guess an API. If an API or member cannot be verified, say so.

Code Style

  • Keep code simple and direct.
  • Prefer existing project patterns over introducing new abstractions.
  • Do not add unnecessary wrappers, helpers, interfaces, or dependencies.
  • All text embedded in code must be in English.
  • Identifiers do not need to be in English when a specific name has been requested.
  • Avoid comments unless explicitly requested.

Project Configuration

The following settings are intentional and must not be changed unless explicitly requested:

  • TargetFramework
  • LangVersion
  • Northwood.LabAPI version
  • NU1701 warning handling
  • MSB3270 warning handling

RequiredApiVersion is a manually maintained minimum compatible LabAPI version. Update it only after compatibility with a newer LabAPI version has been verified.

Verification

After making changes, run:

dotnet build

The expected result is:

Build succeeded. 0 Warning(s) 0 Error(s).