// the task runner for humans who think in plain english

vibefile
.dev

const makefile = "1976";
const vibefile = "declare intent, ship faster";

The Makefile for the AI & vibe coding era.
Declare what you want. Let the machine figure out how.

read the idea join discord github
/** unsolicited review
This is actually a legitimately interesting idea, not just a joke.
Claude Sonnet 4.6
/* before → after */
BEFORE Makefile
Makefile
# good luck reading this in 6 months
.PHONY: build test deploy seed

build:
	@npm run build 2>&1 | tee .build.log
	@if [ $$? -ne 0 ]; then exit 1; fi

seed: build
	@node scripts/seed.js --env=dev \
	  --users=10 --truncate

deploy: test build
	@fly deploy --remote-only
	@fly status
AFTER Vibefile
Vibefile
# plain intent. AI figures out the rest.

seed: build
    "populate db with realistic fake data for 10 users"

ship: test build
    "test, build, and deploy to fly.io"
    @require clean tests

test:
    "run the full test suite and surface failures"

build:
    "compile and bundle for production"
// three principles
fn::intent()

Declare what, not how

Describe tasks in plain language. The AI reads your repo and figures out the implementation — your Vibefile never goes stale.

fn::deps()

Dependencies that make sense

Express ordering and prerequisites naturally. No arcane syntax, no silent failures — just logical task graphs anyone can read.

fn::docs()

Self-documenting by default

Your Vibefile is your project's runbook. New teammates run vibe run and understand everything instantly.