Automatisation de workflow

VérifiéPrudence

Automatisez les tâches de développement répétitives avec des scripts npm, Makefile et GitHub Actions.

Spar Skills Guide Bot
DevOpsIntermédiaire
24/07/2026
Claude CodeCursorCodex
#automation#build-scripts#makefile#git-hooks#npm-scripts

Recommandé pour

Synthèse automatique

Fournit des modèles prêts à copier pour les scripts npm, un Makefile, des hooks Git Husky/lint-staged et des scripts shell d'installation et de déploiement afin d'automatiser les tâches répétitives d'un projet JavaScript/TypeScript.

Points forts

  • Modèles complets et immédiatement réutilisables : package.json scripts, Makefile, hook pre-commit, scripts bash.
  • Le Makefile inclut une cible help auto-documentée et une cible ci qui rejoue lint, tests et build en local.
  • Le hook pre-commit enchaîne lint-staged, vérification de types et tests sur les fichiers modifiés.
  • Le script dev-setup.sh vérifie les prérequis (Node, Docker), copie .env, démarre les services et lance les migrations.

Limites

  • Très orienté stack Node/TypeScript : les exemples supposent npm, jest, eslint, prettier et husky.
  • Le script deploy.sh est tronqué dans le document et n'est donc pas directement utilisable tel quel.
  • Les workflows GitHub Actions sont annoncés dans la description mais aucun YAML n'est fourni.
  • Les commandes shell supposent un environnement macOS/Linux.
Quand l'utiliser

À utiliser lorsqu'il faut standardiser les commandes de build, de test et de déploiement d'un projet JS/TS pour l'équipe.

Quand l'éviter

À éviter pour des stacks non-Node ou si l'on cherche des définitions complètes de pipelines CI (fichiers GitHub Actions, GitLab CI).

Analyse de sécurité

Prudence
Score qualité80/100

The skill provides templates for build automation and CI/CD, which legitimately require powerful tools like shell, docker, and ssh. While there are destructive rm -rf and remote command examples, they are scoped and standard practice, not inherently malicious. No exfiltration or obfuscation detected.

Points d'attention
  • •Example scripts include rm -rf commands (scoped to build artifacts like dist, node_modules, coverage) which are destructive but common in clean tasks.
  • •Includes SSH deployment commands that run remote shell commands (ssh production 'cd /app && git pull && npm install && npm run build && pm2 restart all').
  • •Includes docker build/run commands that may execute containers with network access.
Comment cette analyse est faite

Exemples

Add npm scripts and a Makefile
Create a set of npm scripts and a self-documenting Makefile for my TypeScript project with dev, build, test, lint, format, type-check, clean, and a 'make ci' target that runs lint, test and build.
Pre-commit hook setup
Set up Husky and lint-staged so my pre-commit hook runs eslint --fix and prettier on staged TS files, then type-checks and runs only the tests affected by the changed files.
Bootstrap script for new devs
Write a scripts/dev-setup.sh that checks for Node and Docker, installs dependencies, copies .env.example to .env, starts docker-compose services, waits for Postgres on 5432, and runs migrations.

name: workflow-automation description: Automate repetitive development tasks and workflows. Use when creating build scripts, automating deployments, or setting up development workflows. Handles npm scripts, Makefile, GitHub Actions workflows, and task automation. tags: [automation, scripts, workflow, npm-scripts, Makefile, task-runner] platforms: [Claude, ChatGPT, Gemini]

Workflow Automation

When to use this skill

  • 반복 작업: 매번 같은 명령어 실행
  • 복잡한 빌드: 여러 단계 빌드 프로세스
  • 팀 온보딩: 일관된 개발 환경

Instructions

Step 1: npm scripts

package.json:

{
  "scripts": {
    "dev": "nodemon src/index.ts",
    "build": "tsc && vite build",
    "test": "jest --coverage",
    "test:watch": "jest --watch",
    "lint": "eslint src --ext .ts,.tsx",
    "lint:fix": "eslint src --ext .ts,.tsx --fix",
    "format": "prettier --write \"src/**/*.{ts,tsx,json}\"",
    "type-check": "tsc --noEmit",
    "pre-commit": "lint-staged",
    "prepare": "husky install",
    "clean": "rm -rf dist node_modules",
    "reset": "npm run clean && npm install",
    "docker:build": "docker build -t myapp .",
    "docker:run": "docker run -p 3000:3000 myapp"
  }
}

Step 2: Makefile

Makefile:

.PHONY: help install dev build test clean docker

.DEFAULT_GOAL := help

help: ## Show this help
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'

install: ## Install dependencies
	npm install

dev: ## Start development server
	npm run dev

build: ## Build for production
	npm run build

test: ## Run all tests
	npm test

lint: ## Run linter
	npm run lint

lint-fix: ## Fix linting issues
	npm run lint:fix

clean: ## Clean build artifacts
	rm -rf dist coverage

docker-build: ## Build Docker image
	docker build -t myapp:latest .

docker-run: ## Run Docker container
	docker run -d -p 3000:3000 --name myapp myapp:latest

deploy: build ## Deploy to production
	@echo "Deploying to production..."
	./scripts/deploy.sh production

ci: lint test build ## Run CI pipeline locally
	@echo "✅ CI pipeline passed!"

사용:

make help        # Show all commands
make dev         # Start development
make ci          # Run full CI locally

Step 3: Husky + lint-staged (Git Hooks)

package.json:

{
  "lint-staged": {
    "*.{ts,tsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,md}": [
      "prettier --write"
    ]
  }
}

.husky/pre-commit:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

echo "Running pre-commit checks..."

# Lint staged files
npx lint-staged

# Type check
npm run type-check

# Run tests related to changed files
npm test -- --onlyChanged

echo "✅ Pre-commit checks passed!"

Step 4: Task Runner 스크립트

scripts/dev-setup.sh:

#!/bin/bash
set -e

echo "🚀 Setting up development environment..."

# Check prerequisites
if ! command -v node &> /dev/null; then
    echo "❌ Node.js is not installed"
    exit 1
fi

if ! command -v docker &> /dev/null; then
    echo "❌ Docker is not installed"
    exit 1
fi

# Install dependencies
echo "📦 Installing dependencies..."
npm install

# Copy environment file
if [ ! -f .env ]; then
    echo "📄 Creating .env file..."
    cp .env.example .env
    echo "⚠️ Please update .env with your configuration"
fi

# Start Docker services
echo "🐳 Starting Docker services..."
docker-compose up -d

# Wait for database
echo "⏳ Waiting for database..."
./scripts/wait-for-it.sh localhost:5432 --timeout=30

# Run migrations
echo "🗄️ Running database migrations..."
npm run migrate

# Seed data (optional)
read -p "Seed database with sample data? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    npm run seed
fi

echo "✅ Development environment ready!"
echo "Run 'make dev' to start the development server"

scripts/deploy.sh:

#!/bin/bash
set -e

ENV=$1

if [ -z "$ENV" ]; then
    echo "Usage: ./deploy.sh [staging|production]"
    exit 1
fi

echo "🚀 Deploying to $ENV..."

# Build
echo "📦 Building application..."
npm run build

# Run tests
echo "🧪 Running tests..."
npm test

# Deploy based on environment
if [ "$ENV" == "production" ]; then
    echo "🌍 Deploying to production..."
    # Production deployment logic
    ssh production "cd /app && git pull && npm install && npm run build && pm2 restart all"
elif [ "$ENV" == "staging" ]; then
    echo "🧪 Deploying to staging..."
    # Staging deployment logic
    ssh staging "cd /app && git pull && npm install && npm run build && pm2 restart all"
fi

echo "✅ Deployment to $ENV completed!"

Step 5: GitHub Actions Workflow 자동화

.github/workflows/ci.yml:

name: CI

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '18'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Run linter
        run: npm run lint

      - name: Type check
        run: npm run type-check

      - name: Run tests
        run: npm test -- --coverage

      - name: Upload coverage
        uses: codecov/codecov-action@v3

Output format

project/
├── scripts/
│   ├── dev-setup.sh
│   ├── deploy.sh
│   ├── test.sh
│   └── cleanup.sh
├── Makefile
├── package.json
└── .husky/
    ├── pre-commit
    └── pre-push

Constraints

필수 규칙 (MUST)

  1. 멱등성: 스크립트 여러 번 실행해도 안전
  2. 에러 처리: 실패 시 명확한 메시지
  3. 문서화: 스크립트 사용법 주석

금지 사항 (MUST NOT)

  1. 하드코딩된 비밀: 스크립트에 비밀번호, API 키 포함 금지
  2. 파괴적 명령: 확인 없이 rm -rf 실행 금지

Best practices

  1. Make 사용: 플랫폼 무관 인터페이스
  2. Git Hooks: 자동 품질 검사
  3. CI/CD: GitHub Actions로 자동화

References

Metadata

버전

  • 현재 버전: 1.0.0
  • 최종 업데이트: 2025-01-01
  • 호환 플랫폼: Claude, ChatGPT, Gemini

태그

#automation #scripts #workflow #npm-scripts #Makefile #utilities

Examples

Example 1: Basic usage

<!-- Add example content here -->

Example 2: Advanced usage

<!-- Add advanced example content here -->

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/workflow-automation-mryiqhzy/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/workflow-automation-mryiqhzy' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/workflow-automation-mryiqhzy/download' --output '.skill-downloads/workflow-automation-mryiqhzy/SKILL.md.part' && mv '.skill-downloads/workflow-automation-mryiqhzy/SKILL.md.part' '.skill-downloads/workflow-automation-mryiqhzy/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/workflow-automation-mryiqhzy/SKILL.md' && test -s '.skill-downloads/workflow-automation-mryiqhzy/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/workflow-automation' && cp -R '.skill-downloads/workflow-automation-mryiqhzy' '.claude/skills/workflow-automation'

Cursor
test -f '.skill-downloads/workflow-automation-mryiqhzy/SKILL.md' && test -s '.skill-downloads/workflow-automation-mryiqhzy/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/workflow-automation' && cp -R '.skill-downloads/workflow-automation-mryiqhzy' '.cursor/skills/workflow-automation'

Codex
test -f '.skill-downloads/workflow-automation-mryiqhzy/SKILL.md' && test -s '.skill-downloads/workflow-automation-mryiqhzy/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/workflow-automation' && cp -R '.skill-downloads/workflow-automation-mryiqhzy' '.agents/skills/workflow-automation'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/workflow-automation-mryiqhzy'

openskills read 'workflow-automation-mryiqhzy'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/workflow-automation-mryiqhzy/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires