Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generates Makefiles with testing, linting, formatting, and automation targets. Use when starting a project or standardizing build automation.
.claude/skills/athola-makefile-generation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 86% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -29% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -25% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 87% | 0% |
| case-02 | ✓→✗ | ▼ Worse | -35% | 0% |
Generate a Makefile with standard development targets for Python, Rust, or TypeScript projects.
/attune:upgrade-project instead for updating existing MakefilesCommon 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 PyPICommon targets:
help - Show available targetsfmt - Format with rustfmtlint - Run clippycheck - Cargo checktest - Run testsbuild - Build release binaryclean - Clean build artifactsCommon 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 serverbash# 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.
pythonfrom pathlib import Path template_path = Path("plugins/attune/templates") / language / "Makefile.template"
Verification: Run the command with --help flag to verify availability.
pythonmetadata = { "PROJECT_NAME": "my-project", "PROJECT_MODULE": "my_project", "PYTHON_VERSION": "3.10", }
Verification: Run the command with --help flag to verify availability.
pythonfrom template_engine import TemplateEngine engine = TemplateEngine(metadata) engine.render_file(template_path, Path("Makefile"))
Verification: Run the command with --help flag to verify availability.
bashmake help
Verification: Run make --dry-run to verify build configuration.
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.
Skill(attune:project-init) - Full project initialization/abstract:make-dogfood command - Makefile testing and validationMakefile is created at the project root containing at minimum a help target andall 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 syntaxis valid.
pyproject.toml, Cargo.toml, or package.json), theskill reports the detection failure and stops rather than generating a blank Makefile.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | pass→pass | 12,893 | 12,337 | -4% | 1 | 1 | 0% | 2,379 | 3,573 | +50% | 0 | 0 | — |
case-17 | pass→pass | 10,945 | 4,995 | -54% | 1 | 1 | 0% | 1,968 | 2,073 | +5% | 0 | 0 | — |
case-03 | fail→fail | 12,357 | 6,119 | -50% | 1 | 1 | 0% | 2,183 | 1,571 | -28% | 0 | 0 | — |
case-01 | fail→fail | 11,795 | 5,525 | -53% | 1 | 1 | 0% | 2,242 | 1,520 | -32% | 0 | 0 | — |
case-02 | pass→fail | 12,291 | 3,183 | -74% | 1 | 1 | 0% | 2,287 | 1,495 | -35% | 0 | 0 | — |
case-05 | pass→pass | 10,825 | 4,359 | -60% | 1 | 1 | 0% | 1,985 | 1,903 | -4% | 0 | 0 | — |
case-06 | fail→pass | 6,855 | 6,631 | -3% | 1 | 1 | 0% | 1,263 | 2,355 | +86% | 0 | 0 | — |
case-07 | fail→fail | 12,109 | 6,467 | -47% | 1 | 1 | 0% | 2,330 | 2,329 | -0% | 0 | 0 | — |
case-08 | pass→pass | 11,461 | 9,117 | -20% | 1 | 1 | 0% | 2,077 | 2,261 | +9% | 0 | 0 | — |
case-09 | pass→pass | 11,291 | 7,028 | -38% | 1 | 1 | 0% | 2,048 | 2,563 | +25% | 0 | 0 | — |
case-10 | fail→pass | 14,850 | 5,792 | -61% | 1 | 1 | 0% | 2,893 | 2,041 | -29% | 0 | 0 | — |
case-11 | fail→fail | 15,907 | 12,059 | -24% | 1 | 1 | 0% | 2,800 | 3,376 | +21% | 0 | 0 | — |
case-12 | pass→pass | 14,347 | 7,413 | -48% | 1 | 1 | 0% | 2,475 | 2,412 | -3% | 0 | 0 | — |
case-13 | fail→pass | 18,790 | 7,870 | -58% | 1 | 1 | 0% | 3,217 | 2,418 | -25% | 0 | 0 | — |
case-14 | pass→pass | 11,197 | 7,441 | -34% | 1 | 1 | 0% | 1,962 | 2,510 | +28% | 0 | 0 | — |
case-15 | pass→pass | 16,074 | 7,107 | -56% | 1 | 1 | 0% | 2,646 | 2,263 | -14% | 0 | 0 | — |
case-16 | fail→fail | 12,874 | 6,765 | -47% | 1 | 1 | 0% | 2,432 | 2,445 | +1% | 0 | 0 | — |
case-18 | pass→pass | 6,357 | 3,515 | -45% | 1 | 1 | 0% | 1,092 | 1,761 | +61% | 0 | 0 | — |
case-19 | pass→pass | 8,176 | 5,274 | -35% | 1 | 1 | 0% | 1,459 | 2,162 | +48% | 0 | 0 | — |
case-20 | fail→pass | 7,812 | 7,535 | -4% | 1 | 1 | 0% | 1,362 | 2,544 | +87% | 0 | 0 | — |
case-21 | pass→pass | 4,967 | 1,550 | -69% | 1 | 1 | 0% | 737 | 1,321 | +79% | 0 | 0 | — |
case-22 | pass→pass | 5,516 | 2,444 | -56% | 1 | 1 | 0% | 860 | 1,524 | +77% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 20 comparable cases. 4 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.