This file is the short entry point for agent-oriented repository instructions. Read the referenced companion files before changing code, builds, documentation, or pull requests.
- All Linux/Unix relevant changes that cannot be mixed with the other OS need to go in "./src/GregModmanager.Unix"
- All Windows relevant changes that cannot be mixed with the other OS need to go in "./src/GregModmanager.Windows"
- All MacOs Related changes that cannot be mixed with the other os need to go in "./src/GregModmanager.MacOs"
- There will be/is a Companion Plugin for Melonloader to integrate the Modmanager into the game. (Maybe with overlays? Plan with atomic tasks) - Located here: "./src/GregModmanager.Melons/gregPlugin.ModmanagerCompanion"
- Always use Orchestration of several Agents if possible to
SOUL.md— repository personality, collaboration defaults, and communication style.USER.md— project context, architecture, runtime guardrails, and release expectations.TOOLS.md— build, CI, Steam Workshop, signing, telemetry, and troubleshooting guidance.EXTERNAL_DEPENDENCIES.md— external services, tools, native binaries, and third-party dependencies.
- Application: cross-platform desktop mod manager for the gregFramework ecosystem.
- UI: Latest Avalonia if possible.
- Target framework: Latest Stable .net for the desktop app; runtime-facing helper projects stay compatible with .NET 6 unless explicitly requested and validated, but only for Melonloader Integrations.
- Solution:
GregModmanager.sln. - Executable project:
src/GregModmanager.Avalonia/GregModmanager.Avalonia.csproj. - Shared library:
src/GregModmanager.Core/GregModmanager.Core.csproj.
- Work on a feature branch and open a pull request to
main; do not push directly tomainunless the maintainer explicitly requests it. - Keep commits focused. Combine related changes only when splitting them would reduce reviewability or when the maintainer asks for a single commit.
- Use Conventional Commits for generated commit messages unless the maintainer explicitly requests another format.
- Update
CHANGELOG.mdunder[Unreleased]for user-facing changes. - Update
EXTERNAL_DEPENDENCIES.mdwhen adding, removing, or materially changing external packages, tools, services, or native binaries.
- Core should not reference Avalonia. If a required fix appears to need that dependency, stop and ask for maintainer confirmation.
- Avalonia may depend on Core through
<ProjectReference>. - Use dependency injection in
Program.csfor services. - Prefer
Path.Combine,Environment.SpecialFolder, known paths, or validated user paths over hard-coded platform paths. - Guard platform-specific code with compile-time or runtime platform checks unless the maintainer explicitly confirms a platform-only change.
- Check
SteamPublishRateLimiter.Shared.TryAcquire(out retryAfter)beforeSubmitAsync()unless the maintainer explicitly confirms a controlled test path. - Display cooldown timers in seconds when the UI exposes rate-limit state unless the UX owner confirms a different copy format.
- Keep
steam_api64.dllout of Authenticode signing loops unless the vendor changes the binary format and the maintainer confirms the change.
- Keep PowerShell build scripts and GitHub Actions workflows aligned unless a PR intentionally stages a migration and explains the temporary divergence.
- Preserve publish-size settings unless a measured, reviewed change requires otherwise.
- Breaking changes normally require a major SemVer bump; ask the maintainer before applying a different release policy.
- Manual release promotion is allowed only when the automated workflow is unavailable or the maintainer requests it.
- Register serialized DTOs in
src/GregModmanager.Core/Models/AppJsonContext.csunless the type is intentionally excluded and documented. - Add UI strings to
AppStrings.resxandAppStrings.de.resxat minimum unless the maintainer explicitly limits localization scope. - Repository documentation should be English unless the user or maintainer explicitly requests another language for the artifact.
- Run the most relevant build, test, or static check available in the environment.
- If a check cannot be run, state that limitation in the PR or final response.
- Verify whether relevant wiki pages need updates; list follow-up pages when the wiki is not available in the working environment.