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-fileReview the files below or copy the command above to add this skill to your agents.
---
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 .`
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.
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.
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.