Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,5 @@ validation-report.json
# Folders to ignore
node_modules
Gemfile.lock
vendor/bundle
.bundle
6 changes: 6 additions & 0 deletions _posts/2020-10-05-creating-a.net-core-global-tool.md
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,12 @@ jobs:
PACKAGE_NAME: solrevdev.seedfolder
```

**Update: SeedFolder Evolution** ⚡

Since writing this post, SeedFolder has evolved significantly from a simple folder creator to a comprehensive project scaffolding system with support for multiple programming languages and frameworks.

Read about this transformation in my follow-up post: [Evolving SeedFolder with GitHub Copilot](/2025/08/20/evolving-seedfolder-with-github-copilot.html), which details how AI-assisted development accelerated the tool's growth from 7 dotfiles to a full multi-template system supporting .NET, Node.js, Python, Ruby, and more.

**Find More** 🔍

Now that you have built and published a .NET Core Global Tool you may wish to find some others for inspiration.
Expand Down
263 changes: 263 additions & 0 deletions _posts/2025-08-20-evolving-seedfolder-with-github-copilot.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,263 @@
---
layout: post
title: Evolving SeedFolder with GitHub Copilot
description: How GitHub Copilot accelerated the evolution of my .NET Global Tool from a simple folder generator to a comprehensive project scaffolding system
tags:
- dotnet-global-tools
- github-copilot
- ai-development
- dotnetcore
- developer-tools

---
**Overview** ☀

Five years ago, I created [SeedFolder](https://github.com/solrevdev/seedfolder) - a simple .NET Global Tool that created folders with basic dotfiles. What started as a personal productivity tool to quickly scaffold project directories has evolved into a comprehensive project templating system, and GitHub Copilot has been instrumental in accelerating this transformation.

This post chronicles the evolution of SeedFolder and demonstrates how AI-assisted development can enhance both productivity and code quality in real-world projects.

**The Journey from Simple to Sophisticated** 🌱

When I [first wrote about creating SeedFolder in 2020](/2020/10/05/creating-a.net-core-global-tool.html), it was a straightforward tool that solved a simple problem: creating consistently named folders with a handful of dotfiles. The original version would:

- Create folders with date prefixes (`2020-09-29_project-name`)
- Copy 7 essential dotfiles (`.gitignore`, `.editorconfig`, etc.)
- Focus exclusively on .NET development workflows

Fast-forward to 2025, and SeedFolder has transformed into something far more sophisticated:

- **6 Project Templates** - Support for .NET, Node.js, Python, Ruby, documentation, and universal projects
- **Professional CLI** - Interactive template selection, dry-run mode, force operations
- **Cross-Platform Excellence** - Comprehensive testing across Windows, macOS, and Linux
- **Enhanced User Experience** - Progress indicators, colored output, and intuitive error handling
- **Smart Input Handling** - Automatic path sanitization and space-to-dash conversion

**GitHub Copilot: The Development Accelerator** 🤖

The transformation of SeedFolder wouldn't have been possible without GitHub Copilot. Here's how AI-assisted development changed the game:

### 1. **Rapid Feature Implementation**

What used to take hours of research and implementation now happens in minutes. When I needed to add multiple project templates, Copilot helped me:

```csharp
// Before: Manual template definition
var dotfiles = new[] { ".gitignore", ".editorconfig" };

// After: Comprehensive template system with Copilot's assistance
public class ProjectTemplate
{
public string Name { get; set; }
public string Description { get; set; }
public List<TemplateFile> Files { get; set; }
public bool RequiresInteractiveInput { get; set; }
}
```

Copilot suggested the entire template architecture, including validation patterns and error handling strategies I hadn't considered.

### 2. **Enhanced Error Handling and User Experience**

The original SeedFolder had basic error handling. With Copilot's suggestions, the tool now includes:

- **Disk space validation** before operations begin
- **Permission checks** with actionable error messages
- **Path sanitization** for cross-platform compatibility
- **Rollback information** when operations fail

```csharp
// Copilot-suggested validation pattern
private static bool ValidatePrerequisites(string targetPath)
{
// Check disk space (Copilot suggested minimum 10MB)
var drive = new DriveInfo(Path.GetPathRoot(targetPath));
if (drive.AvailableFreeSpace < 10 * 1024 * 1024)
{
Console.WriteLine("⚠️ Insufficient disk space. At least 10MB required.");
return false;
}

// Additional validations...
}
```

### 3. **Modern CLI Patterns**

Copilot introduced me to modern command-line interface patterns I wasn't familiar with:

- **Progress indicators** with real-time feedback
- **Interactive template selection** menus
- **Dry-run mode** for safe previews
- **Quiet mode** for scripting scenarios

### 4. **Comprehensive Testing Strategy**

One of Copilot's most valuable contributions was suggesting a robust testing framework:

```yaml
# GitHub Actions workflow enhanced by Copilot
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
dotnet: ['8.0.x', '9.0.x']
template: [dotnet, node, python, ruby, markdown, universal]
```

This matrix testing approach caught platform-specific issues I would have missed.

**The Development Process Transformation** ⚡

### Before Copilot:
1. Research implementation approaches (30-60 minutes)
2. Write initial code (2-3 hours)
3. Debug and refine (1-2 hours)
4. Write tests (1 hour)
5. Documentation (30 minutes)

**Total: 5-7 hours per feature**

### With Copilot:
1. Describe the feature need (5 minutes)
2. Review and refine Copilot suggestions (30 minutes)
3. Integration and testing (45 minutes)
4. Documentation updates (15 minutes)

**Total: 1.5-2 hours per feature**

This represents a **65-70% reduction in development time** while often producing higher-quality code with better error handling and edge case coverage.

**Real Impact: From Personal Tool to Community Resource** 🌟

The enhanced capabilities have transformed SeedFolder from a personal productivity hack into a tool that serves the broader development community:

- **Download Statistics**: Over 1,000 downloads on NuGet
- **Community Contributions**: PRs and issues from developers worldwide
- **Template Requests**: Requests for additional project types (Go, Rust, etc.)
- **Enterprise Adoption**: Companies using it in their onboarding processes

**Lessons Learned** 📚

### 1. **AI as a Force Multiplier**
Copilot doesn't replace developer thinking—it amplifies it. The tool suggests implementations for concepts I already understand, dramatically reducing the time between idea and working code.

### 2. **Quality Through Suggestions**
Many of Copilot's suggestions included error handling, edge cases, and best practices I might have overlooked. This "built-in code review" aspect improved overall code quality.

### 3. **Learning Acceleration**
Working with Copilot exposed me to patterns and libraries I wasn't familiar with. It's like having a senior developer pair programming with you 24/7.

### 4. **Documentation as Development**
Copilot excels at generating documentation, README files, and usage examples. This encouraged me to maintain better documentation standards.

**Modern CI/CD: A Copilot Success Story** 🚀

The current GitHub Actions workflow represents a significant upgrade from the original basic pipeline, refined through collaboration with GitHub Copilot:

```yaml
name: CI

on:
push:
branches: [master, release/*]
paths-ignore:
- '**/*.md'
- '**/*.gitignore'
- '**/*.gitattributes'
pull_request:
branches: [master, release/*]
paths-ignore:
- '**/*.md'
- '**/*.gitignore'
- '**/*.gitattributes'

jobs:
build:
if: github.event_name == 'push' && contains(toJson(github.event.commits), '***NO_CI***') == false
runs-on: ubuntu-latest
env:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_NOLOGO: true

steps:
- name: checkout code
uses: actions/checkout@v4

- name: setup .net core sdk
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
8.0.x
9.0.x

- name: dotnet build
run: dotnet build solrevdev.seedfolder.sln --configuration Release

- name: run integration tests
run: ./tests/integration-test.sh

- name: dotnet pack
run: dotnet pack solrevdev.seedfolder.sln -c Release --no-build --include-source --include-symbols

- name: Publish NuGet
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
uses: rohith/publish-nuget@v2.1.1
with:
PROJECT_FILE_PATH: src/solrevdev.seedfolder.csproj
NUGET_KEY: ${{secrets.NUGET_API_KEY}}
PACKAGE_NAME: solrevdev.seedfolder
```

This pipeline includes smart optimizations like path-based triggers (skipping builds for documentation changes), multi-framework support, integration testing, and automatic NuGet publishing—all refined through AI-assisted development.

**Looking Forward** 🔮

The collaboration with GitHub Copilot has opened possibilities I hadn't considered:

### Planned Enhancements:
- **External Template Sources** - Support for custom template repositories
- **Template Marketplace** - Community-contributed templates
- **Configuration Management** - User preferences and defaults
- **Plugin Architecture** - Extensible template system

### Development Philosophy:
The experience has shifted my development approach from "build what I need" to "build what the community might need," with Copilot helping bridge the gap between vision and implementation.

**Conclusion** 🎯

SeedFolder's evolution from a simple folder creator to a comprehensive project scaffolding system demonstrates the transformative power of AI-assisted development. GitHub Copilot didn't just speed up development—it expanded what was possible within the time I had available.

The key insights:

1. **AI amplifies existing skills** rather than replacing them
2. **Code quality often improves** through AI suggestions
3. **Development velocity increases dramatically**
4. **Learning happens through collaboration** with AI tools

For developers considering AI-assisted development: embrace it not as a replacement for thinking, but as a powerful tool that frees you to focus on higher-level problems while handling implementation details more efficiently.

The original [SeedFolder blog post](/2020/10/05/creating-a.net-core-global-tool.html) showed how to build a basic .NET Global Tool. This evolution demonstrates how modern AI tools can help transform simple ideas into sophisticated, community-serving applications.

**Try SeedFolder yourself:**

```bash
# Install the latest version
dotnet tool install --global solrevdev.seedfolder

# Interactive mode with template selection
seedfolder

# Or create a specific project type
seedfolder --template node my-awesome-app
```

The future of development isn't human vs. AI—it's human + AI, and the results speak for themselves.

**Links** 🔗

- [SeedFolder on GitHub](https://github.com/solrevdev/seedfolder)
- [SeedFolder on NuGet](https://www.nuget.org/packages/solrevdev.seedfolder/)
- [Original 2020 Blog Post](/2020/10/05/creating-a.net-core-global-tool.html)
- [GitHub Copilot](https://github.com/features/copilot)

Success! 🎉