Auto-activate for Makefile, GNUmakefile. GNU Make patterns for uv-based Python project automation: .PHONY, targets, recipes. Use when: creating or editing a Makefile, adding development targets (install, clean, test, lint), or setting up self-documenting help. Not for CMake (see cpp), Cargo (see rust), or non-Make build systems.
From flownpx claudepluginhub cofin/flow --plugin flowThis skill uses the workspace's default tool permissions.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
All projects should use a consistent Makefile structure to ensure developer familiarity. The standard includes:
.ONESHELL, .EXPORT_ALL_VARIABLES, strict shell flags.BLUE, GREEN, RED, YELLOW) and icons (ℹ, ✓, ⚠, ✖).help target parsing ## comments.install, upgrade, clean, test, lint.Copy this template to the root of new projects:
<example>SHELL := /bin/bash
# =============================================================================
# Variables
# =============================================================================
.DEFAULT_GOAL:=help
.ONESHELL:
.EXPORT_ALL_VARIABLES:
MAKEFLAGS += --no-print-directory
# Silence output if VERBOSE is not set
ifndef VERBOSE
.SILENT:
endif
# Define colors and formatting
BLUE := $(shell printf "\033[1;34m")
GREEN := $(shell printf "\033[1;32m")
RED := $(shell printf "\033[1;31m")
YELLOW := $(shell printf "\033[1;33m")
NC := $(shell printf "\033[0m")
INFO := $(shell printf "$(BLUE)ℹ$(NC)")
OK := $(shell printf "$(GREEN)✓$(NC)")
WARN := $(shell printf "$(YELLOW)⚠$(NC)")
ERROR := $(shell printf "$(RED)✖$(NC)")
.PHONY: help
help: ## Display this help text for Makefile
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z0-9_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
# =============================================================================
# Developer Utils
# =============================================================================
.PHONY: install
install: ## Install dependencies for local development
@echo "${INFO} Installing dependencies..."
@uv sync
@echo "${OK} Installation complete"
.PHONY: upgrade
upgrade: ## Upgrade all dependencies
@echo "${INFO} Updating dependencies... 🔄"
@uv lock --upgrade
@uv run pre-commit autoupdate
@echo "${OK} Dependencies updated 🔄"
.PHONY: clean
clean: ## Cleanup temporary build artifacts
@echo "${INFO} Cleaning working directory..."
@rm -rf .pytest_cache .ruff_cache build/ dist/ .coverage coverage.xml htmlcov/
@find . -name '*.egg-info' -exec rm -rf {} +
@find . -name '__pycache__' -exec rm -rf {} +
@echo "${OK} Working directory cleaned"
.PHONY: destroy
destroy: ## Destroy local environment
@echo "${INFO} Destroying environment... 🗑️"
@rm -rf .venv
@echo "${OK} Environment destroyed"
# =============================================================================
# Quality & Testing
# =============================================================================
.PHONY: lint
lint: ## Run all linting checks
@echo "${INFO} Running linting... 🔍"
@uv run pre-commit run --all-files
@echo "${OK} Linting passed ✨"
.PHONY: test
test: ## Run tests
@echo "${INFO} Running tests... 🧪"
@uv run pytest
@echo "${OK} Tests passed ✨"
</example>
Emojis: Use emojis consistent with the tool being used:
Output: Always use the ${INFO}, ${OK}, ${WARN}, ${ERROR} variables to prefix status messages.
Silence: Use .SILENT: (conditioned on VERBOSE) to keep the output clean for the user, revealing commands only when debugging.