STOP - Read before ANY tool call
- Read
{{GUARDRAILS_PATH}} - Read
_shared/sdd-artifacts/SESSION.md; load session-state for$Cwd - If the relevant gate is not approved: STOP - ask user (pt-BR) - do NOT Write/Shell
- SDD/develop skills: after ONE step/task, STOP session - handoff only
- 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)
- Read
{{SDD_ROOT}}/preferences.json(create{ "caveman_mode": false, "caveman_level": "full" }if missing). - If
caveman_modeis false: continue without compression. - If true: load
{{TOOLKIT_ROOT}}/skills/_shared/caveman/CAVEMAN.md; apply Full participation cap + prefscaveman_level(Lite skills never escalate); show once:[Caveman] Modo ativo (respostas compactas, level={effective}). Digite caveman off para desativar. - Honor
caveman on|off|status|lite|full|ultra(andstop caveman/normal mode) during the session. - 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.
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:
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 |