{"id":13579552,"url":"https://github.com/gptlint/gptlint","last_synced_at":"2025-04-05T21:32:06.506Z","repository":{"id":236207704,"uuid":"776338292","full_name":"gptlint/gptlint","owner":"gptlint","description":"A linter with superpowers! 🔥 Use LLMs to enforce best practices across your codebase.","archived":false,"fork":false,"pushed_at":"2024-07-24T06:09:45.000Z","size":2886,"stargazers_count":249,"open_issues_count":6,"forks_count":22,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-03-08T08:42:37.086Z","etag":null,"topics":["best-practices","gpt","linter","llms","static-analysis"],"latest_commit_sha":null,"homepage":"https://gptlint.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gptlint.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"contributing.md","funding":".github/funding.yml","license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"citation.cff","codeowners":null,"security":"security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["transitive-bullshit"]}},"created_at":"2024-03-23T08:21:32.000Z","updated_at":"2025-03-07T20:31:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"9ee2cda3-3911-4d8b-83d2-a9cd9408d034","html_url":"https://github.com/gptlint/gptlint","commit_stats":null,"previous_names":["gptlint/gptlint"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gptlint%2Fgptlint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gptlint%2Fgptlint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gptlint%2Fgptlint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gptlint%2Fgptlint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gptlint","download_url":"https://codeload.github.com/gptlint/gptlint/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247406024,"owners_count":20933803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["best-practices","gpt","linter","llms","static-analysis"],"created_at":"2024-08-01T15:01:40.495Z","updated_at":"2025-04-05T21:32:04.423Z","avatar_url":"https://github.com/gptlint.png","language":"TypeScript","funding_links":["https://github.com/sponsors/transitive-bullshit"],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://gptlint.dev\"\u003e\u003cimg alt=\"How it works\" src=\"/docs/public/gptlint-logo.png\" width=\"256\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eUse LLMs to enforce best practices across your codebase.\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/gptlint\"\u003e\u003cimg alt=\"NPM\" src=\"https://img.shields.io/npm/v/gptlint.svg\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/gptlint/gptlint/actions/workflows/test.yml\"\u003e\u003cimg alt=\"Build Status\" src=\"https://github.com/gptlint/gptlint/actions/workflows/main.yml/badge.svg\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/gptlint/gptlint/blob/main/license\"\u003e\u003cimg alt=\"MIT License\" src=\"https://img.shields.io/badge/license-MIT-blue\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://prettier.io\"\u003e\u003cimg alt=\"Prettier Code Formatting\" src=\"https://img.shields.io/badge/code_style-prettier-brightgreen.svg\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://twitter.com/transitive_bs\"\u003e\u003cimg alt=\"Discuss on Twitter\" src=\"https://img.shields.io/badge/twitter-discussion-blue\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# GPTLint \u003c!-- omit from toc --\u003e\n\n\u003e A fundamentally new approach to code quality. Use LLMs to enforce higher-level best practices across your codebase in a way that takes traditional static analysis tools like `eslint` to the next level.\n\n- [Features](#features)\n- [Demo](#demo)\n- [How it works](#how-it-works)\n- [Getting Started](#getting-started)\n- [FAQ](#faq)\n- [Citations](#citations)\n- [License](#license)\n\n## Features\n\n- ✅️ _enforce higher-level best practices that are impossible with ast-based approaches_\n- ✅️ simple markdown format for rules ([example](./rules/prefer-array-at-negative-indexing.md), [spec](https://gptlint.dev/extend/rule-spec))\n- ✅️ easy to [disable](https://gptlint.dev/project/faq#how-can-i-disable-a-rule) or [customize](https://gptlint.dev/project/faq#how-can-i-customize-a-built-in-rule) rules\n- ✅️ add custom, [project-specific rules](https://gptlint.dev/guide/rule-guidelines#project-specific-rules)\n- ✅️ same cli and config format as `eslint`\n- ✅️ supports `gptlint.config.js` and inline overrides `/* gptlint-disable */`\n- ✅️ content-based caching\n- ✅️ outputs LLM stats per run (cost, tokens, etc)\n- ✅️ built-in rules are extensively tested w/ [evals](https://gptlint.dev/project/how-it-works#evals)\n- ✅️ supports all major [LLM providers](https://gptlint.dev/guide/llm-providers) and [local models](https://gptlint.dev/guide/llm-providers#local-models)\n- ✅️ augments `eslint` instead of trying to replace it (_we love eslint!_)\n- ✅️ includes [guidelines](https://gptlint.dev/extend/rule-guidelines) for creating your own rules\n- ❌ MVP rules are [JS/TS only](https://gptlint.dev/project/limitations#rules-in-the-mvp-are-jsts-only) _for now_\n- ❌ MVP rules are [single-file context only](https://gptlint.dev/project/limitations#rules-in-the-mvp-are-single-file-only) _for now_\n- ❌ MVP does not support [autofixing](https://gptlint.dev/project/limitations#the-mvp-does-not-support-autofixing-lint-errors) _for now_\n\n## Demo\n\nHere's a demo of `gptlint` running on its own codebase:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"640\" src=\"/docs/public/demo.svg\"\u003e\n\u003c/p\u003e\n\nCheck out our [docs](https://gptlint.dev/guide) to get started.\n\n## How it works\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://gptlint.dev/project/how-it-works\"\u003e\u003cimg alt=\"How it works\" src=\"/docs/public/how-gptlint-works.png\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nCheck out our [docs on how it works](https://gptlint.dev/project/how-it-works) to learn more.\n\n## Getting Started\n\nInstallation is simple, with the only external dependency required by default being an OpenAI API key.\n\nCheck out our [docs](https://gptlint.dev/guide) to get started.\n\n## FAQ\n\n- [How accurate / reliable is gptlint?](https://gptlint.dev/project/accuracy)\n- [How much will it cost to run gptlint on my codebase?](https://gptlint.dev/project/cost)\n- [How can I use GPTLint with a custom, local model?](https://gptlint.dev/guide/llm-providers#local-models)\n- [How can I use GPTLint with a different LLM provider?](https://gptlint.dev/guide/llm-providers)\n- [How can I disable a rule?](https://gptlint.dev/project/faq)\n- [How can I disable a rule for a specific file?](https://gptlint.dev/project/faq)\n- [How can I disable linting for a specific file?](https://gptlint.dev/project/faq)\n- [How can I customize a built-in rule?](https://gptlint.dev/project/faq)\n- [Are there file size limits?](https://gptlint.dev/project/faq)\n- [What limitations does GPTLint have?](https://gptlint.dev/project/limitations)\n- [How does GPTLint compare to ESLint?](https://gptlint.dev/project/faq)\n- [What about fine-tuning?](https://gptlint.dev/project/faq)\n- [Where can I get support?](https://gptlint.dev/project/faq)\n\n## Citations\n\n```bibtex\n@software{agentic2024gptlint,\n  title  = {GPTLint},\n  author = {Travis Fischer, Scott Silvi},\n  year   = {2024},\n  month  = {4},\n  url    = {https://github.com/gptlint/gptlint}\n}\n```\n\nHuge shoutout to [Laurentiu Raducu](https://twitter.com/Bitheap_tech) for gifting us the NPM package name. 🙏\n\n## License\n\nMIT © [Travis Fischer](https://twitter.com/transitive_bs)\n\nTo stay up to date or learn more, follow [@transitive_bs](https://twitter.com/transitive_bs) on Twitter.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgptlint%2Fgptlint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgptlint%2Fgptlint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgptlint%2Fgptlint/lists"}