Add AGENTS.md with project rules
This commit is contained in:
@@ -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<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).`
|
||||
Reference in New Issue
Block a user