Project Setup Standards
Guidance for initializing new projects that comply with all SDLC requirements from the start.
Tooling
Available Tools: If using Claude Code with the sdlc plugin, run
/sdlc:initto bootstrap a compliant project structure. The/sdlc:checkcommand validates existing projects.
Project Initialization
Required Steps (MUST)
New projects MUST complete these setup steps:
| Order | Step | Purpose |
|---|---|---|
| 1 | Create repository | Initialize Git with main branch |
| 2 | Add standard files | LICENSE, README, etc. |
| 3 | Configure build system | Makefile with standard targets |
| 4 | Set up CI pipeline | GitHub Actions workflow |
| 5 | Configure quality tools | Formatter, linter, etc. |
| 6 | Add security scanning | Dependency audit, secrets scan |
| 7 | Create documentation | README, CONTRIBUTING, etc. |
Repository Initialization
# Initialize repository
git init
git branch -M main
# Create standard directory structure
mkdir -p src tests docs .github/workflows
# Initialize with empty commit
git commit --allow-empty -m "chore: initialize repository"
Required Files
Mandatory Files (MUST)
Every project MUST include:
| File | Purpose | Template |
|---|---|---|
README.md |
Project overview | See docs skill |
LICENSE |
License terms | MIT, Apache-2.0, etc. |
CONTRIBUTING.md |
Contributor guide | See docs skill |
CHANGELOG.md |
Version history | Keep a Changelog |
SECURITY.md |
Security policy | See security skill |
.gitignore |
Git exclusions | Language-specific |
.gitattributes |
Git attributes | See vcs skill |
Makefile |
Build commands | See build skill |
Configuration Files (MUST)
Projects MUST include appropriate configuration:
| Category | Files |
|---|---|
| Build | Makefile, Cargo.toml/package.json/etc. |
| Formatting | rustfmt.toml/.prettierrc/etc. |
| Linting | clippy.toml/eslint.config.js/etc. |
| CI | .github/workflows/ci.yml |
| Editor | .editorconfig |
EditorConfig (MUST)
Projects MUST include .editorconfig:
root = true
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8
[*.{rs,ts,js,py,java,go}]
indent_style = space
indent_size = 4
[*.{yml,yaml,json}]
indent_style = space
indent_size = 2
[Makefile]
indent_style = tab
Build System Setup
Makefile Targets (MUST)
Create Makefile with standard targets:
.PHONY: all build test lint format clean
all: build test
build:
# Language-specific build command
test:
# Run test suite
lint:
# Run linter
format:
# Format code
format-check:
# Check formatting without changes
clean:
# Clean build artifacts
Language-Specific Setup
Rust
cargo init
# Add to Cargo.toml:
# [lints.clippy]
# all = "warn"
# pedantic = "warn"
touch rustfmt.toml clippy.toml
TypeScript/Node.js
npm init -y
npm install -D typescript eslint prettier
npx tsc --init
Python
python -m venv .venv
pip install ruff pytest
# Create pyproject.toml with ruff config
Java
# Maven
mvn archetype:generate -DgroupId=com.example -DartifactId=project
# Gradle
gradle init --type java-application
CI/CD Setup
GitHub Actions (MUST)
Create .github/workflows/ci.yml:
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: make build
- name: Test
run: make test
- name: Lint
run: make lint
Branch Protection (MUST)
Configure branch protection for main:
- Require pull request reviews
- Require status checks to pass
- Require linear history (recommended)
Quality Tools Setup
Pre-commit Hooks (SHOULD)
Install pre-commit:
pip install pre-commit
pre-commit install
Create .pre-commit-config.yaml:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
Security Setup
Secret Scanning (SHOULD)
Enable GitHub secret scanning or configure gitleaks:
# .gitleaks.toml
[extend]
useDefault = true
Dependency Auditing (MUST)
Configure automated dependency scanning based on language.
Documentation Setup
README Template
Create README.md with required sections:
- Project name and description
- Badges (CI, version, license)
- Installation instructions
- Quick start
- Contributing link
- License
ADR Directory (SHOULD)
Set up Architecture Decision Records:
mkdir -p docs/adrs
touch docs/adrs/README.md
Implementation Checklist
Repository Setup
- Initialize Git repository
- Create main branch
- Add
.gitignore - Add
.gitattributes - Configure branch protection
Required Files
- Create
README.md - Add
LICENSE - Create
CONTRIBUTING.md - Create
CHANGELOG.md - Add
SECURITY.md - Create
.editorconfig
Build System
- Create
Makefilewith standard targets - Add language-specific build config
- Verify
make allworks
Quality Tools
- Configure formatter
- Configure linter
- Set up pre-commit hooks
- Verify
make lintandmake formatwork
CI/CD
- Create GitHub Actions workflow
- Configure required status checks
- Add security scanning job
Documentation
- Populate README with content
- Set up ADR directory
- Create initial ADRs if applicable
Compliance Verification
# Verify required files exist
for f in README.md LICENSE CONTRIBUTING.md CHANGELOG.md SECURITY.md .gitignore .gitattributes Makefile .editorconfig; do
[ -f "$f" ] && echo "✓ $f" || echo "✗ $f missing"
done
# Verify CI workflow exists
ls .github/workflows/ci.yml
# Verify Makefile targets
make -n build test lint format
# Run initial compliance check
make lint && make test
Additional Resources
Reference Files
references/setup-guide.md- Detailed setup walkthroughreferences/toolchain-versions.md- Recommended tool versions
Examples
examples/project-rust/- Complete Rust project templateexamples/project-typescript/- Complete TypeScript templateexamples/project-python/- Complete Python template
Converted and distributed by TomeVault — claim your Tome and manage your conversions.