chore: scaffold Bun workspace monorepo

Sets up the initial project structure: two packages (@kitchen-md/core
and @kitchen-md/bin), shared tsconfig, shared fixtures, per-package
test stubs (unit, integration, smoke), .gitignore, and project
CLAUDE.md with Conventional Commits convention.
This commit is contained in:
2026-07-08 21:33:20 -04:00
commit 220f73d8f7
19 changed files with 312 additions and 0 deletions

16
packages/bin/package.json Normal file
View File

@@ -0,0 +1,16 @@
{
"name": "@kitchen-md/bin",
"version": "0.0.0",
"private": true,
"type": "module",
"bin": {
"kitchen": "./src/index.ts"
},
"scripts": {
"test": "bun test",
"build": "bun build --compile ./src/index.ts --outfile kitchen"
},
"dependencies": {
"@kitchen-md/core": "workspace:*"
}
}

View File

@@ -0,0 +1 @@
// CLI entry point

View File

@@ -0,0 +1,6 @@
import { describe, test } from "bun:test";
describe("cli", () => {
test.todo("exits with non-zero code when no file argument is given");
test.todo("exits with non-zero code when file does not exist");
});

View File

@@ -0,0 +1,5 @@
import { describe, test } from "bun:test";
describe("cli — integration", () => {
test.todo("invokes core parser and produces output for a real fixture file");
});

View File

@@ -0,0 +1,6 @@
import { describe, test } from "bun:test";
describe("smoke", () => {
test.todo("kitchen --help exits with code 0");
test.todo("kitchen parse <fixture> outputs structured JSON covering all annotation types");
});

View File

@@ -0,0 +1,3 @@
{
"extends": "../../tsconfig.json"
}

View File

@@ -0,0 +1,12 @@
{
"name": "@kitchen-md/core",
"version": "0.0.0",
"type": "module",
"main": "./src/index.ts",
"exports": {
".": "./src/index.ts"
},
"scripts": {
"test": "bun test"
}
}

View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1,15 @@
import { describe, test } from "bun:test";
describe("parser", () => {
test.todo("parses frontmatter fields as-is");
test.todo("extracts ingredient name, quantity, and unit");
test.todo("extracts ingredient without unit");
test.todo("extracts multi-word ingredient name");
test.todo("extracts cookware without quantity");
test.todo("extracts cookware with quantity");
test.todo("extracts multi-word cookware name");
test.todo("extracts timer as single value");
test.todo("extracts timer as range");
test.todo("annotations embedded mid-sentence are captured");
test.todo("standard Markdown elements pass through without interference");
});

View File

@@ -0,0 +1,5 @@
import { describe, test } from "bun:test";
describe("parser — integration", () => {
test.todo("parses the primary fixture and extracts all annotations");
});

View File

@@ -0,0 +1,3 @@
{
"extends": "../../tsconfig.json"
}