Skip to content
Back to skills

sane-mk

ASecurity

Understands and extends the sane.mk GNU Make framework for shared deps, check, build, test, dist, debug, and system workflows. Use when: * editing this repo * adding Make targets/includes * wiring behavior through `SANE_*` variables * adopting sane.mk in another project * debugging why a target is not reachable

  • 16 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 5, 2026
toolsrubyshellbashrailsdebugging

Security analysis

A100/100

Pro scans all 19 files and shows the line behind each finding

Scanned June 5, 2026

npx -y skills add ysoftwareab/sane.mk --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of sane-mk?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for sane-mk
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ysoftwareab-sane-mk/badge)](https://www.skillsdirectory.com/skills/ysoftwareab-sane-mk)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: sane-mk
description: |
  Understands and extends the sane.mk GNU Make framework
  for shared deps, check, build, test, dist, debug, and system workflows.
  Use when:
    * editing this repo
    * adding Make targets/includes
    * wiring behavior through `SANE_*` variables
    * adopting sane.mk in another project
    * debugging why a target is not reachable
---

# sane.mk

## Quick model

* Choose the smallest entrypoint: `sane.mk`, `sane.std.mk`, `sane.extra.mk`, or `template/sane.tf.mk`.
* Extend behavior by appending leaf targets to `SANE_*` variables such as
  `SANE_DEPS`, `SANE_CHECK`, `SANE_TEST`, and `SANE_SYSTEM`.
* Keep top-level verbs declarative; put real work in `deps/*`, `check/*`, `test/*`, `system/*`, `debug/*`.

## Repo rules

* `##` comments feed `make help`.
* Target names use `/`; keep `.PHONY` on its own line.
* Make vars use `$(VAR)`; bash vars use `$${VAR}`.
* Resolve tools with `$(call which,NAME,gname name)` into ALL_CAPS variables.
* Prefer wrappers like `$(MKDIR)`, `$(CP)`, `$(LN)`, `$(RM)` and lazy helpers like `$(call make-lazy-once,VAR)`.

## Common tasks

* Add a checker:

Use real tab characters in actual recipe lines.

```text
SANE_CHECK += \
  check/foo \

.PHONY: check/foo
check/foo: ## Check foo.
<TAB>$(FOO) --check .
```

* Add a system dependency:

```ruby
# Brewfile
brew "shellcheck"
```

Run `make system` or `make test/system/brewfile`.

* Add a generated file or folder:

```text
SANE_DEPS_FILES += config/generated.env
SANE_DEPS_FOLDERS += deps/folders/tmp

config/generated.env:
<TAB>$(TOUCH) $@
```

## Guardrails

* Do not reimplement `all`, `deps`, `check`, `build`, `test`, `dist`, `ci`,
  `clean`, `debug`, or `system` unless changing the framework itself.
* Preserve formatting and comment conventions; `help` output depends on them.

Files in this skill

  • .devcontainer/devcontainer.json4.1 KB
  • .devcontainer/devcontainer.json.tpl3 KB
  • .editorconfig23 B
  • .markdownlintrc25 B
  • .ruff.toml20 B
  • .shellcheckrc23 B
  • .vscode/extensions.json36 B
  • .vscode/settings.json34 B
  • .yamllint19 B
  • AGENTS.md2 KB
  • Brewfile163 B
  • Brewfile.sh1.1 KB
  • Brewfile.test843 B
  • Dockerfile1.9 KB
  • Dockerfile.build.sh868 B
  • Dockerfile.entrypoint.sh542 B
  • Dockerfile.test.sh102 B
  • Makefile1.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.