Use F Interactive (dotnet fsi) for .NET exploration, scriptable experiments, package-backed .fsx workflows, quick data transforms, and reproducible command-line probes.

MITAuto-check passed

Install Fsi

skills CLI
$ npx skills add managedcode/dotnet-skills --skill fsi -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install managedcode/dotnet-skills fsi --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/managedcode/dotnet-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/catalog/Tools/FSharp/skills/fsi .claude/skills/fsi && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
fsi
GitHub stars
486
Token cost
~1.7k tokens
SKILL.md length
570 words
Files
2
Skills in repo
81
Repo updated
First seen
Licence
MIT

At a glance

Use F Interactive (dotnet fsi) for .NET exploration, scriptable experiments, package-backed .fsx workflows, quick data transforms, and reproducible command-line probes.

  • Works in 5 steps: Decide whether the request is a… → Put repeatable work in an .fsx file… → Keep package references pinned when the… → …
  • R nuget references
  • SKILL.md covers Trigger On, Do Not Use For, Quick Start and Workflow, plus 6 more sections
  • Calls dotnet

What it does

Fsi is an agent skill from managedcode/dotnet-skills. Use F Interactive (dotnet fsi) for .NET exploration, scriptable experiments, package-backed .fsx workflows, quick data transforms, and reproducible command-line probes. USE FOR: .fsx scripts, F REPL work, r nuget references, load composition, interactive type exploration, and small strongly typed experiments before moving code into a project. DO NOT USE FOR: production application code that needs compiled project structure; C scripting; long-lived automation better expressed as a normal CLI, test, or build…

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `manifest.json`). Compatibility notes: Requires a .NET SDK with dotnet fsi; NuGet-backed scripts may need package restore and trusted package sources.

It works with .NET and C#. The repository describes itself as: Installable .NET skill catalog and CLI for Codex, Claude Code, GitHub Copilot, and Gemini. The licence is MIT.

When your agent uses it

  • R nuget references
  • Load composition
  • Interactive type exploration
  • Small strongly typed experiments before moving code into a project

Example prompts

  • “/fsi”

Requirements

  • Compatibility (from SKILL.md): Requires a .NET SDK with `dotnet fsi`; NuGet-backed scripts may need package restore and trusted package sources.

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Decide whether the request is a disposable REPL probe, a repeatable .fsx script, or code that should be promoted to a compiled F# project.
  2. Put repeatable work in an .fsx file immediately. Add all required #r, #load, open, input path, and package source directives to the script…
  3. Keep package references pinned when the script should be reproducible, and use only trusted NuGet feeds or local feeds derived from…
  4. Run the script with dotnet fsi from a clean shell, passing the same arguments the user or CI will use.
  5. Promote the script to an .fsproj when it needs tests, distribution, project references, or long-term CI coverage.

What it can do on your machine

Read from SKILL.md and the folder at commit 535dd55. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • dotnet

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • learn.microsoft.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires a .NET SDK with `dotnet fsi`; NuGet-backed scripts may need package restore and trusted package sources.

    From compatibility in the SKILL.md frontmatter.

Context cost

Fsi loads about 1.7k tokens when it runs. Until then it costs about 163 tokens; SKILL.md has 570 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~163
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from managedcode/dotnet-skills at commit 535dd55, republished under its MIT licence (© managedcode). 570 words, ~1,663 tokens.

Download SKILL.mdSave it as .claude/skills/fsi/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
fsi
description
Use F# Interactive (`dotnet fsi`) for .NET exploration, scriptable experiments, package-backed .fsx workflows, quick data transforms, and reproducible command-line probes. USE FOR: .fsx scripts, F# REPL work, #r nuget references, #load composition, interactive type exploration, and small strongly typed experiments before moving code into a project. DO NOT USE FOR: production application code that needs compiled project structure; C# scripting; long-lived automation better expressed as a normal CLI, test, or build target. INVOKES: run dotnet fsi, edit .fsx scripts, load project or source files, and validate snippets against the target SDK.
compatibility
Requires a .NET SDK with `dotnet fsi`; NuGet-backed scripts may need package restore and trusted package sources.

F# Interactive

Trigger On

  • the task asks for F# Interactive, FSI, .fsx, or dotnet fsi
  • a quick typed experiment is needed before changing compiled project code
  • a script should reference NuGet packages directly with #r "nuget: ..."
  • an investigation needs quick access to F# type inference, pattern matching, or pipelines
  • a repeatable one-file probe is better than a temporary project

Do Not Use For

  • long-lived application code that needs a compiled .fsproj
  • production automation that should be versioned as a CLI, test project, or build target
  • C# script work
  • package restore from untrusted sources

Quick Start

Run an interactive REPL:

bash
dotnet fsi

Run a script:

bash
dotnet fsi scripts/check.fsx

Create a Unix executable script when that fits the repo:

fsharp
#!/usr/bin/env -S dotnet fsi

printfn "Hello from FSI"
bash
chmod +x scripts/check.fsx
./scripts/check.fsx

On Windows, run scripts with dotnet fsi scripts/check.fsx.

Workflow

  1. Decide whether the request is a disposable REPL probe, a repeatable .fsx script, or code that should be promoted to a compiled F# project.
  2. Put repeatable work in an .fsx file immediately. Add all required #r, #load, open, input path, and package source directives to the script instead of relying on hidden REPL state.
  3. Keep package references pinned when the script should be reproducible, and use only trusted NuGet feeds or local feeds derived from __SOURCE_DIRECTORY__.
  4. Run the script with dotnet fsi from a clean shell, passing the same arguments the user or CI will use.
  5. Promote the script to an .fsproj when it needs tests, distribution, project references, or long-term CI coverage.

Current Upstream Notes

  • The September 2026 F# Interactive reference keeps dotnet fsi as the supported command-line entry point for interactive sessions and .fsx scripts; it does not turn hidden REPL state into a reproducible workflow.
  • Use repeatable .fsx files with explicit #r "nuget: ..." and #load directives once an experiment affects a repository task; do not rely on hidden REPL state.

Interactive Session Rules

  • End REPL submissions with ;;.
  • Multi-line input is allowed; FSI evaluates when it receives ;;.
  • Previously evaluated values stay in the session, so do not rely on hidden session state in scripts.
  • Use .fsx files for repeatability once an experiment matters.
fsharp
let square x = x * x;;

[ 1 .. 5 ] |> List.map square;;
Show full SKILL.md (229 more words)Show less

Script Patterns

Read And Summarize Text

Use ordinary .NET APIs directly from F# scripts.

fsharp
open System
open System.IO

let summarize path =
    File.ReadLines path
    |> Seq.filter (String.IsNullOrWhiteSpace >> not)
    |> Seq.countBy (fun line -> line.Split(' ')[0])
    |> Seq.sortByDescending snd
    |> Seq.truncate 10
    |> Seq.toList

for key, count in summarize "input.log" do
    printfn $"{key}: {count}"
Write A Checked Output File

Keep script outputs deterministic and fail early when required inputs are missing.

fsharp
open System
open System.IO

let input = "data/items.txt"
let output = "artifacts/items.normalized.txt"

if not (File.Exists input) then
    failwith $"Missing input file: {input}"

Directory.CreateDirectory(Path.GetDirectoryName output) |> ignore

File.ReadLines input
|> Seq.map (fun line -> line.Trim())
|> Seq.filter (String.IsNullOrWhiteSpace >> not)
|> Seq.distinct
|> Seq.sort
|> fun lines -> File.WriteAllLines(output, lines)
Reference NuGet Packages

Pin package versions for repeatable scripts. Only use package sources the repo trusts.

fsharp
#r "nuget: Newtonsoft.Json, 13.0.3"

open Newtonsoft.Json

let payload = {| Name = "Ada"; Kind = "sample" |}
let json = JsonConvert.SerializeObject(payload)

printfn $"{json}"

FSI does not use referenced package build targets during restore by default. Enable them only when a trusted package requires them; pin the version and test from a fresh process:

fsharp
#r "nuget: FSharp.Data, 6.6.0, usepackagetargets=true"

Keep usepackagetargets=false or omit the option for ordinary references. This controls package restore behavior; it does not turn an .fsx script into a compiled project.

Use #i only when an additional feed is required. Local feed paths must be absolute; construct them from __SOURCE_DIRECTORY__ instead of committing personal paths.

fsharp
let localFeed =
    System.IO.Path.Combine(__SOURCE_DIRECTORY__, "../artifacts/packages")
    |> System.IO.Path.GetFullPath

#i $"nuget: {localFeed}"
Split Scripts With Load

#load evaluates another script and exposes it through the generated module name.

fsharp
// MathHelpers.fsx
let square x = x * x
fsharp
// Check.fsx
#load "MathHelpers.fsx"
open MathHelpers

printfn $"%d{square 12}"

Promote To A Project

Move from FSI to a compiled project when:

  • the script has multiple dependencies, tests, or distribution needs
  • startup time or restore behavior matters
  • C# or other .NET callers need a stable assembly
  • the code needs CI coverage beyond a smoke run

Start with:

bash
dotnet new console -lang "F#" -o tools/Probe
dotnet build tools/Probe/Probe.fsproj

Validate

Use the simplest command that proves the script still runs:

bash
dotnet fsi scripts/check.fsx
dotnet fsi scripts/check.fsx -- arg1 arg2

For scripts that reference packages, run from a clean shell at least once so hidden REPL state cannot mask missing #r, #load, or open directives.

Sources

© managedcode, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in catalog/Tools/FSharp/skills/fsi of managedcode/dotnet-skills.

  • SKILL.md
  • manifest.json

Open the folder on GitHubat commit 535dd55

Compare with similar skills

Fsi next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Fsi compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Fsi this skillmanagedcode/dotnet-skills486—~1.7kAutomated safety check: PassMIT
Minimax DOCXpoco-ai/poco-claw1.4k7 repos~3.9kAutomated safety check: PassMIT
Speckit ConstitutionWeihanLi/WeihanLi.Common24211 repos~2.1kAutomated safety check: PassApache-2.0
Analyzing .NET Performancedotnet/skills5.6k3 repos~3.1kAutomated safety check: PassMIT
Add Analyzerdotnet/roslynator3.5k—~1.3kAutomated safety check: PassCustom licence
GitVersion .NET DevelopmentGitTools/GitVersion3.1k—~1.7kAutomated safety check: PassMIT

Similar skills

  • Minimax DOCX

    poco-ai/poco-claw

    Professional DOCX document creation, editing, and formatting using OpenXML SDK (.NET).

    1.4k GitHub starsUsed in 7 repos~3.9k tokens
    Documents & OfficeAuto-check passed
  • Speckit Constitution

    WeihanLi/WeihanLi.Common

    Create or update the project constitution from interactive or provided principle inputs, ensuring all dependent templates stay in sync.

    242 GitHub starsUsed in 11 repos~2.1k tokens
    DevelopmentAuto-check passed
  • Official

    Scans C# and .NET code for about 50 performance anti-patterns and reports prioritized findings with concrete fixes, at a scan depth you choose.

    5.6k GitHub starsUsed in 3 repos~3.1k tokens
    DevelopmentAuto-check passed
  • Add Analyzer

    dotnet/roslynator

    Official

    A skill your agent uses when adding a new RCS diagnostic in roslynator (RCS0 formatting, RCS1 general, RCS9 code-analysis), wiring roslynator EditorConfig options, or when docs say CHANGELOG.md…

    3.5k GitHub stars~1.3k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • GitVersion .NET Development

    GitTools/GitVersion

    Gives repository-specific .NET guidance for GitVersion: build and test commands, central package management, project layout and coding conventions.

    3.1k GitHub stars~1.7k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Code Review

    dotnet/macios

    Official

    Review dotnet/macios PRs against established rules. An agent skill from dotnet/macios.

    2.9k GitHub stars~1.7k tokensUpdated today
    DevelopmentAuto-check passed

More from managedcode/dotnet-skills

All 81 skills in this repo
  • Analyzer Config

    managedcode/dotnet-skills

    Use a repo-root .editorconfig to configure free .NET analyzer and style rules.

    486 GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Archunitnet

    managedcode/dotnet-skills

    Use the open-source free ArchUnitNET library for architecture rules in .NET tests.

    486 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Aspire

    managedcode/dotnet-skills

    Build, upgrade, and operate Aspire 13.5.x C or TypeScript application hosts with the current CLI, AppHost, ServiceDefaults, integrations, dashboard, testing, MCP, and deployment patterns for…

    486 GitHub stars~3.6k tokensUpdated today
    Auto-check passed
  • Aspnet Core

    managedcode/dotnet-skills

    Build, debug, modernize, or review ASP.NET Core applications with correct hosting, middleware, security, configuration, logging, and deployment patterns on current .NET.

    486 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Asynkron Profiler

    managedcode/dotnet-skills

    Use the open-source free Asynkron.Profiler dotnet tool for CLI-first CPU, allocation, exception, contention, and heap profiling of .NET commands or existing trace artifacts.

    486 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Azure Functions

    managedcode/dotnet-skills

    Build, review, or migrate Azure Functions in .NET with correct execution model, isolated worker setup, bindings, DI, and Durable Functions patterns.

    486 GitHub stars~2.6k tokensUpdated today
    Auto-check passed

Works with

Questions about Fsi

What does Fsi do?

Use F Interactive (dotnet fsi) for .NET exploration, scriptable experiments, package-backed .fsx workflows, quick data transforms, and reproducible command-line probes. Fsi is an agent skill from managedcode/dotnet-skills.fsx workflows, quick data transforms, and reproducible command-line probes.

When should I use Fsi?

Fsi fits situations like: R nuget references; load composition; interactive type exploration; small strongly typed experiments before moving code into a project.

How do I install Fsi in Claude Code?

Run `npx skills add managedcode/dotnet-skills --skill fsi -a claude-code`. Or copy the skill folder (catalog/Tools/FSharp/skills/fsi in managedcode/dotnet-skills) into .claude/skills/fsi in your project. Claude Code loads it when a task matches its description.

How do I install Fsi in Codex?

Run `npx skills add managedcode/dotnet-skills --skill fsi -a codex`. Or copy the skill folder (catalog/Tools/FSharp/skills/fsi in managedcode/dotnet-skills) into .agents/skills/fsi in your project. Codex loads it when a task matches its description.

Can I use Fsi in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add managedcode/dotnet-skills --skill fsi -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fsi, .gemini/skills/fsi, .github/skills/fsi and .opencode/skills/fsi in your project.

What does Fsi need to run?

Going by SKILL.md and its folder, Fsi needs the command-line tools its instructions call (dotnet). Compatibility (from SKILL.md): Requires a .NET SDK with `dotnet fsi`; NuGet-backed scripts may need package restore and trusted package sources..

Does Fsi access the network?

SKILL.md names 1 domain. As links in the text: learn.microsoft.com. This is read from the text; nothing was executed.

Is Fsi safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Fsi use?

Fsi is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Fsi use?

About 1.7k tokens (SKILL.md is roughly 6.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Fsi?

Skills that share tags, products or a category with Fsi: Minimax DOCX (poco-ai/poco-claw, 1.4k stars), Speckit Constitution (WeihanLi/WeihanLi.Common, 242 stars), Analyzing .NET Performance (dotnet/skills, 5.6k stars) and Add Analyzer (dotnet/roslynator, 3.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Fsi?

managedcode (a GitHub organization) maintains it in managedcode/dotnet-skills, which has 486 GitHub stars. The repository holds 81 skills in this directory. The repository was last updated on October 7, 2026.

Source: managedcode/dotnet-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.