Skip to content
Development
Skill

/bootstrap-solution

Bootstrap or guide a reproducible .NET solution with explicit F# or C# language choice, SDK selection, project layout, test project setup, and initial validation commands.

From plugin
socket
9200 skills5 MCP

Claude Code

$ npx -y skills add gaelic-ghost/socket --skill bootstrap-solution --agent claude-code

SKILL.md

bootstrap-solution.SKILL.md
name: bootstrap-solution
description: Bootstrap or guide a reproducible .NET solution with explicit F# or C# language choice, SDK selection, project layout, test project setup, and initial validation commands.
license: Apache-2.0
compatibility: Designed for Codex and compatible Agent Skills clients working with .NET SDK, F#, C#, and the dotnet CLI on macOS or other supported .NET development environments.
metadata:
  owner: gaelic-ghost
  repo: socket
  category: dotnet-bootstrap
allowed-tools: Read Bash(rg:*) Bash(git:*) Bash(dotnet:*)

Bootstrap .NET Solution

Purpose

Create or guide a reproducible .NET solution scaffold without making C# the silent default.

The user should leave with a clear project layout, explicit F# or C# choice, predictable SDK behavior, and validation commands that prove the scaffold works.

When To Use

  • Use this skill when creating a new .NET solution or project.
  • Use this skill when adding a test project to an existing .NET repository.
  • Use this skill when a repo needs `global.json`, solution-level layout, or explicit validation commands.
  • Use this skill after `dotnet:choose-project-shape` when the project shape is settled.

Source Check

Use repo-local .NET files, checked-out dependency sources, Dash MCP or Dash HTTP for installed .NET docsets, and then official Microsoft documentation when Dash/local coverage is missing or stale:

  • [.NET CLI documentation](https://learn.microsoft.com/dotnet/core/tools/)
  • [`dotnet new` documentation](https://learn.microsoft.com/dotnet/core/tools/dotnet-new)
  • [`global.json` documentation](https://learn.microsoft.com/dotnet/core/tools/global-json)
  • [`dotnet build` documentation](https://learn.microsoft.com/dotnet/core/tools/dotnet-build)
  • [`dotnet test` documentation](https://learn.microsoft.com/dotnet/core/tools/dotnet-test)

Check the local SDK only when implementation actually needs it:

dotnet --info
dotnet --list-sdks

Required Inputs

  • target path
  • project or solution name
  • project shape
  • language: F#, C#, or mixed
  • test project expectation
  • test framework expectation; default to xUnit for new scaffolds unless the repo or user chooses another framework
  • SDK pinning expectation
  • git initialization or commit expectation

If the user has not selected F# or C#, ask before scaffolding.

Guidance Workflow

1. Inspect the target:

  • existing files
  • git state
  • `.sln` or `.slnx`
  • `global.json`
  • `Directory.Build.props`
  • `.fsproj` or `.csproj`

2. Confirm the project shape and language. 3. Choose SDK behavior:

  • use existing `global.json` when present
  • add `global.json` when reproducibility matters and the user accepts the SDK pin
  • avoid inventing a machine-local SDK path

4. Create projects with the `dotnet` CLI. 5. Add project references. 6. Add tests when the project has behavior worth preserving. Use the existing repo test framework if one exists; otherwise default new scaffolds to xUnit. 7. Run validation. 8. Report the generated paths and exact commands.

Command Recipes

These recipes use xUnit intentionally. It is the recommended default for new scaffolds in this plugin because it is a common .NET CLI test template and Microsoft documents `dotnet test` workflows with xUnit examples. Preserve existing repo test-framework choices when adding to an established repository.

F# console app with tests:

dotnet new sln --name MyTool
dotnet new console --language "F#" --name MyTool --output src/MyTool
dotnet new xunit --language "F#" --name MyTool.Tests --output tests/MyTool.Tests
dotnet sln add src/MyTool/MyTool.fsproj
dotnet sln add tests/MyTool.Tests/MyTool.Tests.fsproj
dotnet add tests/MyTool.Tests/MyTool.Tests.fsproj reference src/MyTool/MyTool.fsproj
dotnet test

C# console app with tests:

dotnet new sln --name MyTool
dotnet new console --language "C#" --name MyTool --output src/MyTool
dotnet new xunit --language "C#" --name MyTool.Tests --output tests/MyTool.Tests
dotnet sln add src/MyTool/MyTool.csproj
dotnet sln add tests/MyTool.Tests/MyTool.Tests.csproj
dotnet add tests/MyTool.Tests/MyTool.Tests.csproj reference src/MyTool/MyTool.csproj
dotnet test

Library package shape:

dotnet new sln --name MyLibrary
dotnet new classlib --language "F#" --name MyLibrary --output src/MyLibrary
dotnet new xunit --language "F#" --name MyLibrary.Tests --output tests/MyLibrary.Tests
dotnet sln add src/MyLibrary/MyLibrary.fsproj
dotnet sln add tests/MyLibrary.Tests/MyLibrary.Tests.fsproj
dotnet add tests/MyLibrary.Tests/MyLibrary.Tests.fsproj reference src/MyLibrary/MyLibrary.fsproj
dotnet test

Use C# by changing `--language "F#"` to `--language "C#"` and project extensions from `.fsproj` to `.csproj`.

F# Specific Checks

  • Confirm file order in `.fsproj` after adding files.
  • Prefer explicit modules and domain types over class-shaped code unless interop calls for classes.
  • Keep examples idiomatic instead of direct translations from C#.

C# Specific Checks

  • Enable or preserve nullable reference type behavior when the repo already uses it.
  • Respect existing analyzer and warnings-as-errors settings.
  • Keep examples idiomatic instead of pretending C# is the only .NET shape.

Output Shape

Return:

1. `Created or planned layout`: solution, source projects, test projects. 2. `Language`: F#, C#, or mixed. 3. `SDK behavior`: existing SDK, pinned SDK, or not pinned. 4. `Commands`: exact commands run or recommended. 5. `Validation`: restore, build, test, or pack results. 6. `Next skill`: implementation or testing handoff.

Guardrails

  • Do not scaffold into a non-empty directory without checking the user's intent.
  • Do not silently choose C#.
  • Do not add a scaffolding script for this first slice; this skill is guidance-only.
  • Do not replace an existing test framework with xUnit unless the user explicitly asks for that migration.
  • Do not publish packages.
  • Do not commit generated files unless the user asks
Read more
@gaelic-ghost
Ships withsocket

Stuff for Agents on macOS Promo audio: Socket Codex Marketplace Promo

9200 skills5 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
9
Star history of gaelic-ghost/socket on GitHub, a chart by star-history.com

Other skills on socket.

orchestrate-agent-work

orchestrate-agent-work

Coordinate bounded worker tasks with a launch envelope, report-back, escalation, and synthesis contract. Use before spawning,…

@gaelic-ghost@gaelic-ghostInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about bootstrap-solution.

Which coding agents can use bootstrap-solution?
bootstrap-solution installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.