workflow-automation

Automate development tasks with npm scripts, Makefiles, Git hooks, and shell scripts. Covers npm scripts, Makefiles, Husky Git hooks, and custom shell scripts for setup, deployment, and CI/CD workflows Includes pre-commit automation, linting, testing, and type-checking integrated into development pipelines Provides GitHub Actions workflow templates for continuous integration across push and pull request events Emphasizes idempotency, error handling, and security constraints like avoiding hardcoded secrets and destructive commands without confirmation

INSTALLATION
npx skills add https://github.com/supercent-io/skills-template --skill workflow-automation
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

Workflow Automation

When to use this skill

  • Repetitive tasks: running the same commands every time
  • Complex builds: multi-step build processes
  • Team onboarding: a consistent development environment

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!"

Usage:

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

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 automation

.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

Required rules (MUST)

  • Idempotency: safe to run scripts multiple times
  • Error handling: clear messages on failure
  • Documentation: comments on how to use the scripts

Prohibited items (MUST NOT)

  • Hardcoded secrets: do not include passwords or API keys in scripts
  • Destructive commands: do not run rm -rf without confirmation

Best practices

  • Use Make: platform-agnostic interface
  • Git Hooks: automated quality checks
  • CI/CD: automated with GitHub Actions

References

Metadata

Version

-- Current version: 1.0.0

-- Last updated: 2025-01-01

-- Compatible platforms: Claude, ChatGPT, Gemini

Tags

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

Examples

Example 1: Basic usage

Example 2: Advanced usage

BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills β†’

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free Β· no credit card