Skip to content

Orient in the codebase

Goal: a fast, verified mental map of where the budget tracker computes “spent,” and everything that feeds that number.

You didn’t write this app, and you have minutes, not hours. This is the everyday reality the agent is genuinely great at, if you check its answers instead of trusting them.

Capture it: equip the agent to carry the map forward

Section titled “Capture it: equip the agent to carry the map forward”

You held the map in your head to learn it. But the agent shouldn’t re-derive it every session, and right now it’s reading this C# codebase as plain text — grepping for names instead of resolving them. A few one-time moves fix that: initialize the project, give the agent a real C# language server, have it write the project docs, then wire up the skill the next lesson needs.

  1. Install the C# language server. csharp-ls ships as a .NET global tool, so the SDK you already have installs it:

    Terminal window
    dotnet tool install -g csharp-ls
  2. Initialize the project for the agent.

    /code init

    This bootstraps the agent’s project configuration. Run it before the next step, which edits that configuration.

  3. Register the language server. Open .kiro/settings/lsp.json and add a csharp entry under "languages", alongside the ones already there (entries are comma-separated, so mind the comma):

    "csharp": {
    "name": "csharp-language-server",
    "command": "csharp-ls",
    "args": [],
    "file_extensions": ["cs"],
    "project_patterns": ["*.csproj", "*.sln"],
    "exclude_patterns": ["**/bin/**", "**/obj/**"],
    "multi_workspace": true,
    "initialization_options": {}
    }

    Now when the agent looks up where spent is computed, it can resolve the symbol — jump to the definition, list every caller — instead of guessing from text matches. project_patterns point it at the .csproj/.sln; exclude_patterns keep build output (bin/, obj/) out of the index.

  4. Generate the project docs.

    /code summary

    This scans the repo and writes project documentation: a CONTEXT.md describing the domain and structure, plus decision records under docs/adr/. With the language server live, what it writes is grounded in resolved symbols, not string matches. Skim what it produced and correct anything wrong — it’s a draft, not gospel.

  5. Set up the Matt Pocock skills.

    /setup-matt-pocock-skills

    You installed grill-me-with-docs back in Act 1 · Skills; this runs the per-project setup it needs so it can read the docs you just generated. The next lesson points /grill-me-with-docs straight at them.