{"id":47883212,"url":"https://github.com/evanzhoudev/viewlint","last_synced_at":"2026-04-04T02:01:40.280Z","repository":{"id":338858263,"uuid":"1136497856","full_name":"EvanZhouDev/viewlint","owner":"EvanZhouDev","description":"Find UI issues on live websites.","archived":false,"fork":false,"pushed_at":"2026-02-16T20:21:31.000Z","size":11043,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-23T06:43:18.026Z","etag":null,"topics":["ai","lint","mcp","ui"],"latest_commit_sha":null,"homepage":"https://viewlint.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EvanZhouDev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-17T19:52:37.000Z","updated_at":"2026-02-17T00:06:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/EvanZhouDev/viewlint","commit_stats":null,"previous_names":["evanzhoudev/viewlint"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EvanZhouDev/viewlint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvanZhouDev%2Fviewlint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvanZhouDev%2Fviewlint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvanZhouDev%2Fviewlint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvanZhouDev%2Fviewlint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EvanZhouDev","download_url":"https://codeload.github.com/EvanZhouDev/viewlint/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvanZhouDev%2Fviewlint/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31384847,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T01:22:39.193Z","status":"online","status_checked_at":"2026-04-04T02:00:07.569Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","lint","mcp","ui"],"created_at":"2026-04-04T02:01:35.150Z","updated_at":"2026-04-04T02:01:40.154Z","avatar_url":"https://github.com/EvanZhouDev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003e\n\u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./apps/docs/public/viewlint-logo-white.svg\" /\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"./apps/docs/public/viewlint-logo.svg\" /\u003e\n    \u003cimg src=\"./apps/docs/public/viewlint-logo.svg\" alt=\"ViewLint Logo\" width=\"22\" /\u003e\n\u003c/picture\u003e\nViewLint\n\u003c/h1\u003e\n\n[Documentation](https://viewlint.vercel.app/) | [NPM](https://www.npmjs.com/package/viewlint)\n\nViewLint helps identify UI issues by analyzing the rendered output a human sees, not just source code.\n\nBuilt for modern coding workflows and AI Agents, ViewLint accelerates workflows from development to shipping. It's designed to be ready to use out-of-the-box and extensible when you need it, making it perfect for individual developers to enterprise organizations.\n\n![ViewLint visualized](./apps/docs/public/viewlint-visualized.png)\n\n## Quick Start\n\nInitialize ViewLint:\n\n```bash\nnpm init @viewlint/config@latest\n```\n\nRun it on a URL:\n\n```bash\nnpx viewlint https://example.com\n```\n\nFor setup details and advanced configuration, see the [Getting Started guide](https://viewlint.vercel.app/docs/getting-started).\n\n## The UI Linting Problem\n\nUI issues such as clipped content, overflow, low contrast, and obscured hit targets are often hard to catch from source code alone.\n\nInstead, ViewLint validates your UI the same way a human does, looking at and interacting with the actual rendered browser output to catch potential issues.\n\n### UI's Broken Feedback Loop\n\nLLMs are fantastic at writing code. They're not so great at making UI.\n\nAs it turns out, that's because Coding Agents have a closed feedback loop to validate their code and logic. But when it comes to UI, inspecting the DOM tree manually and taking screenshots just aren't concrete and actionable enough to close that feedback loop.\n\n![Broken feedback loop](./apps/docs/public/broken-feedback-loop.png)\n\nViewLint closes the feedback loop with UI design, allowing the agent to get live, actionable feedback on the rendered output of the website it's working on.\n\n![Broken feedback loop](./apps/docs/public/closed-feedback-loop-small.png)\n\nViewLint significantly improves the UI design performance of AI Agents. Learn more and see the difference at the [ViewLint documentation](https://viewlint.vercel.app/#viewlint-closes-the-loop).\n\n## Documentation\n\nGet started exploring ViewLint and add it to your project with the ViewLint documentation at [viewlint.vercel.app](https://viewlint.vercel.app).\n\n- [Introduction](https://viewlint.vercel.app/docs)\n- [Getting Started](https://viewlint.vercel.app/docs/getting-started)\n- [Configure ViewLint](https://viewlint.vercel.app/docs/configure-viewlint)\n- [CLI Reference](https://viewlint.vercel.app/docs/cli-reference)\n- [Rules Reference](https://viewlint.vercel.app/docs/rules-reference)\n- [MCP Server Setup](https://viewlint.vercel.app/docs/mcp-server)\n\n## Repo Structure\n\nViewLint is a monorepo, hosting a series of packages in the ViewLint ecosystem as well as the documentation site.\n\n* `apps/`\n    * `docs/`: ViewLint documentation, hosted at [viewlint.vercel.app](https://viewlint.vercel.app)\n* `packages/`\n    * `viewlint/`: Core ViewLint package and CLI (`viewlint` on [NPM](https://www.npmjs.com/package/viewlint))\n    * `rules/`: Core ViewLint rules (`@viewlint/rules` on [NPM](https://www.npmjs.com/package/@viewlint/rules))\n    * `create-config/`: ViewLint config initializer (`@viewlint/create-config` on [NPM](https://www.npmjs.com/package/@viewlint/create-config))\n    * `mcp/`: ViewLint MCP server (`@viewlint/mcp` on [NPM](https://www.npmjs.com/package/@viewlint/mcp))\n    * `typescript-config/`: Shared TS config for monorepo\n\n## License\n\nAGPL-3.0-only\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevanzhoudev%2Fviewlint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevanzhoudev%2Fviewlint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevanzhoudev%2Fviewlint/lists"}