See katas from here https://kata-log.rocks
This repository is a small workspace for practicing coding katas in C#.
It gives you two things:
- A reusable kata template under
templates/ - Scripts that create a fresh kata under
katas/with the right folder names, solution names, project names, and namespaces
The goal is to make starting a new kata fast and repeatable so you can spend your time solving the problem instead of setting up files by hand.
The repository is organized into two main folders:
templates/contains reusable starter templateskatas/contains the actual katas you create and work on
Right now, the main template is templates/csharp-kata.
At the repository root you will also find two helper scripts:
new-kata.ps1for PowerShellnew-kata.shforsh-compatible shells
Both scripts create a new kata from the same template and apply the same naming rules.
You can create a new kata in either interactive or non-interactive mode.
Interactive:
.\new-kata.ps1Non-interactive:
.\new-kata.ps1 -Name "Bowling Game" -Description "# Bowling Game"Interactive:
sh ./new-kata.shNon-interactive:
sh ./new-kata.sh "Bowling Game" "# Bowling Game"After the script runs, a new kata will be created under katas/<slug>.
For example, Bowling Game becomes:
- folder:
katas/bowling-game - solution:
BowlingGame.slnx - main project:
BowlingGame - test project:
BowlingGame.Tests
Once a kata has been created:
- Open the generated folder under
katas/ - Open the solution in your editor or IDE
- Run the tests
- Start solving the kata
Example:
Set-Location .\katas\bowling-game
dotnet test .\BowlingGame.slnxOr, if you prefer continuous test runs:
dotnet watch testEach generated kata is self-contained, so you can work on one without affecting the others.
The scripts apply a small set of predictable rules:
- Kata names may contain only letters, numbers, spaces, and hyphens
- The generated folder name uses a lowercase slug
- The generated .NET solution, project, and namespace names use PascalCase
- If the destination folder already exists, the script stops and makes no changes
bin/andobj/folders from the template are not copied into new katas
Examples:
Prime Factorsbecomeskatas/prime-factorsandPrimeFactorsString Calculatorbecomeskatas/string-calculatorandStringCalculator
When you create a kata, the README behaves in one of two ways:
- If you provide a description, it replaces the full generated
README.md - If you leave the description empty, the template
README.mdis kept as-is
This makes it easy to either:
- start quickly with the default template instructions, or
- drop in your own kata prompt immediately
The current C# template is intentionally small. It gives you:
- a solution file
- a main class library project
- a test project using xUnit
- a placeholder class and test
That keeps the setup lightweight while still giving you a clean red-green workflow from the start.