setting-up-projects
Automates project setup with best practices including pre-commit hooks, linting, formatting, and boilerplate. Activates when creating new projects, missing configuration files, or setting up development environment. Ensures quality tooling from the start.
What this skill does
# Setting Up Projects
You are activating project setup automation. Your role is to establish best practices, quality tooling, and proper configuration for new or existing projects.
## When to Activate
This skill activates when:
- User is creating a new project
- Project lacks pre-commit hooks configuration
- Missing essential config files (.gitignore, .editorconfig, etc.)
- Setting up development environment
- User asks about project setup or best practices
- Establishing quality baselines
## Philosophy
### Quality from the Start
- **Automate Quality**: Pre-commit hooks catch issues before commit
- **Consistency**: Formatting and linting enforce standards
- **Security**: Detect secrets and vulnerabilities early
- **Productivity**: Proper setup accelerates development
### Progressive Enhancement
Start with essentials, add more as needed:
1. Core configs (Git, editor, dependencies)
2. Quality tooling (linting, formatting)
3. Pre-commit hooks (automation)
4. CI/CD pipelines (continuous validation)
## Setup Process
### 1. Assess Current State
Check what exists:
```bash
ls -la # Check for config files
git status # Check Git state
```
Identify gaps:
- [ ] `.gitignore` present?
- [ ] `.editorconfig` for consistency?
- [ ] Package manager config (package.json, requirements.txt, etc.)?
- [ ] Linter config?
- [ ] Formatter config?
- [ ] Pre-commit hooks?
- [ ] CI/CD config?
### 2. Create Core Configs
#### .gitignore
Generate appropriate ignore patterns:
- Language-specific (node_modules, **pycache**, etc.)
- IDE files (.vscode, .idea, etc.)
- OS files (.DS_Store, Thumbs.db, etc.)
- Environment files (.env, .env.local)
- Build artifacts (dist/, build/, \*.pyc)
#### .editorconfig
Ensure consistent formatting across editors:
```ini
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.py]
indent_size = 4
[*.md]
trim_trailing_whitespace = false
```
### 3. Set Up Quality Tooling
#### Python Projects
**Linting & Formatting**:
- **Ruff**: Fast all-in-one tool (replaces black, flake8, isort)
- **Pyright** or **Mypy**: Type checking
**Configuration** (pyproject.toml):
```toml
[tool.ruff]
line-length = 100
target-version = "py311"
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W"]
[tool.pyright]
typeCheckingMode = "basic"
```
#### JavaScript/TypeScript Projects
**Linting & Formatting**:
- **Prettier**: Code formatting
- **ESLint**: Linting
**Configuration**:
```json
// .prettierrc
{
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "es5"
}
// .eslintrc.json
{
"extends": ["eslint:recommended"],
"env": {
"node": true,
"es2021": true
}
}
```
### 4. Install Pre-commit Hooks
Pre-commit runs checks automatically before each commit.
#### Installation
```bash
pip install pre-commit
pre-commit install
```
#### Configuration (.pre-commit-config.yaml)
**Python Project**:
```yaml
repos:
# Universal checks
- 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-json
- id: check-merge-conflict
- id: check-added-large-files
args: ["--maxkb=500"]
# Python: Ruff (linting + formatting)
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.5
hooks:
- id: ruff
args: [--fix]
- id: ruff-format
# Python: Type checking
- repo: https://github.com/RobertCraigie/pyright-python
rev: v1.1.338
hooks:
- id: pyright
# Security: Detect secrets
- repo: https://github.com/Yelp/detect-secrets
rev: v1.4.0
hooks:
- id: detect-secrets
args: ["--baseline", ".secrets.baseline"]
```
**JavaScript/TypeScript Project**:
```yaml
repos:
# Universal checks
- 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-json
- id: check-merge-conflict
- id: check-added-large-files
# JavaScript: Prettier
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v3.1.0
hooks:
- id: prettier
types_or: [javascript, jsx, ts, tsx, json, yaml, markdown]
# JavaScript: ESLint
- repo: https://github.com/pre-commit/mirrors-eslint
rev: v8.54.0
hooks:
- id: eslint
files: \.[jt]sx?$
types: [file]
# Security
- repo: https://github.com/Yelp/detect-secrets
rev: v1.4.0
hooks:
- id: detect-secrets
```
### 5. Initialize Baseline
For existing projects, create baseline to avoid flagging existing issues:
```bash
# Create secrets baseline (won't flag existing patterns)
detect-secrets scan > .secrets.baseline
# Run pre-commit on all files
pre-commit run --all-files
```
### 6. Document Setup
Create or update README.md with:
- Setup instructions
- Development workflow
- Quality tooling in use
- How to run tests
- How to contribute
## Language-Specific Setups
### Python
**Essential Files**:
- `requirements.txt` or `pyproject.toml`
- `.python-version` (for version pinning)
- `pytest.ini` or `pyproject.toml` (test config)
**Virtual Environment**:
```bash
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt
```
### JavaScript/TypeScript
**Essential Files**:
- `package.json`
- `tsconfig.json` (TypeScript)
- `.nvmrc` (Node version)
**Install Dependencies**:
```bash
npm install
# or
yarn install
```
### Rust
**Essential Files**:
- `Cargo.toml`
- `rustfmt.toml`
- `clippy.toml`
**Setup**:
```bash
cargo build
cargo fmt
cargo clippy
```
### Go
**Essential Files**:
- `go.mod`
- `.golangci.yml`
**Setup**:
```bash
go mod download
go fmt ./...
go vet ./...
```
## Configuration Templates
### Full Python Project Setup
Create comprehensive setup:
```
project/
├── .gitignore
├── .editorconfig
├── .pre-commit-config.yaml
├── pyproject.toml
├── README.md
├── requirements.txt
├── requirements-dev.txt
├── src/
│ └── project/
│ └── __init__.py
└── tests/
└── __init__.py
```
### Full JavaScript Project Setup
```
project/
├── .gitignore
├── .editorconfig
├── .pre-commit-config.yaml
├── .prettierrc
├── .eslintrc.json
├── package.json
├── tsconfig.json
├── README.md
├── src/
│ └── index.ts
└── tests/
└── index.test.ts
```
## Integration Points
### Invokes
- **Builder Agent**: For code generation
- **Templates**: Language-specific boilerplate
- **Pre-commit Setup**: See `Specs/PreCommitHooks.md`
### References
- **Project Structure**: `Specs/ProjectStructure.md`
- **Best Practices**: Language-specific guides
- **Templates**: `~/.amplihack/.claude/templates/`
## Recommendations
### Always Recommend
These are essential for all projects:
1. `.gitignore` - Prevent committing unwanted files
2. `.editorconfig` - Consistent formatting
3. Pre-commit hooks - Automated quality
4. README.md - Documentation
### Recommend for Teams
When multiple developers:
1. Code formatting (Prettier, Black, etc.)
2. Linting (ESLint, Ruff, etc.)
3. Type checking (TypeScript, Mypy, etc.)
4. CI/CD pipeline
### Recommend for Production
When shipping to users:
1. Security scanning (detect-secrets, etc.)
2. Dependency checking (Dependabot, etc.)
3. Test coverage tracking
4. Performance monitoring
## Example Workflow
```
User: "I'm starting a new Python project for a REST API."
Setting Up Projects Skill:
Great! Let me set up a solid foundation for your Python REST API project.
## Setup Plan
I'll create:
1. Project structure with best practices
2. Pre-commit hooks for automated quality
3. Python configs (ruff, pyright)
4. Git ignore patterns
5. README template
## Project Structure
Creating:
```
api-project/
├── .gitignore # Ignore patterns
├── .editorconfig # Editor consistency
├── .pre-commit-config.yaml # Pre-commit hooks
├── pyproRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.