## AGENTS.md ### Scope & Source of Truth - Work in `LazyBear.MCP/`. - Ignore `Libraries/Confluence/` unless the user explicitly asks for it. - Trust code and project config over `README.md`. - Primary source of truth: `LazyBear.MCP/Program.cs`. ### Project Facts - Entry point: `LazyBear.MCP/Program.cs`. - MCP server registration: ```csharp AddMcpServer() .WithHttpTransport() .WithToolsFromAssembly(); ``` - Tools are auto-registered from the assembly. - Current tool groups: - `LazyBear.MCP/Services/Jira/` - `LazyBear.MCP/Services/Kubernetes/` - `Pages/` exists, but Razor Pages are not enabled in `Program.cs`. - There are no test projects by default. ### Commands - Build: `dotnet build` - Run: `dotnet run --project LazyBear.MCP` - MCP inspector: `npx @modelcontextprotocol/inspector dotnet run --project LazyBear.MCP` Use only when transport or tool registration changed. ### Config & Runtime Gotchas - Runtime URL: `http://localhost:5000` - `LazyBear.MCP/Properties/launchSettings.json` shows another port; trust `Program.cs`. - SDK pin: `LazyBear.MCP/global.json` - Main config: `LazyBear.MCP/appsettings.json` - `Jira:Url` is required for Jira tools. If missing, provider init may fail and tools may return string errors. - `Kubernetes:KubeconfigPath` may be empty. Fallback order: 1. explicit kubeconfig 2. default kubeconfig 3. in-cluster config - Never print or commit real secrets, tokens, kubeconfig contents, or private URLs. ### Working Rules - Read related files before editing. - Prefer minimal, non-breaking changes. - Reuse existing patterns; avoid new abstractions without clear need. - Verify behavior against code and config, not `README.md`. - After changes, run `dotnet build`. If MCP wiring changed, also run the inspector. - Output in Russian. Keep code in English. Keep comments and commit messages in Russian. - If the request is broad or underspecified, ask one short clarifying question first. Otherwise act on the best reasonable assumption. ### OpenCode: Question First - Before replying with a prose list of options, use OpenCode `question` whenever there are 2+ meaningful options and the user has not already chosen a direction. - Apply this aggressively for choices about architecture, config, output format, priorities, naming, and execution direction. - Skip `question` only when the request is already specific, only one valid answer exists, or the choice is cosmetic and does not affect execution. - After the user answers, continue immediately and do not restate the same options in prose. - If `question` is unavailable, ask one short plain-text question. - If a blocking choice is needed before using a subagent, ask it in the primary agent first.