Scaffolds new projects with git, CI/CD workflows, pre-commit hooks, and build config
Coding
makefile-generation
Try itGenerates Makefiles with testing, linting, formatting, and automation targets
What it does
Generates Makefiles with testing, linting, formatting, and automation targets
The skill document
Night Market Skill — ported from claude-night-market/attune. For the full experience with agents, hooks, and commands, install the Claude Code plugin.
Table of Contents
- When To Use
- Standard Targets
- Python Makefile
- Rust Makefile
- TypeScript Makefile
- Workflow
- 1. Detect Language
- 2. Load Template
- 3. Collect Project Info
- 4. Render Template
- 5. Verify
- Customization
- 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-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
Related skills
Configures GitHub Actions CI/CD workflows for testing, linting, and deployment
Configures pre-commit hooks for linting, type checking, formatting, and testing
Audits Makefiles for build correctness, portability, and recipe duplication
Converts a specification into a phased, dependency-ordered implementation plan. Use after specification is complete and before execution begins
Transforms project briefs into testable specifications with user stories and acceptance criteria. Use after brainstorming, before planning