Spark ideas. Burn π₯ when done. It's the home π‘ for burner projects.
A CLI tool to create and manage temporary dev projects for quick experiments.
- .NET 10.0 or later
- .NET 10.0 SDK
- PowerShell (for
dev.ps1script) - Git
- Spectre.Console 0.54.0 β Rich console UI
- Spectre.Console.Cli 0.53.1 β Command-line parsing
dotnet tool install -g Burner-CLI
- Quick Scaffolding β Spin up projects instantly using predefined templates
- Import Existing Projects β Move or copy existing folders into burner home for tracking
- Organized Storage β All projects live in a unified burner directory
- Auto-Naming β Projects are prefixed with
YYMMDD-NAMEformat for easy identification - Easy Cleanup β Remove projects when done, with auto-cleaning of old experiments
- Extensible β Add your own custom templates
Create a new project from a template. Name is auto-generated if not provided.
burner new dotnet # Auto-name: dotnet-HHMMSS
burner new dotnet my-experiment # Create .NET console app
burner new web quick-test # Create HTML/JS/CSS project
burner new react my-app -d ~/code # Use custom directory
burner new svelte my-app -i # Interactive mode for promptsInteractive Mode: Some templates (like Vite-based ones) require user input during creation. Use
-ior--interactiveto enable interactive mode, or add# BURNER_INTERACTIVEto your template script for auto-detection.
List all burner projects.
burner list # List projects
burner ls # Alias
burner list -a # Show full pathsDelete projects (cleanup).
burner burn my-experiment # Delete specific project
burner burn --days 30 # Delete projects older than 30 days
burner burn -f --days 7 # Force delete without confirmation
burner burn -i # Interactive mode: select from list
burner burn --all # Delete ALL projects
burner burn --all -f # Delete ALL projects without confirmationOpen a project directory. Interactive mode if no name provided.
burner open # Interactive: select project and action
burner open -i # Interactive mode (explicit)
burner open my-experiment # Print project path
burner open my-experiment -c # Open in editor (uses configured editor)
burner open my-experiment -e # Open in file explorerImport the current folder as a burner project. By default, the folder is moved to the burner home directory with a YYMMDD- prefix added to track its age.
burner import # Move current folder to burner home
burner import -n my-project # Move with custom name
burner import --copy # Copy instead of moving
burner import -n my-project -f # Move without confirmationNote: When moving (default behavior), you'll be prompted for confirmation. The original folder will no longer exist at its current location. Use
--copyif you want to keep the original folder.
Imported projects are marked with the custom template, as they weren't created from a burner template.
View and update configuration.
burner config # Show current config
burner config --home ~/projects # Set burner home directory
burner config --templates ~/tpl # Set templates directory
burner config --auto-clean-days 60 # Set cleanup threshold
burner config --editor cursor # Set default editor (code, cursor, rider, etc.)
burner config --open-home # Open burner home in explorer
burner config --open-templates # Open templates dir in explorerList available templates (built-in and custom).
burner templatesShow project statistics with charts.
burner stats # Overview, projects by template, age distribution| Template | Description |
|---|---|
dotnet |
.NET Console Application |
web |
HTML + JS + CSS Web App |
Extend Burner with your own templates by adding executable scripts to the templates directory.
- Scripts can be written in any language (bash, PowerShell, Python, etc.)
- Must be executable from the command line
- Script filename becomes the template alias (e.g.,
react.ps1βreact) - Add
# BURNER_INTERACTIVEcomment in the first 10 lines for templates requiring user input
Burner sets these environment variables before running your template script:
| Variable | Description | Example |
|---|---|---|
BURNER_NAME |
User-provided project name | my-experiment |
BURNER_PATH |
Full path to project directory | /home/user/.burner/projects/260107-my-experiment |
BURNER_DATED_NAME |
Dated folder name | 260107-my-experiment |
The working directory is automatically set to BURNER_PATH, so you can create files directly without changing directories.
PowerShell (react.ps1):
#!/usr/bin/env pwsh
# react.ps1 - Creates a React app using Vite
Set-Location $env:BURNER_PATH
echo "y" | npm create vite@latest $env:BURNER_DATED_NAME -y -- --template react --no-rolldown
Set-Location $env:BURNER_DATED_NAME
npm installPowerShell - Interactive (svelte.ps1):
#!/usr/bin/env pwsh
# BURNER_INTERACTIVE
# svelte.ps1 - Creates a Svelte app (auto-enables interactive mode)
Set-Location $env:BURNER_PATH
npm create vite@latest . -- --template svelte-ts
npm install
npm pkg set name=$env:BURNER_NAMEBash (react.sh):
#!/bin/bash
# Creates a React app using Vite
set -e
npm create vite@latest . -- --template react
npm installPython (python.py):
#!/usr/bin/env python3
import os
name = os.environ['BURNER_NAME']
with open('main.py', 'w') as f:
f.write(f'# {name}\nprint("Hello from {name}!")\n')
with open('requirements.txt', 'w') as f:
f.write('')Burner can be configured via a config file located at ~/.burner/config.json:
{
"burnerHome": "~/.burner/projects",
"burnerTemplates": "~/.burner/templates",
"autoCleanDays": 30,
"editor": "code"
}| Option | Description | Default |
|---|---|---|
burnerHome |
Where new projects are created | ~/.burner/projects |
burnerTemplates |
Where custom template scripts are stored | ~/.burner/templates |
autoCleanDays |
Auto-remove projects older than this (0 to disable) | 30 |
editor |
Default editor command for opening projects | code |
For local development and testing, use the dev.ps1 script:
# Full test: uninstall, pack, install, and run test commands
./dev.ps1
# Just uninstall the tool
./dev.ps1 -Uninstall
# Run without reinstalling
./dev.ps1 -Run
# Skip install, just run verification
./dev.ps1 -SkipInstall