project-plugin/skills/project-init/SKILL.md
Scaffold a new project with base structure (git, README, LICENSE, CI, pre-commit). Use when starting a new project, initializing a repo, or bootstrapping Python/Node/Rust/Go.
npx skillsauth add laurigates/claude-plugins project-initInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Use this skill when... | Use project-discovery instead when... | |---|---| | Scaffolding a brand-new project from scratch (src/tests/docs, README, CI) | Working in an existing repo that already has structure | | Bootstrapping a Python/Node/Rust/Go codebase with universal base layout | Use project-continue instead when picking up work in an established project | | Creating a matching GitHub repository alongside the local skeleton | Use project-distill instead when extracting patterns from existing work |
pwdgit config user.namewhich gh$1: Project name (required)$2: Project type (python|node|rust|go|generic) - defaults to generic$3: --github flag to create GitHub repository$4: --private flag for private repositoryCreate universal project structure that all projects need:
mkdir -p $1/{src,tests,docs,.github/workflows}
cd $1
git init
README.md:
# $1
## Description
[Project description]
## Installation
See [Installation Guide](docs/installation.md)
## Usage
See [Usage Guide](docs/usage.md)
## Development
See [Development Guide](docs/development.md)
## License
MIT
LICENSE: Create standard MIT license file
.gitignore: Create with common patterns for all languages
.editorconfig:
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.{py,rs,go}]
indent_size = 4
[*.md]
trim_trailing_whitespace = false
.pre-commit-config.yaml:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-json
- id: check-merge-conflict
- id: detect-private-key
.github/workflows/ci.yml:
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run linters
run: echo "Linting step - configure based on project type"
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: echo "Testing step - configure based on project type"
Create universal Makefile with colored output:
.PHONY: help install test lint format clean
help:
@echo "Available commands:"
@echo " make install - Install dependencies"
@echo " make test - Run tests"
@echo " make lint - Run linters"
@echo " make format - Format code"
@echo " make clean - Clean build artifacts"
install:
@echo "Installing dependencies..."
test:
@echo "Running tests..."
lint:
@echo "Running linters..."
format:
@echo "Formatting code..."
clean:
@echo "Cleaning..."
Base init creates the universal structure only. Language-specific tooling
(package manager, linters/formatters, test framework, Dockerfile) is applied
afterwards with the configure-plugin skills — see that plugin's README for the
current skill list. Do not rely on a single bootstrap command; layer the
configure skills you actually need.
{{ if $3 == "--github" }}
Create GitHub repository. ${4:---public} expands to --private when $4 is
--private, otherwise to --public — so exactly one visibility flag is passed
(never both):
gh repo create $1 "${4:---public}" --clone
git remote add origin https://github.com/$(gh api user -q .login)/$1.git
{{ endif }}
pre-commit install/git:commit "Initial project structure"/deps:installSuggest relevant commands based on project type:
/test:setup - Set up testing infrastructure/git:pr - Create first PRtesting
Verify accumulated bug claims at upstream HEAD and dedup against trackers before filing issues. Use when filing upstream reports from backlogs, audit docs, or git-history findings.
documentation
Gate outward-bound text (upstream issues, docs, PR bodies) through isolated haiku fresh-reader critique before publishing. Use when an artifact must survive a reader with zero project context.
tools
Suggest improvements to SKILL.md content, descriptions, or tool config from eval results. Use when raising pass rates, fixing triggering, or iterating on a skill after evaluation.
tools
deadbranch CLI for stale-branch cleanup — dry-run preview, TUI or non-interactive delete, protects main/develop/WIP. Use when asked to clean up branches, prune branches, or remove stale branches.