{"_id":"@clearlint/config-ai-guardrails","_rev":"2-9b1e262c9d445f1117f63ab1a6c93205","name":"@clearlint/config-ai-guardrails","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@clearlint/config-ai-guardrails","version":"1.0.0","keywords":["eslint","eslintconfig","ai","guardrails","security","lint"],"license":"MIT","_id":"@clearlint/config-ai-guardrails@1.0.0","maintainers":[{"name":"leochong","email":"lowmls@gmail.com"}],"homepage":"https://github.com/clearlint/eslint","bugs":{"url":"https://github.com/clearlint/eslint/issues"},"dist":{"shasum":"3698d858ea20d091a496f2f9612f28bc58d9d9a3","tarball":"https://registry.npmjs.org/@clearlint/config-ai-guardrails/-/config-ai-guardrails-1.0.0.tgz","fileCount":10,"integrity":"sha512-RimlwdtUiavIYzZmwndHZ9MkMWkG5pOuJfB0bHtBroqFToDvZju3h4MVN+jDrOyNtVTPSJSR8r8B9Pb9MOBm0A==","signatures":[{"sig":"MEUCIQDgvXT9BKyIAj/E18kG4Hoz9bZz78y+fC4j7nbwj9HYnAIgX4oeDE2DHQofWAI2U7o0iWUoaibtmY01A2ylqJ2mtuQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30570},"main":"index.js","type":"commonjs","gitHead":"1fada4378f83e50a8c20565752e60c4098644a4d","scripts":{"test":"node tests/rules.test.js"},"_npmUser":{"name":"leochong","email":"lowmls@gmail.com"},"repository":{"url":"git+https://github.com/clearlint/eslint.git","type":"git","directory":"@clearlint/config-ai-guardrails"},"_npmVersion":"11.14.1","description":"AI-safe linting config — catch common mistakes AI coding agents make","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"peerDependencies":{"eslint":">=9.0.0 <10.0.0"},"optionalDependencies":{"eslint-plugin-security":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/config-ai-guardrails_1.0.0_1780411344961_0.4344587331783394","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@clearlint/config-ai-guardrails","version":"1.1.0","description":"AI-safe linting config — catch common mistakes AI coding agents make","type":"commonjs","main":"index.js","scripts":{"test":"node tests/rules.test.js"},"peerDependencies":{"eslint":">=9.0.0 <10.0.0","eslint-plugin-security":"^3.0.0"},"keywords":["eslint","eslintconfig","ai","guardrails","security","lint"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/clearlint/eslint.git","directory":"@clearlint/config-ai-guardrails"},"homepage":"https://github.com/clearlint/eslint","bugs":{"url":"https://github.com/clearlint/eslint/issues"},"_id":"@clearlint/config-ai-guardrails@1.1.0","gitHead":"eb1172737e5b929058787656749cf7644fda1416","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-z0WKK7hdg+9VS47dhPDFUnge0LsBcM8Lp0NjSy+hM+NfiB3uaCeZrtuF9n6/90XQDw6MGhDEF3El+49GsgUebA==","shasum":"005284a01e6d9e94f912fd51f25a83a1304084d6","tarball":"https://registry.npmjs.org/@clearlint/config-ai-guardrails/-/config-ai-guardrails-1.1.0.tgz","fileCount":10,"unpackedSize":32545,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAOVpXO/OnJVZUzA2cWmOjjmGpI4BMFTkskwy5aPiHS4AiBgGy8roE6vAOZcgL84D7i+aATe4jkihKo1B1ZseAX5cg=="}]},"_npmUser":{"name":"leochong","email":"lowmls@gmail.com"},"directories":{},"maintainers":[{"name":"leochong","email":"lowmls@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/config-ai-guardrails_1.1.0_1780711424364_0.9021453919025888"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-02T14:42:24.776Z","modified":"2026-06-06T02:03:44.688Z","1.0.0":"2026-06-02T14:42:25.105Z","1.1.0":"2026-06-06T02:03:44.542Z"},"bugs":{"url":"https://github.com/clearlint/eslint/issues"},"license":"MIT","homepage":"https://github.com/clearlint/eslint","keywords":["eslint","eslintconfig","ai","guardrails","security","lint"],"repository":{"type":"git","url":"git+https://github.com/clearlint/eslint.git","directory":"@clearlint/config-ai-guardrails"},"description":"AI-safe linting config — catch common mistakes AI coding agents make","maintainers":[{"name":"leochong","email":"lowmls@gmail.com"}],"readme":"# @clearlint/config-ai-guardrails\n\n**AI-safe linting config** — Catches common mistakes AI coding agents make in generated JavaScript/TypeScript code.\n\n## The Problem\n\nAI coding assistants are incredibly productive — but they produce code with distinctive failure patterns:\n\n- **Hardcoded secrets**: API keys, tokens, and passwords embedded directly in source\n- **Insecure randomness**: `Math.random()` for tokens, keys, or initialization vectors\n- **Orphaned TODOs**: Unresolved placeholder comments from AI templates\n- **Missing error handling**: Async operations without try-catch or Promise chains without `.catch()`\n- **AI boilerplate noise**: Excessive inline comments that explain obvious code\n\nThis config detects all of these automatically.\n\n## Usage\n\n```bash\nnpm install --save-dev @clearlint/config-ai-guardrails\n```\n\n### Flat config (eslint.config.js)\n\n```js\nimport aiGuardrails from \"@clearlint/config-ai-guardrails\";\n\nexport default [\n  aiGuardrails.configs.recommended,\n  // your other configs...\n];\n```\n\n### eslintrc\n\n```json\n{\n  \"extends\": [\"plugin:@clearlint/ai-guardrails/recommended\"],\n  \"plugins\": [\"@clearlint/ai-guardrails\"]\n}\n```\n\n## Rules\n\n### Custom Rules\n\n| Rule | Description | Default Severity |\n|------|-------------|-----------------|\n| `no-hardcoded-secrets` | Detects API keys, tokens, passwords, and credentials hardcoded in source | error |\n| `no-insecure-random` | Flags `Math.random()` in security-sensitive contexts (tokens, passwords, keys) | error |\n| `no-orphaned-todo` | Requires TODO/FIXME/HACK comments to include a date or owner reference | warn |\n| `require-error-boundary` | Requires try-catch for async functions and .catch() for Promise chains | warn |\n| `no-excessive-inline-comments` | Flags AI-generated comment patterns and excessive comment-to-code ratio | warn |\n\n### Curated Core Rules\n\nThe config also enables these ESLint core rules at recommended levels:\n\n- `max-lines-per-function` (50 lines)\n- `complexity` (max 10)\n- `no-eval`, `no-implied-eval`, `no-new-func`\n- `no-param-reassign`\n- `max-depth`, `max-nested-callbacks`\n- `no-throw-literal`\n- `no-promise-executor-return`, `no-async-promise-executor`\n- `no-constant-binary-expression`, `no-constructor-return`\n- `no-duplicate-imports`, `no-self-compare`\n- `no-template-curly-in-string`, `no-unmodified-loop-condition`\n- `no-unreachable-loop`, `no-unsafe-optional-chaining`\n- `require-atomic-updates`, `use-isnan`, `valid-typeof`\n\n## Before / After Examples\n\n### ❌ Before (AI-generated)\n\n```js\n// Generate a random API key for the user\nconst apiKey = Math.random().toString(36).substring(2, 15);\n// TODO: integrate with email service\n```\n\n### ✅ After (human-reviewed)\n\n```js\nimport crypto from \"node:crypto\";\n\nconst apiKey = crypto.randomBytes(32).toString(\"hex\");\n// TODO(2026-07-01): integrate with email service (issue #42)\n```\n\n## Using with eslint-plugin-security\n\nFor additional security scanning, install the optional dependency:\n\n```bash\nnpm install --save-dev eslint-plugin-security\n```\n\nThen add it to your config:\n\n```js\nimport security from \"eslint-plugin-security\";\n\nexport default [\n  aiGuardrails.configs.recommended,\n  security.configs.recommended,\n];\n```\n\n---\n\n**Disclaimer:** This config helps detect common code quality and security issues. It does not guarantee security or compliance. Your team and security reviewers determine what constitutes acceptable code practices for your organization.\n","readmeFilename":"README.md"}