
Makefile Generation
Scaffold or refresh a project Makefile so `make test`, `make lint`, and `make fmt` work the same way across Python, Rust, or TypeScript repos.
Overview
makefile-generation is an agent skill for the Build phase that generates or updates Makefiles with test, lint, format, and automation targets for Python, Rust, or TypeScript projects.
Install
npx skills add https://github.com/athola/claude-night-market --skill makefile-generationWhat is this skill?
- Detects Python, Rust, or TypeScript and picks a matching Makefile template
- Standard targets for test, lint, format, and common automation workflows
- Five-step workflow: detect language → load template → collect project info → render → verify
- Supports creating a new Makefile or extending an existing one with new targets
- Globs Makefile paths so the skill can align with repo layout
- Supports three language templates: Python, Rust, and TypeScript
- Five-step workflow from language detection through verify
Adoption & trust: 1 installs on skills.sh; 304 GitHub stars; 3/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
What problem does it solve?
You are starting or maintaining a repo but lack a consistent, documented way to run tests, linters, and formatters from one place.
Who is it for?
Greenfield or small-team repos where you want Make as the single dev command layer across Python, Rust, or TypeScript.
Skip if: Repos that already have a current, complete Makefile, or projects that rely exclusively on another build system with no intent to use Make.
When should I use this skill?
Starting a project or standardizing build automation when you need testing, linting, formatting, and automation targets in a Makefile.
What do I get? / Deliverables
You get a language-aware Makefile with standard targets and a verified workflow so agents and you can run the same commands via `make` instead of hunting scripts.
- Rendered Makefile with standard test, lint, format, and automation targets
- Language-specific template applied after project metadata collection
Recommended Skills
Journey fit
Makefiles are created when you are setting up or normalizing how the product is built and run locally—before day-to-day feature work stabilizes. agent-tooling is the canonical shelf for reusable dev commands and automation that agents and humans invoke from the repo root.
How it compares
Use instead of copying Makefile snippets by hand or leaving test/lint commands undocumented in README-only form.
Common Questions / FAQ
Who is makefile-generation for?
Solo and indie builders—and agents helping them—who want predictable `make test`, `make lint`, and `make fmt` targets when bootstrapping or standardizing a Python, Rust, or TypeScript codebase.
When should I use makefile-generation?
Use it during Build when you need a new Makefile, want to add targets to an outdated one, or are aligning automation across projects; it is less useful once Make is already complete or you never use Make.
Is makefile-generation safe to install?
Review the Security Audits panel on this Prism page for install risk and file integrity; the skill writes Makefiles and may run shell verification, so skim generated targets before running them in production environments.
SKILL.md
READMESKILL.md - Makefile Generation
## Table of Contents - [When To Use](#when-to-use) - [Standard Targets](#standard-targets) - [Python Makefile](#python-makefile) - [Rust Makefile](#rust-makefile) - [TypeScript Makefile](#typescript-makefile) - [Workflow](#workflow) - [1. Detect Language](#1-detect-language) - [2. Load Template](#2-load-template) - [3. Collect Project Info](#3-collect-project-info) - [4. Render Template](#4-render-template) - [5. Verify](#5-verify) - [Customization](#customization) - [Related Skills](#related-skills) # 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 # ==================================