
Srijan KumarThis is a submission for the GitHub Copilot CLI Challenge TL;DR I built DevPulse, a...
This is a submission for the GitHub Copilot CLI Challenge
I built DevPulse, a local-first development project health checker with both CLI and GUI interfaces in just 80 minutes using GitHub Copilot CLI. It scans codebases to detect tech stacks, check repository hygiene, find security issues, and auto-fix common problemsβall with zero external dependencies.
π View on GitHub
When I saw the GitHub Copilot CLI Challenge, I wanted to build something that:
So I asked myself: "What do I wish existed when starting or evaluating a project?"
The answer: A health checker that tells me everything about a codebase in seconds.
DevPulse is a zero-configuration tool that scans any project and instantly tells you:
β
Tech Stack Detection: What technologies are used (Node.js, Python, Docker, etc.)
β
Repository Hygiene: Missing README, LICENSE, .gitignore, or tests
β
Security Scanning: Potential secrets, unignored .env files
β
File Size Analysis: Large files that might need attention
β
Auto-Fix Capabilities: Generates missing README, LICENSE, .gitignore
============================================================
DevPulse Report β /my/awesome-project
============================================================
Tech Stack & Info:
β Node.js
β Docker
β GitHub Actions
βΉ Total size: 45.67 MB (234 files)
Warnings:
β Missing LICENSE file
β Found 15 TODO/FIXME comments
β Large Files: 2 file(s) larger than 10.00 MB
Critical Issues:
π¨ .env file exists but may not be in .gitignore
Summary:
Total checks: 8
Critical: 1
Warnings: 3
π‘ 1 issue(s) can be auto-fixed with: devpulse fix --safe
============================================================
My Prompt:
Design a modular Python CLI tool that scans projects for tech stack,
hygiene issues, and security problems. It should be extensible with
independent check modules.
Copilot's Magic:
core/, checks/, utils/
argparse for CLI parsingcli/
βββ devpulse.py # Entry point
βββ core/
β βββ scanner.py # Orchestrates checks
β βββ reporter.py # Formats output
β βββ fixer.py # Applies fixes
βββ checks/ # Independent check modules
β βββ stack.py
β βββ hygiene.py
β βββ security.py
β βββ size.py
βββ utils/ # Shared utilities
Time Saved: Instead of spending 30+ minutes designing the architecture, I had a production-ready structure in minutes.
My Prompt:
Create a function to walk a project directory recursively,
ignoring common build/dependency folders like node_modules,
venv, .git, and return a list of relevant files
Copilot Generated:
def walk_project(root_path: str) -> List[Path]:
"""Walk project directory and collect all relevant files."""
root = Path(root_path)
ignore_dirs = {'.git', 'node_modules', '__pycache__',
'venv', '.venv', 'dist', 'build', 'target'}
files = []
for item in root.rglob('*'):
if item.is_file():
if not any(part in ignore_dirs for part in item.parts):
files.append(item)
return files
What I Love: Copilot didn't just generate the functionβit included the exact ignore patterns I would have added manually.
My Prompt:
Generate regex patterns to detect API keys, passwords, and
tokens in source files with minimal false positives
Copilot Generated:
SECRET_PATTERNS = [
(r'API_KEY\s*=\s*["\']?[\w-]{20,}["\']?', 'API Key'),
(r'PASSWORD\s*=\s*["\'][^"\']{8,}["\']', 'Password'),
(r'SECRET\s*=\s*["\'][\w-]{16,}["\']', 'Secret'),
(r'GITHUB_TOKEN\s*=\s*["\']?ghp_[\w]{36}["\']?', 'GitHub Token'),
(r'AWS_ACCESS_KEY_ID\s*=\s*["\']?AKIA[\w]{16}["\']?', 'AWS Key'),
]
Time Saved: This would have taken 20+ minutes of research and testing. Copilot nailed it in seconds.
My Prompt:
Detect tech stack from file patterns - support Node.js, Python,
Java, Docker, Go, Rust, and common build tools
Copilot Generated:
STACK_PATTERNS = {
'Node.js': ['package.json', 'package-lock.json', 'yarn.lock'],
'Python': ['requirements.txt', 'setup.py', 'pyproject.toml'],
'Java': ['pom.xml', 'build.gradle', 'build.gradle.kts'],
'Docker': ['Dockerfile', 'docker-compose.yml'],
'Go': ['go.mod', 'go.sum'],
'Rust': ['Cargo.toml', 'Cargo.lock'],
'Ruby': ['Gemfile', 'Gemfile.lock'],
'.NET': ['*.csproj', '*.sln'],
'PHP': ['composer.json', 'composer.lock'],
'GitHub Actions': ['.github/workflows/*.yml'],
}
Time Saved: 15+ minutes of manually creating patterns.
My Prompt:
Add error handling for reading files that might be binary or
have encoding issues
Copilot's Suggestion:
try:
with open(file_path, 'r', encoding='utf-8', errors='ignore') as f:
content = f.read()
except (OSError, UnicodeDecodeError):
pass # Skip files that can't be read
What Stood Out: Copilot suggested errors='ignore' which I wouldn't have thought of immediately. This prevents crashes when scanning binary files.
I wanted a bonus feature: a graphical interface for non-technical users.
My Prompt:
Create a tkinter GUI with project path selection, scan/fix buttons,
tabbed results view, and summary cards showing critical issues,
warnings, and file statistics
Copilot Generated:
Result: A fully functional GUI in 20 minutes that would normally take 1-2 hours.
class DevPulseGUI:
def __init__(self, root):
self.root = root
self.root.title("DevPulse - Project Health Checker")
# Copilot generated the entire UI structure
self.create_widgets()
My Approach:
Instead of writing docs from scratch, I asked Copilot:
Generate a comprehensive README with quick start, features,
examples, architecture diagram, and usage scenarios
Copilot Delivered:
Documentation Generated:
README.md (212 lines)QUICKSTART.mdUSAGE.mdDEVELOPMENT.mdARCHITECTURE.mdGUI-GUIDE.mdpython devpulse.py scan --path /new/project
Instantly see tech stack, missing docs, and potential issues.
python devpulse.py scan --json > health-report.json
Integrate into CI/CD to ensure repo quality.
python devpulse.py scan
Quick health check before PR reviews.
python devpulse.py fix --safe
Auto-generate README, LICENSE, and .gitignore for new projects.
Why: Privacy and speedβno network calls needed
Copilot's Input: Suggested using only Python stdlib to avoid dependency management
Why: Easy installation, no version conflicts
Copilot's Input: Showed me how to use pathlib, re, json, argparse effectively
Why: Safetyβscanning never modifies files without explicit permission
Copilot's Input: Designed the --safe flag pattern for opt-in fixes
Why: Easy to extend with new checks
Copilot's Input: Recommended independent check functions returning standardized results
| Metric | Value | Copilot Impact |
|---|---|---|
| Total Dev Time | 80 minutes | β‘ 3-4x faster than manual |
| Lines of Code | ~1,200 | π€ ~70% Copilot-generated |
| Features Built | 12+ | π Would take 4-6 hours normally |
| Documentation Pages | 6 | π ~90% Copilot-assisted |
| Test Projects Scanned | 50+ | β Zero false positives |
Problem: Initial regex patterns flagged too many non-secrets
Solution: Asked Copilot to refine patterns with length constraints and context
Result: Balanced detection with minimal false alarms
Problem: Never used tkinter extensively before
Solution: Described the layout in plain English; Copilot generated proper widget hierarchy
Result: Professional-looking GUI on first try
Problem: Windows/Linux path differences
Solution: Copilot suggested using pathlib.Path exclusively
Result: Works seamlessly on all platforms
git clone https://github.com/Srijan-XI/DevPulse.git
cd devpulse
No dependencies to install! Uses only Python standard library.
# CLI version
python devpulse.py scan
# GUI version
python devpulse_gui.py
python devpulse.py fix --safe
Potential features (perfect for Copilot-assisted development):
GitHub Copilot CLI isn't just an autocomplete toolβit's a development accelerator that transforms how we build software.
In 80 minutes, I built a production-ready tool with:
Without Copilot: This would have taken 6-8 hours
With Copilot: 80 minutes (4-5x speedup)
The key insight? Copilot excels when you:
Have you built something with GitHub Copilot CLI? What was your experience?
Try DevPulse on your project and let me know what it finds!
Follow me for more AI-assisted development experiments! π