{"_id":"@acme-skunkworks/stylelint-config","_rev":"2-e2c412339103184bb0e3bb1f698d8d62","name":"@acme-skunkworks/stylelint-config","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@acme-skunkworks/stylelint-config","version":"1.0.0","keywords":["stylelint","stylelint-config","css","tailwind","tailwindcss","linting","code-quality"],"author":{"url":"https://github.com/RobEasthope","name":"Rob Easthope"},"license":"MIT","_id":"@acme-skunkworks/stylelint-config@1.0.0","maintainers":[{"name":"robeasthope","email":"hello@robeasthope.com"}],"homepage":"https://github.com/acme-skunkworks/stylelint-config#readme","bugs":{"url":"https://github.com/acme-skunkworks/stylelint-config/issues"},"dist":{"shasum":"19efd5c8837a20f90bc704cf4606f9066426b03f","tarball":"https://registry.npmjs.org/@acme-skunkworks/stylelint-config/-/stylelint-config-1.0.0.tgz","fileCount":6,"integrity":"sha512-WypsTVc5h12AG23pVa5xu8xI40ROcHF+HjOvExoDcXVkYcWMNMJPJCPa10d1lupiWepZMzSv+4sgxX8nA4ZadQ==","signatures":[{"sig":"MEUCIQC4wmAeau2XjCyr9y6heBnwb2CP3OWydcujSJHvbHGkEQIgGDZj7jO+euKwcsikqd4dJ3/go5Juowtn0Ek8W4sBCL0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11380},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"6f5a0ef713de878fc9a48b42928a482b93374494","scripts":{"tsc":"tsc --noEmit && tsc -p tsconfig.tools.json","lint":"eslint 'src/**/*.ts' 'infrastructure/scripts/**/*.ts' --cache --cache-location ./.eslintcache","test":"vitest run","build":"tsc","clean":"rimraf node_modules dist","act:ci":"act pull_request -W .github/workflows/ci.yml --eventpath .github/act-events/pull_request.json","format":"prettier --write .","ci:list":"gh run list --limit 10","ci:view":"gh run view","lint:md":"markdownlint-cli2 '**/*.{md,mdx}' '!**/node_modules/**' '!**/dist/**' '!**/.turbo/**' '!**/.astro/**'","lint:sh":"bash -c 'if command -v shellcheck >/dev/null 2>&1; then shellcheck infrastructure/scripts/*.sh .husky/pre-commit .husky/pre-push .husky/commit-msg; elif [ \"$(uname -s)\" = \"Darwin\" ]; then echo \"⚠️  shellcheck not installed — skipping. Install: brew install shellcheck\"; else echo \"⚠️  shellcheck not installed — skipping. Install: apt-get install shellcheck\"; fi'","prepare":"husky","test:sh":"bash -c 'if command -v bats >/dev/null 2>&1; then bats infrastructure/tests/*.bats; elif [ \"$(uname -s)\" = \"Darwin\" ]; then echo \"⚠️  bats not installed — skipping. Install: brew install bats-core\"; else echo \"⚠️  bats not installed — skipping. Install: apt-get install bats\"; fi'","act:list":"act --list","ci:watch":"gh run watch $(gh run list -L 1 --json databaseId -q '.[0].databaseId // empty')","lint:css":"stylelint \"**/*.css\"","lint:fix":"eslint 'src/**/*.ts' 'infrastructure/scripts/**/*.ts' --fix --cache --cache-location ./.eslintcache","lint:yaml":"yamllint .","test:watch":"vitest","lint:md:fix":"markdownlint-cli2 --fix '**/*.{md,mdx}' '!**/node_modules/**' '!**/dist/**' '!**/.turbo/**' '!**/.astro/**'","sort-pkg-json":"sort-package-json","lint:workflows":"actionlint","prepublishOnly":"pnpm run build","release:manual":"pnpm run build && npm publish --access public --provenance=false","act:release:dry":"act push -W .github/workflows/pkg-release.yml","changelog:finalise":"tsx infrastructure/scripts/finalise-changelog.ts","release:manual:dry":"pnpm run build && npm publish --access public --provenance=false --dry-run","validate:changelog":"tsx infrastructure/scripts/validate-changelog.ts"},"_npmUser":{"name":"robeasthope","email":"hello@robeasthope.com"},"repository":{"url":"git+https://github.com/acme-skunkworks/stylelint-config.git","type":"git"},"_npmVersion":"11.12.1","description":"Shared Tailwind-friendly Stylelint config (standard + Tailwind CSS + alphabetical property order).","directories":{},"lint-staged":{"**/*":["prettier --write --ignore-unknown"],"**/*.{md,mdx}":["bash -c 'markdownlint-cli2 --fix --config ./.markdownlint-cli2.jsonc \"$@\" || true' --"],"**/*.{yml,yaml}":["bash -c 'if command -v yamllint >/dev/null 2>&1; then yamllint \"$@\"; elif [ \"$(uname -s)\" = \"Darwin\" ]; then echo \"⚠️  yamllint not installed — skipping. Install with: brew install yamllint\"; else echo \"⚠️  yamllint not installed — skipping. Install with: pip install --user yamllint==1.37.1\"; fi' --"],"**/package.json":["bash -c 'sort-package-json \"$@\" || true' --","bash -c 'pnpm exec eslint --fix --cache --cache-location ./.eslintcache \"$@\" || true' --"],"**/*.{ts,tsx,js,mjs,cjs}":["bash -c 'pnpm exec eslint --fix --cache --cache-location ./.eslintcache \"$@\" || true' --"],".github/workflows/*.{yml,yaml}":["bash -c 'if command -v actionlint >/dev/null 2>&1; then actionlint \"$@\"; elif [ \"$(uname -s)\" = \"Darwin\" ]; then echo \"⚠️  actionlint not installed — skipping. Install with: brew install actionlint\"; else echo \"⚠️  actionlint not installed — skipping. Install via: bash <(curl -fsSL https://raw.githubusercontent.com/rhysd/actionlint/v1.7.5/scripts/download-actionlint.bash)\"; fi' --"]},"_nodeVersion":"26.0.0","dependencies":{"stylelint-order":"^8.1.1","stylelint-config-standard":"^40.0.0","stylelint-config-tailwindcss":"^1.0.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"tsx":"^4.21.1","bats":"1.13.0","jiti":"^2.7.0","husky":"^9.1.7","eslint":"^9.0.0","rimraf":"^6.0.1","vitest":"^4.1.6","prettier":"^3.0.0","stylelint":"^17.0.0","typescript":"^6.0.3","@types/node":"^25.6.0","gray-matter":"^4.0.3","lint-staged":"^16.3.2","markdownlint-cli2":"^0.18.1","sort-package-json":"^3.6.1","prettier-plugin-tailwindcss":"^0.8.0","@acme-skunkworks/eslint-config":"^1.0.4","@acme-skunkworks/markdownlint-config":"^2.0.0"},"peerDependencies":{"stylelint":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/stylelint-config_1.0.0_1783430530763_0.004958014632562957","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@acme-skunkworks/stylelint-config","version":"1.0.1","description":"Shared Tailwind-friendly Stylelint config (standard + Tailwind CSS + alphabetical property order).","keywords":["stylelint","stylelint-config","css","tailwind","tailwindcss","linting","code-quality"],"homepage":"https://github.com/acme-skunkworks/stylelint-config#readme","bugs":{"url":"https://github.com/acme-skunkworks/stylelint-config/issues"},"repository":{"type":"git","url":"git+https://github.com/acme-skunkworks/stylelint-config.git"},"license":"MIT","author":{"name":"Rob Easthope","url":"https://github.com/RobEasthope"},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"act:ci":"act pull_request -W .github/workflows/ci.yml --eventpath .github/act-events/pull_request.json","act:list":"act --list","act:release:dry":"act push -W .github/workflows/pkg-release.yml","build":"tsc","ci:list":"gh run list --limit 10","ci:view":"gh run view","ci:watch":"gh run watch $(gh run list -L 1 --json databaseId -q '.[0].databaseId // empty')","clean":"rimraf node_modules dist","format":"prettier --write .","lint":"eslint 'src/**/*.ts' --cache --cache-location ./.eslintcache","lint:css":"stylelint \"**/*.css\"","lint:fix":"eslint 'src/**/*.ts' --fix --cache --cache-location ./.eslintcache","lint:md":"markdownlint-cli2 '**/*.{md,mdx}' '!**/node_modules/**' '!**/dist/**' '!**/.turbo/**' '!**/.astro/**'","lint:md:fix":"markdownlint-cli2 --fix '**/*.{md,mdx}' '!**/node_modules/**' '!**/dist/**' '!**/.turbo/**' '!**/.astro/**'","lint:sh":"bash -c 'if command -v shellcheck >/dev/null 2>&1; then shellcheck infrastructure/scripts/*.sh .husky/pre-commit .husky/pre-push .husky/commit-msg; elif [ \"$(uname -s)\" = \"Darwin\" ]; then echo \"⚠️  shellcheck not installed — skipping. Install: brew install shellcheck\"; else echo \"⚠️  shellcheck not installed — skipping. Install: apt-get install shellcheck\"; fi'","lint:workflows":"actionlint","lint:yaml":"yamllint .","prepare":"husky","prepublishOnly":"pnpm run build","release:manual":"pnpm run build && npm publish --access public --provenance=false","release:manual:dry":"pnpm run build && npm publish --access public --provenance=false --dry-run","sort-pkg-json":"sort-package-json","test":"vitest run","test:sh":"bash -c 'if command -v bats >/dev/null 2>&1; then bats infrastructure/tests/*.bats; elif [ \"$(uname -s)\" = \"Darwin\" ]; then echo \"⚠️  bats not installed — skipping. Install: brew install bats-core\"; else echo \"⚠️  bats not installed — skipping. Install: apt-get install bats\"; fi'","test:watch":"vitest","tsc":"tsc --noEmit && tsc -p tsconfig.tools.json","validate:changelog":"pnpm exec changelog-core validate"},"lint-staged":{"**/*":["prettier --write --ignore-unknown"],"**/*.{ts,tsx,js,mjs,cjs}":["bash -c 'pnpm exec eslint --fix --cache --cache-location ./.eslintcache \"$@\" || true' --"],"**/package.json":["bash -c 'sort-package-json \"$@\" || true' --","bash -c 'pnpm exec eslint --fix --cache --cache-location ./.eslintcache \"$@\" || true' --"],"**/*.{md,mdx}":["bash -c 'markdownlint-cli2 --fix --config ./.markdownlint-cli2.jsonc \"$@\" || true' --"],"**/*.{yml,yaml}":["bash -c 'if command -v yamllint >/dev/null 2>&1; then yamllint \"$@\"; elif [ \"$(uname -s)\" = \"Darwin\" ]; then echo \"⚠️  yamllint not installed — skipping. Install with: brew install yamllint\"; else echo \"⚠️  yamllint not installed — skipping. Install with: pip install --user yamllint==1.37.1\"; fi' --"],".github/workflows/*.{yml,yaml}":["bash -c 'if command -v actionlint >/dev/null 2>&1; then actionlint \"$@\"; elif [ \"$(uname -s)\" = \"Darwin\" ]; then echo \"⚠️  actionlint not installed — skipping. Install with: brew install actionlint\"; else echo \"⚠️  actionlint not installed — skipping. Install via: bash <(curl -fsSL https://raw.githubusercontent.com/rhysd/actionlint/v1.7.5/scripts/download-actionlint.bash)\"; fi' --"]},"dependencies":{"stylelint-config-standard":"^40.0.0","stylelint-config-tailwindcss":"^1.0.1","stylelint-order":"^8.1.1"},"devDependencies":{"@acme-skunkworks/changelog-core":"^1.1.0","@acme-skunkworks/commitlint-config":"^1.0.0","@acme-skunkworks/eslint-config":"^1.0.4","@acme-skunkworks/markdownlint-config":"^2.0.0","@commitlint/cli":"^21.2.1","@types/node":"^25.6.0","bats":"1.13.0","eslint":"^9.0.0","husky":"^9.1.7","jiti":"^2.7.0","lint-staged":"^16.3.2","markdownlint-cli2":"^0.18.1","prettier":"^3.0.0","prettier-plugin-tailwindcss":"^0.8.0","rimraf":"^6.0.1","sort-package-json":"^3.6.1","stylelint":"^17.0.0","tsx":"^4.21.1","typescript":"^6.0.3","vitest":"^4.1.6"},"peerDependencies":{"stylelint":"^17.0.0"},"packageManager":"pnpm@10.33.0","engines":{"node":">=22"},"publishConfig":{"access":"public","provenance":true},"_id":"@acme-skunkworks/stylelint-config@1.0.1","_integrity":"sha512-y940AYwQvtBqv5TkYbGfvAg3TomuwwFNYvGiDqrTL7o6Wzdqlon9GWBvECjTgmTLYoa+ZqZl7O8o+HFb9nxD9A==","_resolved":"/home/runner/work/stylelint-config/stylelint-config/.artifact/acme-skunkworks-stylelint-config-1.0.1.tgz","_from":"file:/home/runner/work/stylelint-config/stylelint-config/.artifact/acme-skunkworks-stylelint-config-1.0.1.tgz","_nodeVersion":"22.23.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-y940AYwQvtBqv5TkYbGfvAg3TomuwwFNYvGiDqrTL7o6Wzdqlon9GWBvECjTgmTLYoa+ZqZl7O8o+HFb9nxD9A==","shasum":"1d0a400ff0119b9632be0e9f752c30a21910ed22","tarball":"https://registry.npmjs.org/@acme-skunkworks/stylelint-config/-/stylelint-config-1.0.1.tgz","fileCount":6,"unpackedSize":11325,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acme-skunkworks%2fstylelint-config@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAi696fpRnTKHTU7DLGN1jm6lAwzUm9g3cDd9hcUm2cmAiAiStqYptaCsJZmn8LETJsQhQtnVVOc3+HryJ+7CTuGqg=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55e50944-cd1a-4d0d-8425-9237b22c276e"}},"directories":{},"maintainers":[{"name":"robeasthope","email":"hello@robeasthope.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/stylelint-config_1.0.1_1786108631254_0.435238744695152"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-07T13:22:10.586Z","modified":"2026-08-07T13:17:11.807Z","1.0.0":"2026-07-07T13:22:10.905Z","1.0.1":"2026-08-07T13:17:11.387Z"},"bugs":{"url":"https://github.com/acme-skunkworks/stylelint-config/issues"},"author":{"name":"Rob Easthope","url":"https://github.com/RobEasthope"},"license":"MIT","homepage":"https://github.com/acme-skunkworks/stylelint-config#readme","keywords":["stylelint","stylelint-config","css","tailwind","tailwindcss","linting","code-quality"],"repository":{"type":"git","url":"git+https://github.com/acme-skunkworks/stylelint-config.git"},"description":"Shared Tailwind-friendly Stylelint config (standard + Tailwind CSS + alphabetical property order).","maintainers":[{"name":"robeasthope","email":"hello@robeasthope.com"}],"readme":"# @acme-skunkworks/stylelint-config\n\nShared, Tailwind-friendly [Stylelint](https://stylelint.io) config for Rheged Studio projects — [`stylelint-config-standard`](https://github.com/stylelint/stylelint-config-standard) + [`stylelint-config-tailwindcss`](https://github.com/schoero/stylelint-config-tailwindcss), with alphabetical property ordering via [`stylelint-order`](https://github.com/hudochenkov/stylelint-order).\n\n## 📦 Installation\n\n`stylelint` is a peer dependency; the extended configs and the order plugin are bundled, so you only install this package plus Stylelint itself:\n\n```bash\npnpm add -D @acme-skunkworks/stylelint-config stylelint\n# or\nnpm install --save-dev @acme-skunkworks/stylelint-config stylelint\n```\n\n## 🚀 Usage\n\nCreate a `stylelint.config.mjs` (or `.stylelintrc.json`) in your project root and extend the preset:\n\n```js\n/** @type {import('stylelint').Config} */\nexport default {\n  extends: [\"@acme-skunkworks/stylelint-config\"],\n};\n```\n\n```jsonc\n// .stylelintrc.json\n{\n  \"extends\": \"@acme-skunkworks/stylelint-config\",\n}\n```\n\nAdd a script to `package.json` and run it:\n\n```json\n{\n  \"scripts\": {\n    \"lint:css\": \"stylelint \\\"**/*.css\\\"\"\n  }\n}\n```\n\n## 🎯 What you get\n\nThe preset composes three layers, in order:\n\n1. **`stylelint-config-standard`** — the community baseline of modern, sensible CSS conventions.\n2. **`stylelint-config-tailwindcss`** — layered on top so Tailwind's at-rules and functions lint cleanly. This is what stops `at-rule-no-unknown` / `function-no-unknown` from flagging `@tailwind`, `@import \"tailwindcss\"`, `@theme`, `@apply`, `theme()`, `screen()` and friends. **The preset assumes you're using Tailwind** — that's the house default across our stack.\n3. **`stylelint-order`** with `order/properties-alphabetical-order` — declarations within a rule are ordered alphabetically, so diffs stay small and property placement is never a debate.\n\n## 🛠️ Overriding rules\n\nEverything is a normal Stylelint config, so override or disable any rule after extending:\n\n```js\n/** @type {import('stylelint').Config} */\nexport default {\n  extends: [\"@acme-skunkworks/stylelint-config\"],\n  rules: {\n    // Turn off alphabetical property ordering for this project.\n    \"order/properties-alphabetical-order\": null,\n  },\n};\n```\n\nUse a `.stylelintignore` file (or the `ignoreFiles` config option) to scope which files are linted — the preset intentionally does **not** ship ignore globs, leaving that to the consumer.\n\n## 📁 Package structure\n\n```text\n.\n├── src/index.ts             # the config (source)\n├── dist/                    # published artifact (compiled from src/)\n├── fixtures/tailwind.css    # self-test fixture\n├── stylelint.config.mjs     # repo self-test — extends the built preset\n├── package.json\n└── README.md\n```\n\n## 🤝 Contributing\n\nDecisions for this package are recorded as [Linear](https://linear.app) issues, not in-repo ADRs. Found an issue or want to suggest a rule change? Open an issue in the repository.\n\n## 📄 License\n\nMIT License — see [LICENSE](./LICENSE). Provided \"as is\", without warranty of any kind.\n","readmeFilename":"README.md"}