원클릭으로
general-dev-tools
Core development tools used across any project — git, docker, make, CI/CD, linting, formatting, pre-commit hooks.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Core development tools used across any project — git, docker, make, CI/CD, linting, formatting, pre-commit hooks.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
REST API design decisions — URL conventions, error contracts, versioning, pagination, idempotency, auth patterns.
API design principles and decision-making. REST vs GraphQL vs tRPC selection, response formats, versioning, pagination.
Orchestrate full-stack application scaffolding — determine project type, select tech stack, coordinate agents, scaffold structure.
Project scaffolding templates for new applications. Use when creating new projects from scratch. Contains 12 templates for various tech stacks.
Specialized skill for Python backend development using FastAPI, SQLAlchemy, and Pydantic.
Automates end-to-end and system validation tests. Runs services via Docker, feeds inputs, executes scenarios, and verifies outputs.
| name | general-dev-tools |
| type | skill |
| description | Core development tools used across any project — git, docker, make, CI/CD, linting, formatting, pre-commit hooks. |
| inputs | ["task_description","project_context"] |
| outputs | ["working_environment","executed_commands"] |
| related-rules | ["git-workflow-guide.md","makefile-guide.md","docker-compose-guide.md","lint-format-guide.md"] |
| allowed-tools | Read, Write, Edit, Bash, Grep, Glob |
| agentic | {"generated_by":"agentic","source":"areas/software/general/skills/general-dev-tools/SKILL.md","repository":"https://github.com/sawrus/agent-guides","created_by":"v0.5.1","updated_by":"v0.6.0"} |
Expertise: Git, Docker Compose, Makefile, GitHub Actions, GitLab CI, shell scripting, linting, formatting, pre-commit hooks.
make targets. make install && make dev must work on a clean machine.feature/<task-id>-short-desc # e.g. feature/PROJ-42-add-search
fix/<task-id>-short-desc # e.g. fix/PROJ-55-null-pointer
chore/<description> # e.g. chore/upgrade-dependencies
release/<version> # e.g. release/2.4.0
feat(scope): add user search endpoint # new feature
fix(auth): handle expired token on refresh # bug fix
chore(deps): upgrade pydantic to 2.x # maintenance
docs(api): update endpoint reference # docs only
test(orders): add edge case for zero qty # tests only
refactor(repo): extract pagination helper # no behavior change
# Create and track feature branch
git checkout -b feature/PROJ-42-add-search
git push -u origin feature/PROJ-42-add-search
# Rebase on latest main before PR
git fetch origin
git rebase origin/main
# Squash last N commits before merge
git rebase -i HEAD~3
# Undo last commit (keep changes staged)
git reset --soft HEAD~1
# Find which commit introduced a bug
git bisect start
git bisect bad HEAD
git bisect good <known-good-sha>
.gitignore essentials# Python
__pycache__/ *.pyc .venv/ .env *.egg-info/ dist/ .pytest_cache/ .mypy_cache/
# Node
node_modules/ dist/ .env .env.local coverage/
# General
.DS_Store *.log .idea/ .vscode/ *.swp
.PHONY: install dev test lint fmt clean help
install: ## Install all dependencies
pip install -r requirements.txt -r requirements-dev.txt
pre-commit install
dev: ## Start local development environment
docker compose up -d
uvicorn src.main:app --reload --port 8000
test: ## Run test suite
pytest tests/ -v --cov=src --cov-report=term-missing
lint: ## Run linter (zero-tolerance)
ruff check src/ tests/
mypy src/
fmt: ## Format code in-place
ruff format src/ tests/
ruff check --fix src/ tests/
clean: ## Remove generated files
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null; true
rm -rf .coverage htmlcov/ dist/ build/
help: ## Show this help
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}'
install: ## Install dependencies
npm ci
npx husky install
dev: ## Start dev server
npm run dev
test: ## Run tests
npm test -- --coverage --watchAll=false
lint: ## Lint
npx eslint src/ --max-warnings 0
fmt: ## Format
npx prettier --write src/
# docker-compose.yml
services:
api:
build: .
ports: ["8000:8000"]
env_file: .env
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
volumes:
- .:/app # Live reload in dev only
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
interval: 5s
timeout: 3s
retries: 5
redis:
image: redis:7-alpine
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 5
volumes:
pgdata:
.env.example (always commit this, never .env)# Application
APP_ENV=development
SECRET_KEY=change-me-in-production
LOG_LEVEL=DEBUG
# Database
DB_NAME=myapp
DB_USER=myapp
DB_PASSWORD=localpassword
DATABASE_URL=postgresql+asyncpg://myapp:localpassword@localhost:5432/myapp
# Redis
REDIS_URL=redis://localhost:6379/0
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16
env:
POSTGRES_DB: testdb
POSTGRES_USER: test
POSTGRES_PASSWORD: test
options: >-
--health-cmd pg_isready
--health-interval 5s
--health-retries 5
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: '3.12' }
- name: Install
run: make install
- name: Lint
run: make lint
- name: Test
run: make test
env:
DATABASE_URL: postgresql+asyncpg://test:test@localhost:5432/testdb
# .gitlab-ci.yml
stages: [lint, test, build]
default:
image: python:3.12-slim
lint:
stage: lint
script: [pip install ruff mypy, make lint]
test:
stage: test
services: [postgres:16]
variables:
DATABASE_URL: postgresql+asyncpg://test:test@postgres/testdb
POSTGRES_DB: testdb
POSTGRES_USER: test
POSTGRES_PASSWORD: test
script: [make install, make test]
build:
stage: build
script: [docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .]
only: [main]
.pre-commit-config.yaml — standard setrepos:
- 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 # Catch accidental secret commits
- id: check-added-large-files
args: ['--maxkb=500']
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.0
hooks:
- id: ruff
args: [--fix]
- id: ruff-format
# For Node projects, replace above with:
# - repo: https://github.com/pre-commit/mirrors-prettier
# rev: v3.1.0
# hooks: [{id: prettier}]
# Install and run
pre-commit install
pre-commit run --all-files # Run on all files once to baseline
Before every PR:
make lint # Zero errors — never suppress warnings
make fmt # No diffs after formatting
make test # All tests pass; coverage ≥ threshold
CI must enforce all three. Branch protection requires CI green before merge.