domains / research / research-project-structure / project-structure

project-structure

Skill card

combined

The two skills share the name 'project-structure' but define entirely different procedures. The first is a .NET build configuration guide covering .slnx, Directory.Build.props, and SourceLink. The second is a research code organization guide covering Python/Stata script naming, data folder hierarchies, and logging conventions. Neither is a reproduction of the other; they are distinct domain-specific standards.

Repositories

RepositoryPath
Aaronontheweb/dotnet-skillsskills/project-structure/SKILL.md
brycewang-stanford/Auto-Empirical-Research-Skillsskills/30-zirui-song-claude-skills/project-structure/SKILL.md

Other copies

RoleRepositoryPath
peerAaronontheweb/dotnet-skillsskills/project-structure/SKILL.md
peerbrycewang-stanford/Auto-Empirical-Research-Skillsskills/30-zirui-song-claude-skills/project-structure/SKILL.md

Combined skill

# Project Structure

This skill covers two distinct project structure standards. Select the section relevant to your project type.

## 1. .NET Project Structure

Use this for .NET solutions.

### Solution File (.slnx)
- Use the `.slnx` XML format for .NET 9.0.200+.
- Migrate from `.sln` using `dotnet sln migrate`.
- Do not keep both `.sln` and `.slnx` in the same repository.

### Directory.Build.props
- Place at the solution root for centralized configuration.
- Include metadata (Authors, Company, Copyright), C# settings (LangVersion, Nullable), and SourceLink configuration.
- Use `Microsoft.SourceLink.GitHub` for source linking.

## 2. Research Project Structure

Use this for empirical research projects using Python and Stata.

### Directory Layout
- `Code/`: Analysis scripts and logs.
- `Data/`: Subfolders for `Raw/`, `Intermediate/`, and `Clean/`.
- `Results/`: Subfolders for `Tables/` and `Figures/`.

### Script Naming
- **Data Processing:** `[Number]_[Descriptive].py` (e.g., `0_ExtractData.py`).
- **Analysis:** `AN_[Number]_[Descriptive].py` or `.do` (e.g., `AN_1_DescribeSample.py`).

### Script Patterns
- **Python:** Include a `get_project_root()` function for path management.
- **Stata:** Define global paths for data and results, and use `log using` to save logs to `Code/LogFiles/`.