Files
LabApiPluginTemplate/content/AGENTS.md
T

94 lines
3.7 KiB
Markdown

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](https://github.com/northwood-studios/LabAPI). 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:
```bash
dotnet build
```
The expected result is:
`Build succeeded. 0 Warning(s) 0 Error(s).`