home / skills / nikiforovall / claude-code-rules / dotnet-run-file

This skill lets you run C# code instantly with dotnet run file.cs, including stdin, directives, and quick scripts.

npx playbooks add skill nikiforovall/claude-code-rules --skill dotnet-run-file

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
2.8 KB
---
name: dotnet-run-file
description: Run script-like CSharp programs using dotnet run file.cs. Use this skill when users want to execute CSharp code directly, write one-liner scripts via stdin, or learn about run file directives.
---

# .NET Run Files

Run C# code directly without creating project files using .NET 10's `dotnet run file.cs` feature.

## When to Use This Skill

Use this skill when the user wants to:
- Execute C# code quickly without creating a project
- Write one-liner scripts via stdin (ideal for Claude Code)
- Learn about run file directives (`#:package`, `#:sdk`, `#:property`)
- Create executable shell scripts in C#
- Convert a run file to a full project

## Guide

For detailed examples and directives reference, load `references/guide.md`.

## Quick Reference

### Basic Execution

```bash
# Run a .cs file
dotnet run app.cs

# Run from stdin
echo 'Console.WriteLine("Hello");' | dotnet run -

# Multi-line via heredoc
dotnet run - << 'EOF'
var now = DateTime.Now;
Console.WriteLine($"Time: {now}");
EOF
```

### Directives

```csharp
#:package Humanizer@*            // NuGet package (version required, wildcards ok)
#:sdk Microsoft.NET.Sdk.Web       // SDK selection
#:property LangVersion preview    // MSBuild property
#:project ../src/MyLib            // Project reference
```

### Convert to Project

```bash
dotnet project convert app.cs
```

## Core Operations

### 1. Run a C# File

**Steps**:
1. Create a `.cs` file with your code (top-level statements supported)
2. Add directives at the top if needed (packages, SDK, properties)
3. Execute: `dotnet run filename.cs`

**Example**:
```csharp
// hello.cs
Console.WriteLine("Hello from .NET!");
```
```bash
dotnet run hello.cs
```

### 2. Execute via Stdin

**Purpose**: Run C# code without creating files - ideal for quick scripts and AI-assisted workflows.

**Patterns**:
```bash
# Simple one-liner
echo 'Console.WriteLine(Math.PI);' | dotnet run -

# With package
dotnet run - << 'EOF'
#:package Humanizer@*
using Humanizer;
Console.WriteLine(TimeSpan.FromMinutes(90).Humanize());
EOF

# Heredoc for multi-line
dotnet run - << 'EOF'
using System.Text.Json;

var obj = new { Name = "Test", Value = 42 };
Console.WriteLine(JsonSerializer.Serialize(obj));
EOF
```

## Interactive Flow

When user asks to run C# code without specifics:

1. Ask what they want to accomplish
2. Determine if stdin one-liner or file-based is better
3. For simple tasks → use stdin pattern
4. For complex tasks → create a `.cs` file
5. Add necessary directives based on requirements
6. Execute and show results

## Claude Code Integration Tips

**For AI-assisted workflows**:
- Prefer stdin for quick calculations, data transformations, API calls
- Use heredoc syntax for multi-line code
- Output JSON for easy parsing: `dotnet run script.cs | jq .`

Overview

This skill runs script-like C# programs directly using .NET 10's run-file feature. It helps you execute single-file programs, feed one-liners via stdin, and use run-file directives for packages, SDKs, and properties. Use it to prototype, script shell tasks, or convert quick scripts into full projects.

How this skill works

The skill invokes dotnet run on a .cs file or on stdin (dash -) to execute top-level statements without creating a project. It recognizes run-file directives placed at the top of the file (#:package, #:sdk, #:property, #:project) and applies the specified NuGet packages, SDK selection, and MSBuild properties. For multi-line inputs, heredoc patterns are recommended; for repeatable work you can convert a run file to a full project.

When to use it

  • Execute C# quickly without creating a project or solution
  • Run one-liner scripts or small snippets via stdin for AI-assisted workflows
  • Add NuGet packages or SDK hints via run-file directives
  • Create executable shell scripts in C# for automation
  • Convert a proof-of-concept single file into a full project when it grows

Best practices

  • Prefer stdin (dotnet run -) for short, ephemeral calculations or AI-driven snippets
  • Use heredoc (<< 'EOF') for readable multi-line inputs in scripts
  • Place directives at the top of the file to declare packages, SDK, and properties before code
  • Pin package versions when reproducibility matters; wildcards are allowed for rapid prototyping
  • Convert to a proper project (dotnet project convert) for larger codebases or when you need tighter build control

Example use cases

  • Quickly print or transform data: echo 'Console.WriteLine(DateTime.Now);' | dotnet run -
  • Use a package in a one-off script: heredoc with #:package Humanizer@* and run via dotnet run -
  • Create a C# command-line helper as an executable shell script using a .cs run file
  • Prototype API calls, then convert the working run file into a full project with dotnet project convert
  • Produce JSON output from scripts for downstream parsing: dotnet run script.cs | jq .

FAQ

Can I reference NuGet packages in a run file?

Yes. Add a directive like #:package PackageName@version at the top. Wildcards are allowed, but pin versions for reproducible runs.

When should I convert a run file to a project?

Convert when the script grows in complexity, needs tests, multiple files, or stricter build configuration. Use dotnet project convert to migrate.