# Language playground

[Open the interactive playground](/playground) to edit an agent instruction, run the real LintLang 0.8.3 engine locally, and inspect what changed. JavaScript is required for browser scans.

## Try one small change

The first experiment compares two tool descriptions. Run the original, read the findings, then change one description and scan again. Load an example fix to see one possible repair. Rule explanations and setup guides open in a new tab so your draft stays available. Press Cmd/Ctrl + Enter in the editor to scan. Editing clears previous results; switching experiments preserves your draft in this tab.

Other experiments cover mixed output formats, stopping budgets, tool-schema names, and prompts embedded in Python. Choose **Paste your own** for a blank input. JSON and YAML follow [LintLang’s agent configuration structure](/docs/inputs); this is not a general-purpose prose quality checker. A PASS verdict can include low-severity findings.

## Scan your own project

After trying the browser scan, use LintLang on your real agent setup. With [uv and Python 3.10+](/docs/install), open a terminal in your project root:

```sh
uvx --from lintlang==0.8.3 lintlang scan --discover .
```

This finds recognized agent instruction files, including AGENTS.md, CLAUDE.md, and SKILL.md. It reports findings without changing your files. Follow the [project quickstart](/docs/quickstart) for custom paths and [add a CI threshold](/docs/outputs) when you want blocking checks.

### Reproduce the browser input instead

Open **Reproduce this browser input in your terminal**, download your current input, then copy its matching command. For YAML, from the download folder:

```sh
uvx --from lintlang==0.8.3 lintlang scan lintlang-playground.yaml --format json --fail-on fail
```

The command pins the browser’s engine version and scans that one file. `--fail-on fail` explicitly opts into exit code 1 for FAIL findings.

## Local execution and limits

The first scan downloads Python and dependencies from jsDelivr plus the wheel from this site. Later scans reuse the loaded worker. Your input stays in this tab, with no model calls, uploads, persistence, or input analytics. Python is parsed, not executed. Browser input is limited to 20,000 characters and scans time out after 60 seconds. For larger inputs, download and use the CLI. A blocked runtime download can be retried.

Static findings are clues to investigate, not proof of runtime behavior or semantic correctness. Declared tool budgets still need runtime enforcement. See [limitations](/docs/concepts) and [privacy](/privacy).

