makefile-generation
Generates Makefiles with testing, linting, formatting, and automation targets. Use when starting a project or standardizing build automation.
Install
npx skills add https://github.com/athola/claude-night-market/tree/master/plugins/attune/skills/makefile-generation
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install athola-claude-night-market@llmmart
git clone https://github.com/athola/claude-night-market.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole athola/claude-night-market collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
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-projectinstead for updating existing Makefiles
Standard Targets
Python Makefile
Common targets:
help- Show available targetsinstall- Install dependencies with uvlint- Run ruff lintingformat- Format code with rufftypecheck- Run mypy type checkingtest- Run pytesttest-coverage- Run tests with coverage reportcheck-all- Run all quality checksclean- Remove generated files and cachesbuild- Build distribution packagespublish- Publish to PyPI
Rust Makefile
Common targets:
help- Show available targetsfmt- Format with rustfmtlint- Run clippycheck- Cargo checktest- Run testsbuild- Build release binaryclean- Clean build artifacts
TypeScript Makefile
Common targets:
help- Show available targetsinstall- Install npm dependencieslint- Run ESLintformat- Format with Prettiertypecheck- Run tsc type checkingtest- Run Jest testsbuild- Build for productiondev- Start development server
Workflow
1. Detect Language
# 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
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
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
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
make help
Verification: Run make --dry-run to verify build configuration.
Customization
Users can add custom targets after the generated ones:
# ============================================================================
# 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-dogfoodcommand - Makefile testing and validation
Exit Criteria
- A
Makefileis created at the project root containing at minimum ahelptarget 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 helpruns 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, orpackage.json), the skill reports the detection failure and stops rather than generating a blank Makefile.
Files (claude-night-market)
-
SKILL.md 4.4 KB
--- 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.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.