Skip to content
Back to skills

Makefile Generation

ASecurity

Generates Makefiles with testing, linting, formatting, and automation targets. Use when starting a project or standardizing build automation.

  • 342 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 7, 2026
developmenttypescriptpythonrustgobashtesting

Works with

  • cli

Security analysis

A100/100

Scanned September 20, 2026

npx -y skills add athola/claude-night-market --skill makefile-generation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Makefile Generation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Makefile Generation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/athola-makefile-generation/badge)](https://www.skillsdirectory.com/skills/athola-makefile-generation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: makefile-generation
description: Generates Makefiles with testing, linting, formatting, and automation targets. Use when starting a project or standardizing build automation.
globs: "**/Makefile"
alwaysApply: false
# Custom metadata (not used by Claude for matching):
model: sonnet
tools: [Read, Write, Bash]
category: infrastructure
tags: [makefile, automation, build-tools, development-workflow]
complexity: low
model_hint: fast
estimated_tokens: 1200
---

# Makefile Generation Skill

Generate a Makefile with standard development targets for Python, Rust, or TypeScript projects.

## When To Use

- Need a Makefile for a project without one
- Want to update Makefile with new targets
- Standardizing build automation across projects
- Setting up development workflow commands
- Creating language-specific build targets

## When NOT To Use

- Makefile already exists and is current
- Project uses alternative build system exclusively (e.g., npm scripts only)
- Complex custom build process that doesn't fit standard patterns
- Use `/attune:upgrade-project` instead for updating existing Makefiles

## Standard Targets

### Python Makefile

**Common targets**:
- `help` - Show available targets
- `install` - Install dependencies with uv
- `lint` - Run ruff linting
- `format` - Format code with ruff
- `typecheck` - Run mypy type checking
- `test` - Run pytest
- `test-coverage` - Run tests with coverage report
- `check-all` - Run all quality checks
- `clean` - Remove generated files and caches
- `build` - Build distribution packages
- `publish` - Publish to PyPI

### Rust Makefile

**Common targets**:
- `help` - Show available targets
- `fmt` - Format with rustfmt
- `lint` - Run clippy
- `check` - Cargo check
- `test` - Run tests
- `build` - Build release binary
- `clean` - Clean build artifacts

### TypeScript Makefile

**Common targets**:
- `help` - Show available targets
- `install` - Install npm dependencies
- `lint` - Run ESLint
- `format` - Format with Prettier
- `typecheck` - Run tsc type checking
- `test` - Run Jest tests
- `build` - Build for production
- `dev` - Start development server

## Workflow

### 1. Detect Language

```bash
# Check for language indicators
if [ -f "pyproject.toml" ]; then
    LANGUAGE="python"
elif [ -f "Cargo.toml" ]; then
    LANGUAGE="rust"
elif [ -f "package.json" ]; then
    LANGUAGE="typescript"
fi
```
**Verification:** Run the command with `--help` flag to verify availability.

### 2. Load Template

```python
from pathlib import Path

template_path = Path("plugins/attune/templates") / language / "Makefile.template"
```
**Verification:** Run the command with `--help` flag to verify availability.

### 3. Collect Project Info

```python
metadata = {
    "PROJECT_NAME": "my-project",
    "PROJECT_MODULE": "my_project",
    "PYTHON_VERSION": "3.10",
}
```
**Verification:** Run the command with `--help` flag to verify availability.

### 4. Render Template

```python
from template_engine import TemplateEngine

engine = TemplateEngine(metadata)
engine.render_file(template_path, Path("Makefile"))
```
**Verification:** Run the command with `--help` flag to verify availability.

### 5. Verify

```bash
make help
```
**Verification:** Run `make --dry-run` to verify build configuration.

## Customization

Users can add custom targets after the generated ones:

```makefile
# ============================================================================
# CUSTOM TARGETS
# ============================================================================

deploy: build ## Deploy to production
	./scripts/deploy.sh
```
**Verification:** Run the command with `--help` flag to verify availability.

## Related Skills

- `Skill(attune:project-init)` - Full project initialization
- `/abstract:make-dogfood` command - Makefile testing and validation

## Exit Criteria

- [ ] A `Makefile` is created at the project root containing at minimum a `help` target and
  all standard targets for the detected language (Python: install/lint/format/typecheck/test;
  Rust: fmt/lint/check/test/build; TypeScript: install/lint/format/typecheck/test/build).
- [ ] `make help` runs without error and lists all generated targets with descriptions.
- [ ] `make --dry-run <target>` exits 0 for each standard target, confirming recipe syntax
  is valid.
- [ ] If no language is detected (no `pyproject.toml`, `Cargo.toml`, or `package.json`), the
  skill reports the detection failure and stops rather than generating a blank Makefile.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.