Skip to content
CAI
Software that uses CAICheck a score

ChrisPritchard/FSH

55.5

Adequate · 17 September 2026

953

lines of production code

F#

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

FSH is a command-line interactive shell for F\# that integrates the F\# Interactive engine to allow users to execute code expressions and run external processes. It provides standard shell capabilities such as file navigation, command execution, and input/output redirection, enhanced by features like tab completion and syntax highlighting. The system includes a custom line parser with support for multiline input and is supported by unit tests for its parsing logic.

Features

Initial release of FSH, an interactive F\# shell

This change introduces the core source files for FSH, a command-line shell that integrates the F\# Interactive (FSI) engine. Users can now execute F\# code expressions and interactions, run external processes, and use built-in shell commands such as cd, dir, rm, cp, and mv. The shell features a custom line reader with tab completion for files, directories, and commands, supports multiline input, and provides colored syntax highlighting for commands, code, and arguments. Output is handled via piping and file redirection (\>, \>\>), with error handling for unauthorized access and process launch failures.

src · high confidence

Behavioural changes

FSH shell renamed from SymeNet with .NET 6 upgrade and expanded documentation

The project has been renamed from SymeNet to FSH (F\# Shell) and updated to target .NET 6, following a previous upgrade to .NET 5. The solution structure now explicitly includes a test project (FSH.Tests) alongside the main source, and the README has been significantly expanded to document basic interactions, piping, F\# interactive integration, and known issues on Unix systems. The license copyright year was also updated to 2021.

(repo-wide) · high confidence

Test coverage

Added unit tests for LineParser parts and tokens

Added new test files \LineParser.Parts.fs\ and \LineParser.Tokens.fs\ to verify the parsing logic for line parts and tokens. The tests cover scenarios such as parsing blank inputs, single and multiple words, quoted strings, nested brackets, escaped characters, whitespace handling, command arguments, pipe operators, and whitespace tokens.

test · high confidence

Dependencies

Upgrade to .NET 6 and add F\# Shell test project

The F\# Shell project has been upgraded to target .NET 6.0, with the main application and the new test project both specifying this framework. The main project now includes runtime identifiers for Windows, Linux, and macOS, and references FSharp.Compiler.Service version 26.0.1. A new test project has been added, utilizing xUnit, Microsoft.NET.Test.Sdk, and FsUnit, to support unit testing of the shell's line parser components.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 55.

Lenses

  • Code Health 84
  • Architecture 100
  • Maturity 47
  • Readiness 41
  • Security 94

Changes since last survey

  • 226 commits — 198 feature/other, 28 fixes

By area

  • (root) — 110 commits
  • src/LineReader.fs — 25 commits
  • src/Program.fs — 18 commits
  • src/Builtins.fs — 17 commits
  • src/LineParser.fs — 10 commits
  • src/Terminal.fs — 9 commits
  • src/FSH.fsproj — 7 commits
  • (repo) — 6 commits
  • src/LineWriter.fs — 6 commits
  • src/Model.fs — 6 commits
  • src/Interactive.fs — 4 commits
  • src/Constants.fs — 3 commits
  • src/Common.fs — 2 commits
  • src/External.fs — 1 commit
  • test/FSH.Tests.fsproj — 1 commit
  • test/Terminal.Parts.fs — 1 commit

Notable commits

  • fix: Added a note about the temp fix
  • fix: Fix for issue #2: strings and chars inside a code token now allow parentheses without breaking the code token as a whole
  • fix: Fix for issue #3: line breaks are now parsed properly (fingers crossed)
  • fix: Fix for issue #5: if the last token is a process, it is run without its outs redirected
  • fix: Fixed a delete bug, and added a new sample to readme
  • fix: Fixed up sample code
  • fix: Merge pull request #13 from ChrisPritchard/terminal-fixes
  • fix: New version number with fixes for #15
  • fix: Renamed to FSH, and fixed process not found handling
  • fix: bug fix for newline printing on commands
  • fix: bugfix for issue #4: the errors in the lastResult are no longer swallowed
  • fix: bugfix for line adjust with newline
  • fix: bugfix for multiline history muddling the input
  • fix: cd \ is now supported on windows. fix for issue #16
  • fix: feature: Add support for cd ~, fixes #21
  • fix: fixed backspace
  • fix: fixed bug in command parsing
  • fix: fixed bug with making builtins private
  • fix: fixed bug with trailing commands being trimmed during arg pickup
  • fix: fixed tabbing
  • …and 206 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

ChrisPritchard/FSH was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 17 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 01f04867c6c9794a494a7ddd69ee4c896ccdb53f — the exact code this score is about.
  • Scored under rubric-2026.09.13 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-d1ef6c0bd534.