Install
$ agentstack add skill-gaelic-ghost-socket-bootstrap-solution ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
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-shapewhen 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
dotnet newdocumentationglobal.jsondocumentationdotnet builddocumentationdotnet testdocumentation
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
- Inspect the target:
- existing files
- git state
.slnor.slnxglobal.jsonDirectory.Build.props.fsprojor.csproj
- Confirm the project shape and language.
- Choose SDK behavior:
- use existing
global.jsonwhen present - add
global.jsonwhen reproducibility matters and the user accepts the SDK pin - avoid inventing a machine-local SDK path
- Create projects with the
dotnetCLI. - Add project references.
- Add tests when the project has behavior worth preserving. Use the existing repo test framework if one exists; otherwise default new scaffolds to xUnit.
- Run validation.
- 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
.fsprojafter 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:
Created or planned layout: solution, source projects, test projects.Language: F#, C#, or mixed.SDK behavior: existing SDK, pinned SDK, or not pinned.Commands: exact commands run or recommended.Validation: restore, build, test, or pack results.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 for a commit or the active repo workflow calls for one.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: gaelic-ghost
- Source: gaelic-ghost/socket
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.