# Repair Dotnet Build

> Diagnose and fix failing dotnet build or test runs. Local first; optional pasted CI logs. Use when fixing a build or invoking /repair-dotnet-build.

- Skill: `tibursocampos/repair-dotnet-build` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add tibursocampos/repair-dotnet-build`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tibursocampos/repair-dotnet-build/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tibursocampos (https://skillmd.com/u/tibursocampos)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tibursocampos/repair-dotnet-build

---


## STOP - Read before ANY tool call

1. Read `{{GUARDRAILS_PATH}}`
2. Read `_shared/sdd-artifacts/SESSION.md`; load session-state for `$Cwd`
3. If the relevant gate is not approved: **STOP** - ask user **(pt-BR)** - do **NOT** Write/Shell
4. SDD/develop skills: after **ONE** step/task, **STOP** session - handoff only
5. This skill body is **English**; user-facing prompts may be **(pt-BR)**

### Step -1 - Gate check (report in chat before continuing)

```
Gate check:
[ ] guardrails.mdc read
[ ] SESSION.md read; session-state loaded
[ ] PIPELINE.md read (SDD skills only)
[ ] User confirmed current action (sim)
-> If any unchecked: STOP
```

---

# Skill: repair-dotnet-build

## Trigger

Invoke when the user asks for: `/repair-dotnet-build`, `fix build`, `/repair-dotnet-build`, or when build/test failures block progress.

**Arguments (optional):**

| Input | Meaning |
|-------|---------|
| (none) | Run local `dotnet build` / `dotnet test` in the open workspace |
| Pasted log | Analyze the log text the user provides |
| Pasted CI log | User pastes a failed workflow / pipeline log for analysis |

Do not require an external CI build ID or any PAT.

## Outcome

Structured diagnosis, proposed fixes with rationale, fixes applied only after user confirmation, local re-validation, then handoff to `/commit` if the user wants to commit.

## Lazy-load

| When | Path |
|------|------|
| Reference index (routing only) | `skills/repair-dotnet-build/reference.md` or `{{TOOLKIT_ROOT}}/skills/repair-dotnet-build/reference.md` after sync |
| Process step detail (lazy) | `skills/repair-dotnet-build/references/<section>.md` |
| C# patterns | `{{TOOLKIT_ROOT}}/skills/_shared/dotnet-guidelines/csharp-patterns.md` |
| Caveman Mode (if active) | `{{TOOLKIT_ROOT}}/skills/_shared/caveman/CAVEMAN.md` - **Full cap** |
| Commit | `/commit` |

**Never by default:** do not preload all `references/*.md` or the full dotnet-guidelines tree. Load **one** `references/<section>.md` per Process step (`SKILL-REFERENCE-RETRIEVAL.md`).

## Process

Read `references/<section>.md` for heuristics and templates — **not** full `reference.md`.

### Step -1b - Caveman Mode (Full cap)
1. Read `{{SDD_ROOT}}/preferences.json` (create `{ "caveman_mode": false, "caveman_level": "full" }` if missing).
2. If `caveman_mode` is false: continue without compression.
3. If true: load `{{TOOLKIT_ROOT}}/skills/_shared/caveman/CAVEMAN.md`; apply **Full** participation cap + prefs `caveman_level` (Lite skills never escalate); show once: `[Caveman] Modo ativo (respostas compactas, level={effective}). Digite caveman off para desativar.`
4. Honor `caveman on|off|status|lite|full|ultra` (and `stop caveman` / `normal mode`) during the session.
5. Auto-Clarity + never-compress gates/drafts/paths per `CAVEMAN.md`.

### 0. Workspace

Confirm **target repository** (`.sln` or test projects). Summarize failure source: local run or pasted CI log.

### 1. Collect failure evidence

**Local (default):** follow `references/local-commands.md`.

```bash
dotnet build
dotnet test --no-build
```

Capture errors: file, line, test name, expected vs actual.

**Pasted log:** extract compile errors, restore failures, and test failures (`references/pasted-ci-log.md`).

**CI log (optional):** if the user pastes a GitHub Actions (or other CI) log, parse failed steps the same way (`references/ci-logs.md`). Do not fetch remote CI via CLI or API - ask for a paste when remote logs are needed.

### 2. Structured diagnosis

Present using `references/diagnosis-template.md`:

```
## Build diagnosis

**Source:** local | pasted log | GitHub Actions
**Branch:** <current branch>
**Failures:** N

### Items
1. [<category>] <summary> - <file>:<line> or <test name>
...
```

Categories: compile, restore/NuGet, test assertion, configuration, pipeline config (YAML only if user supplied log).

### 3. Root-cause investigation

For each item, Read/Grep the codebase. Apply heuristics in `references/common-causes.md` (culture, timezone, Bogus seed, fixture order, glob in CI YAML).

Load `csharp-patterns.md` only when editing production or test code.

### 4. Propose fixes

List each change: file, problem, cause, proposed fix (`references/fix-proposal.md`). **Wait for user confirmation** before Edit/Write.

### 5. Apply and validate

After approval, apply minimal diffs. Re-run:

```bash
dotnet build
dotnet test --no-build
```

Or scoped test filter when the repo is large (see `references/local-commands.md`).

### 6. Handoff

When build and targeted tests pass, offer `/commit` (`references/commit-handoff.md`, `references/related-skills.md`).

Do not auto-commit. Do not push unless the user asks via commit skill or explicitly.

## Must not

- External ALM/tracker REST, PATs, or org-specific credential stores
- Mandatory external CI API - local reproduction is enough
- Auto-commit or auto-push
- Corporate agent pool names or private feed assumptions without repo evidence

## Handoff

| Situation | Next |
|-----------|------|
| Commit on valid branch | `/commit` |
| New EF migration needed | `/ef-add-migration` |
| Large feature scope | `/sdd-spec` -> `sdd-plan` -> `sdd-develop` |

