diff --git a/content/AGENTS.md b/content/AGENTS.md new file mode 100644 index 0000000..f4bf6fa --- /dev/null +++ b/content/AGENTS.md @@ -0,0 +1,93 @@ +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` 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).`