# project-structure

A skill that hands your coding agent a fixed layout for .NET solutions: where projects live, how shared build settings and package versions are wired.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 536 installs · ★ 86
- Author: wshaddix
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/wshaddix/dotnet-skills/tree/HEAD/skills/project-structure/SKILL.md
- Updated: 2026-02-27
- HTML: https://affpapa.org/en/nevibecode/skills/wshaddix-project-structure

## What it does

The skill spells out how a .NET repo should be arranged. Source code goes under `src/`, tests under `tests/`, one project per concern such as Core, Infrastructure and API, the solution file sits at the root, and shared build configuration lives there too. Your agent follows those rules instead of inventing its own.

A chunk of it covers solution file formats. The `.slnx` format is XML, so it reads cleanly and produces far fewer merge conflicts, but it needs .NET 9+ SDK or Visual Studio 17.13+. You can move an existing `.sln` over with `dotnet sln MySolution.sln migrate`. Keeping both files around in one repo is asking for trouble.

The rest is shared configuration: `Directory.Build.props` for language settings and SourceLink, `Directory.Build.targets` for analyzers, and `Directory.Packages.props` for central package management. Nested `Directory.Build.props` files do not pull in the outer one on their own, so you import it by hand. If package versions are already scattered across your `.csproj` files, expect to move to central management in steps.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add wshaddix/dotnet-skills --skill project-structure -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/project-structure/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/project-structure/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add wshaddix/dotnet-skills --skill project-structure -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/project-structure/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add wshaddix/dotnet-skills --skill project-structure -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/project-structure/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install wshaddix/dotnet-skills project-structure
```

2. **Manually: put the files in place**
- File: `.github/skills/project-structure/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add wshaddix/dotnet-skills --skill project-structure -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/wshaddix/dotnet-skills --path skills/project-structure
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/project-structure/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add wshaddix/dotnet-skills --skill project-structure -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/wshaddix/dotnet-skills/tree/HEAD/skills/project-structure/SKILL.md

## When to use it
- lay out a fresh .NET repo with `src/` and `tests/`
- migrate a solution from `.sln` to `.slnx`
- move shared build settings into `Directory.Build.props`
- collect NuGet versions in `Directory.Packages.props`
- wire up SourceLink for debugging and symbols

## Example prompts
- Set up this .NET repo using the layout from the skill: `src/`, `tests/`, solution file at the root
- Configure central package management with `Directory.Packages.props`
- Migrate the solution to `.slnx` and make sure the old `.sln` file is gone

## Similar
- [mcp-builder](https://affpapa.org/en/nevibecode/skills/mcp-builder.md) — skill · 130949 installs
- [claude-api](https://affpapa.org/en/nevibecode/skills/claude-api.md) — skill · 74198 installs
- [lark-im](https://affpapa.org/en/nevibecode/skills/lark-im.md) — skill · 472900 installs
- [lark-event](https://affpapa.org/en/nevibecode/skills/lark-event.md) — skill · 466800 installs
- [caveman-discover](https://affpapa.org/en/nevibecode/skills/caveman-discover.md) — skill · 104400 installs
- [migration](https://affpapa.org/en/nevibecode/skills/migration.md) — skill · 103900 installs

## Other versions with the same name
- [project-structure · codewithmukesh](https://affpapa.org/en/nevibecode/skills/project-structure.md) — 2800 installs
- [project-structure · modelcontextprotocol](https://affpapa.org/en/nevibecode/skills/modelcontextprotocol-project-structure.md) — ★ 91547

From the same set: [wshaddix/dotnet-skills](https://affpapa.org/en/nevibecode/by/wshaddix/dotnet-skills.md) — 13 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
