# Learn, review, check

> Capture proposed taste, accept or reject, scan blocking policies.

## Learn

```bash
stacktaste learn "Prefer tabs" --body "Indent with tabs, not spaces."
stacktaste learn --kind policy "No lodash"
```

`--kind` is `preference` (default), `convention`, `policy`, `lesson`, or `exception`.

Logged in: creates on the server as **proposed**. Else writes local Markdown. Then `stacktaste push`.

## Review

```bash
stacktaste review
stacktaste review accept <id-or-title>
stacktaste review reject <id-or-title>
```

Needs login. Pulls after accept or reject so local files and Cursor rules match.

## Check

```bash
stacktaste check
stacktaste check apps/web/src/lib/foo.ts
```

1. If logged in and behind, **pull** first (keeps unpublished local proposals).
2. Scan git changes (or the paths you pass) against blocking policy needles.
3. Exit 1 on a match.

Needles come from backticks, package names, and hyphenated identifiers in block policies. Not a hosted LLM.
