@ivuorinen/base-configs 2.0.31 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CLAUDE.md ADDED
@@ -0,0 +1,121 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Commands
6
+
7
+ Node is managed via **mise**, which reads `.nvmrc` automatically. No manual activation needed in an interactive shell. For scripts:
8
+
9
+ ```sh
10
+ mise exec -- yarn <command>
11
+ ```
12
+
13
+ | Task | Command |
14
+ |------|---------|
15
+ | Fix all (prettier → eslint → markdownlint) | `yarn fix` |
16
+ | ESLint autofix | `yarn eslint:fix` |
17
+ | ESLint report only | `yarn eslint:report` |
18
+ | Prettier autofix | `yarn prettier:fix` |
19
+ | Prettier report only | `yarn prettier:report` |
20
+ | Markdownlint autofix | `yarn markdownlint:fix` |
21
+ | Markdownlint report only | `yarn markdownlint:report` |
22
+ | Validate last commit message | `yarn commitlint` |
23
+
24
+ There is no build step and no test suite — this is a configuration distribution package.
25
+
26
+ ## Architecture
27
+
28
+ `@ivuorinen/base-configs` is a **meta-package**: it has no source code of its own. Its sole purpose is to declare the 7 individual config packages as `dependencies` so consumers can install one package and get all configs:
29
+
30
+ | Config | Package |
31
+ |--------|---------|
32
+ | Browserslist | `@ivuorinen/browserslist-config` |
33
+ | CommitLint | `@ivuorinen/commitlint-config` |
34
+ | ESLint | `@ivuorinen/eslint-config` |
35
+ | Markdownlint | `@ivuorinen/markdownlint-config` |
36
+ | Prettier | `@ivuorinen/prettier-config` |
37
+ | Semantic Release | `@ivuorinen/semantic-release-config` |
38
+ | Stylelint | `@ivuorinen/stylelint-config` |
39
+
40
+ Each config package is versioned and published independently to npm. This repo only bumps their version ranges.
41
+
42
+ - **Package manager**: Yarn 4 (Berry) with `node-modules` linker (no PnP) — always use `yarn` for repo development; consumers may install via `npm` as shown in the README
43
+ - **Module system**: ES Modules (`"type": "module"`)
44
+ - **Node requirement**: `>=20` (active version read from `.nvmrc` by mise)
45
+
46
+ ## Release Process
47
+
48
+ Releases are fully automated via **semantic-release** triggered on push to `main`. Commit messages must follow Conventional Commits (enforced by commitlint via a simple-git-hooks `commit-msg` hook). Never manually bump versions or publish.
49
+
50
+ ## EditorConfig Rules
51
+
52
+ `.editorconfig` is authoritative — all generated code must follow it:
53
+ - Charset: UTF-8, line endings: LF
54
+ - Indent: 2 spaces (all file types)
55
+ - Max line length: 120 (disabled for Markdown)
56
+ - Trim trailing whitespace (except Markdown)
57
+
58
+ ---
59
+
60
+ ## context-mode — MANDATORY routing rules
61
+
62
+ You have context-mode MCP tools available. These rules are NOT optional — they protect your context window from flooding. A single unrouted command can dump 56 KB into context and waste the entire session.
63
+
64
+ ### BLOCKED commands — do NOT attempt these
65
+
66
+ #### curl / wget — BLOCKED
67
+ Any Bash command containing `curl` or `wget` is intercepted and replaced with an error message. Do NOT retry.
68
+ Instead use:
69
+ - `ctx_fetch_and_index(url, source)` to fetch and index web pages
70
+ - `ctx_execute(language: "javascript", code: "const r = await fetch(...)")` to run HTTP calls in sandbox
71
+
72
+ #### Inline HTTP — BLOCKED
73
+ Any Bash command containing `fetch('http`, `requests.get(`, `requests.post(`, `http.get(`, or `http.request(` is intercepted and replaced with an error message. Do NOT retry with Bash.
74
+ Instead use:
75
+ - `ctx_execute(language, code)` to run HTTP calls in sandbox — only stdout enters context
76
+
77
+ #### WebFetch — BLOCKED
78
+ WebFetch calls are denied entirely. The URL is extracted and you are told to use `ctx_fetch_and_index` instead.
79
+ Instead use:
80
+ - `ctx_fetch_and_index(url, source)` then `ctx_search(queries)` to query the indexed content
81
+
82
+ ### REDIRECTED tools — use sandbox equivalents
83
+
84
+ #### Bash (>20 lines output)
85
+ Bash is ONLY for: `git`, `mkdir`, `rm`, `mv`, `cd`, `ls`, `yarn install`, `pip install`, and other short-output commands.
86
+ For everything else, use:
87
+ - `ctx_batch_execute(commands, queries)` — run multiple commands + search in ONE call
88
+ - `ctx_execute(language: "shell", code: "...")` — run in sandbox, only stdout enters context
89
+
90
+ #### Read (for analysis)
91
+ If you are reading a file to **Edit** it → Read is correct (Edit needs content in context).
92
+ If you are reading to **analyze, explore, or summarize** → use `ctx_execute_file(path, language, code)` instead. Only your printed summary enters context. The raw file content stays in the sandbox.
93
+
94
+ #### Grep (large results)
95
+ Grep results can flood context. Use `ctx_execute(language: "shell", code: "grep ...")` to run searches in sandbox. Only your printed summary enters context.
96
+
97
+ ### Tool selection hierarchy
98
+
99
+ 1. **GATHER**: `ctx_batch_execute(commands, queries)` — Primary tool. Runs all commands, auto-indexes output, returns search results. ONE call replaces 30+ individual calls.
100
+ 2. **FOLLOW-UP**: `ctx_search(queries: ["q1", "q2", ...])` — Query indexed content. Pass ALL questions as array in ONE call.
101
+ 3. **PROCESSING**: `ctx_execute(language, code)` | `ctx_execute_file(path, language, code)` — Sandbox execution. Only stdout enters context.
102
+ 4. **WEB**: `ctx_fetch_and_index(url, source)` then `ctx_search(queries)` — Fetch, chunk, index, query. Raw HTML never enters context.
103
+ 5. **INDEX**: `ctx_index(content, source)` — Store content in FTS5 knowledge base for later search.
104
+
105
+ ### Subagent routing
106
+
107
+ When spawning subagents (Agent/Task tool), the routing block is automatically injected into their prompt. Bash-type subagents are upgraded to general-purpose so they have access to MCP tools. You do NOT need to manually instruct subagents about context-mode.
108
+
109
+ ### Output constraints
110
+
111
+ - Keep responses under 500 words.
112
+ - Write artifacts (code, configs, PRDs) to FILES — never return them as inline text. Return only: file path + 1-line description.
113
+ - When indexing content, use descriptive source labels so others can `ctx_search(source: "label")` later.
114
+
115
+ ### ctx commands
116
+
117
+ | Command | Action |
118
+ |---------|--------|
119
+ | `ctx stats` | Call the `ctx_stats` MCP tool and display the full output verbatim |
120
+ | `ctx doctor` | Call the `ctx_doctor` MCP tool, run the returned shell command, display as checklist |
121
+ | `ctx upgrade` | Call the `ctx_upgrade` MCP tool, run the returned shell command, display as checklist |
package/README.md CHANGED
@@ -4,11 +4,20 @@
4
4
 
5
5
  This is a meta package for all my base configs.
6
6
 
7
- You can find all the individual configs in the `packages` folder.
8
-
9
7
  The main reason for this package is to make it easier to use these configs in other projects, and to update them all at once. No more pull requests to update all the configs one at a time!
10
8
 
11
- ## Installation
9
+ > A collection of base configs for code quality and linting tools. Heavily based on `@demartini/base-configs`
10
+
11
+ ## Table of Contents <!-- omit in toc -->
12
+
13
+ - [Usage](#usage)
14
+ - [Available Configurations](#available-configurations)
15
+ - [Badge](#badge)
16
+ - [Contributing](#contributing)
17
+ - [Changelog](#changelog)
18
+ - [License](#license)
19
+
20
+ ## Usage
12
21
 
13
22
  ```bash
14
23
  # npm
@@ -18,18 +27,83 @@ npm install @ivuorinen/base-configs --save-dev
18
27
  yarn add @ivuorinen/base-configs --dev
19
28
  ```
20
29
 
30
+ ## Available Configurations
31
+
32
+ | Tool | Package | GitHub | Version |
33
+ | ----------------------------------------- | ----------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------- |
34
+ | [Browserslist][browserslist-link] | [@ivuorinen/browserslist-config][pkg-browserslist] | [GitHub][gh-browserslist] | [![@ivuorinen/browserslist-config][browserslist-badge]][browserslist-npm] |
35
+ | [CommitLint][commitlint-link] | [@ivuorinen/commitlint-config][pkg-commitlint] | [GitHub][gh-commitlint] | [![@ivuorinen/commitlint-config][commitlint-badge]][commitlint-npm] |
36
+ | [ESLint][eslint-link] | [@ivuorinen/eslint-config][pkg-eslint] | [GitHub][gh-eslint] | [![@ivuorinen/eslint-config][eslint-badge]][eslint-npm] |
37
+ | [MarkdownLint][markdownlint-link] | [@ivuorinen/markdownlint-config][pkg-markdownlint] | [GitHub][gh-markdownlint] | [![@ivuorinen/markdownlint-config][markdownlint-badge]][markdownlint-npm] |
38
+ | [Prettier][prettier-link] | [@ivuorinen/prettier-config][pkg-prettier] | [GitHub][gh-prettier] | [![@ivuorinen/prettier-config][prettier-badge]][prettier-npm] |
39
+ | [semantic-release][semantic-release-link] | [@ivuorinen/semantic-release-config][pkg-src] | [GitHub][gh-semantic-release] | [![@ivuorinen/semantic-release-config][semantic-release-badge]][semantic-release-npm] |
40
+ | [stylelint][stylelint-link] | [@ivuorinen/stylelint-config][pkg-stylelint] | [GitHub][gh-stylelint] | [![@ivuorinen/stylelint-config][stylelint-badge]][stylelint-npm] |
41
+
42
+ [pkg-browserslist]: https://www.npmjs.com/package/@ivuorinen/browserslist-config
43
+ [pkg-commitlint]: https://www.npmjs.com/package/@ivuorinen/commitlint-config
44
+ [pkg-eslint]: https://www.npmjs.com/package/@ivuorinen/eslint-config
45
+ [pkg-markdownlint]: https://www.npmjs.com/package/@ivuorinen/markdownlint-config
46
+ [pkg-prettier]: https://www.npmjs.com/package/@ivuorinen/prettier-config
47
+ [pkg-src]: https://www.npmjs.com/package/@ivuorinen/semantic-release-config
48
+ [pkg-stylelint]: https://www.npmjs.com/package/@ivuorinen/stylelint-config
49
+ [gh-browserslist]: https://github.com/ivuorinen/base-configs-browserslist
50
+ [gh-commitlint]: https://github.com/ivuorinen/base-configs-commitlint
51
+ [gh-eslint]: https://github.com/ivuorinen/base-configs-eslint
52
+ [gh-markdownlint]: https://github.com/ivuorinen/base-configs-markdownlint
53
+ [gh-prettier]: https://github.com/ivuorinen/base-configs-prettier
54
+ [gh-semantic-release]: https://github.com/ivuorinen/base-configs-semantic-release
55
+ [gh-stylelint]: https://github.com/ivuorinen/base-configs-stylelint
56
+
57
+ ## Badge
58
+
59
+ Show the world that you are using ivuorinen's code style in your project by including the badge in your readme.
60
+
61
+ [![ivuorinen's Code Style](https://img.shields.io/badge/code_style-ivuorinen%E2%80%99s-663399.svg?labelColor=292a44&style=flat-square)](https://github.com/ivuorinen/base-configs)
62
+
63
+ ```md
64
+ [![ivuorinen's Code Style](https://img.shields.io/badge/code_style-ivuorinen%E2%80%99s-663399.svg?labelColor=292a44&style=flat-square)](https://github.com/ivuorinen/base-configs)
65
+ ```
66
+
67
+ ## Contributing
68
+
69
+ If you are interested in helping contribute, please take a look at our [contribution guidelines][contributing-link] and open an [issue][issue-link] or [pull request][pull-request-link].
70
+
21
71
  ## Changelog
22
72
 
23
73
  See [CHANGELOG][changelog-link] for a human-readable history of changes.
24
74
 
25
75
  ## License
26
76
 
27
- MIT License. See [LICENSE][license-link] for more info.
77
+ Distributed under the MIT License. See [LICENSE][license-link] for more information.
28
78
 
29
- [changelog-link]: ./CHANGELOG.md
79
+ [changelog-link]: https://github.com/ivuorinen/base-configs/releases
80
+ [contributing-link]: https://github.com/ivuorinen/.github/blob/main/CONTRIBUTING.md
81
+ [issue-link]: https://github.com/ivuorinen/base-configs/issues
30
82
  [license-badge]: https://img.shields.io/github/license/ivuorinen/base-configs?style=flat-square&labelColor=292a44&color=663399
31
83
  [license-link]: ./LICENSE
32
- [npm-badge]: https://img.shields.io/npm/v/@ivuorinen/base-configs?style=flat-square&labelColor=292a44&color=663399
33
- [npm-link]: https://www.npmjs.com/package/@ivuorinen/base-configs
84
+ [pull-request-link]: https://github.com/ivuorinen/base-configs/pulls
34
85
  [style-badge]: https://img.shields.io/badge/code_style-ivuorinen%E2%80%99s-663399.svg?labelColor=292a44&style=flat-square
35
86
  [style-link]: https://github.com/ivuorinen/base-configs
87
+ [browserslist-badge]: https://img.shields.io/npm/v/@ivuorinen/browserslist-config?style=flat-square&labelColor=292a44&color=663399
88
+ [browserslist-link]: https://github.com/browserslist/browserslist
89
+ [browserslist-npm]: https://www.npmjs.com/package/@ivuorinen/browserslist-config
90
+ [commitlint-badge]: https://img.shields.io/npm/v/@ivuorinen/commitlint-config?style=flat-square&labelColor=292a44&color=663399
91
+ [commitlint-link]: https://github.com/conventional-changelog/commitlint
92
+ [commitlint-npm]: https://www.npmjs.com/package/@ivuorinen/commitlint-config
93
+ [eslint-badge]: https://img.shields.io/npm/v/@ivuorinen/eslint-config?style=flat-square&labelColor=292a44&color=663399
94
+ [eslint-link]: https://github.com/eslint/eslint
95
+ [eslint-npm]: https://www.npmjs.com/package/@ivuorinen/eslint-config
96
+ [markdownlint-badge]: https://img.shields.io/npm/v/@ivuorinen/markdownlint-config?style=flat-square&labelColor=292a44&color=663399
97
+ [markdownlint-link]: https://github.com/DavidAnson/markdownlint
98
+ [markdownlint-npm]: https://www.npmjs.com/package/@ivuorinen/markdownlint-config
99
+ [prettier-badge]: https://img.shields.io/npm/v/@ivuorinen/prettier-config?style=flat-square&labelColor=292a44&color=663399
100
+ [prettier-link]: https://github.com/prettier/prettier
101
+ [prettier-npm]: https://www.npmjs.com/package/@ivuorinen/prettier-config
102
+ [semantic-release-badge]: https://img.shields.io/npm/v/@ivuorinen/semantic-release-config?style=flat-square&labelColor=292a44&color=663399
103
+ [semantic-release-link]: https://github.com/semantic-release/semantic-release
104
+ [semantic-release-npm]: https://www.npmjs.com/package/@ivuorinen/semantic-release-config
105
+ [stylelint-badge]: https://img.shields.io/npm/v/@ivuorinen/stylelint-config?style=flat-square&labelColor=292a44&color=663399
106
+ [stylelint-link]: https://github.com/stylelint/stylelint
107
+ [stylelint-npm]: https://www.npmjs.com/package/@ivuorinen/stylelint-config
108
+ [npm-badge]: https://img.shields.io/npm/v/@ivuorinen/base-configs?style=flat-square&labelColor=292a44&color=663399
109
+ [npm-link]: https://www.npmjs.com/package/@ivuorinen/base-configs
@@ -0,0 +1,48 @@
1
+ # Nitpicker Findings
2
+
3
+ - Generated: 2026-06-25
4
+ - Last validated: 2026-06-25
5
+ - Scope: all uncommitted changes (changed-files mode) on branch `chore/upgrades`
6
+
7
+ ## Summary
8
+
9
+ - Total: 1 | Open: 1 | Fixed: 0 | Invalid: 0
10
+
11
+ Reviewed changes:
12
+
13
+ - Prettier YAML reformats: `codeql.yml`, `stale.yml`, `sync-labels.yml`, `.yarnrc.yml`
14
+ - `js-yaml` resolution added to `package.json`
15
+ - node_modules cache-key change in `pr.yml` and `publish.yml`
16
+ - New config files: `.coderabbit.yaml`, `.mega-linter.yml`
17
+
18
+ No correctness, security, reliability, maintainability, or convention defects were found.
19
+
20
+ ## Open Findings
21
+
22
+ ### Advisory
23
+
24
+ #### [N1] zizmor online-audit re-enable cannot be confirmed without a CI run
25
+
26
+ - Category: reliability
27
+ - Area: `.mega-linter.yml`
28
+ - Problem: Exposing `GITHUB_TOKEN` lets zizmor's online `impostor-commit` audit authenticate instead of returning HTTP 401.
29
+ - Evidence: `ACTION_ZIZMOR_UNSECURED_ENV_VARIABLES` is in the MegaLinter v9.5.0 schema and is the documented remedy.
30
+ - Evidence: Online audits run only inside MegaLinter's CI; local validation cannot exercise the token hand-off.
31
+ - Impact: Informational. If MegaLinter does not surface `GITHUB_TOKEN` to the zizmor step in CI, the 401 may persist.
32
+ - Fix: No action now. If CI still 401s, set `ACTION_ZIZMOR_ARGUMENTS: --no-online-audits` to skip only online audits.
33
+
34
+ ## Verification notes (no findings)
35
+
36
+ - Prettier quote changes parse to identical YAML trees versus `HEAD` for all four files; no semantic change.
37
+ - `js-yaml` `^4.2.0` removes the vulnerable `4.1.1` (CVE-2026-53550); only `4.2.0` remains, with no `3.x` consumer.
38
+ - Cache key `hashFiles('.nvmrc', '**/yarn.lock')` references existing files; no `restore-keys`, so a Node bump misses cleanly.
39
+ - `.coderabbit.yaml` and `.mega-linter.yml` pass prettier and yamllint, and validate against their published JSON schemas.
40
+ - `zizmor --persona auditor .github/workflows/` reports no findings.
41
+
42
+ ## Fixed
43
+
44
+ None.
45
+
46
+ ## Invalid
47
+
48
+ None.
@@ -0,0 +1,12 @@
1
+ import ivuorinenConfig from '@ivuorinen/eslint-config'
2
+
3
+ export default [
4
+ ...ivuorinenConfig,
5
+
6
+ // your modifications
7
+ {
8
+ rules: {
9
+ // "no-unused-vars": "warn"
10
+ }
11
+ }
12
+ ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ivuorinen/base-configs",
3
- "version": "2.0.31",
3
+ "version": "3.0.1",
4
4
  "type": "module",
5
5
  "description": "ivuorinen's shareable configurations meta package",
6
6
  "author": {
@@ -10,30 +10,64 @@
10
10
  "bugs": {
11
11
  "url": "https://github.com/ivuorinen/base-configs/issues"
12
12
  },
13
+ "contributors": [
14
+ {
15
+ "name": "Base Configs Contributors",
16
+ "url": "https://github.com/ivuorinen/base-configs/graphs/contributors"
17
+ }
18
+ ],
13
19
  "engines": {
14
20
  "node": ">=20"
15
21
  },
16
- "homepage": "https://github.com/ivuorinen/base-configs/tree/main/packages/base-configs#readme",
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "homepage": "https://github.com/ivuorinen/base-configs#readme",
17
26
  "keywords": [
18
- "base-config",
27
+ "commitlint",
19
28
  "config",
20
- "ivuorinen"
29
+ "eslint",
30
+ "lint",
31
+ "markdownlint",
32
+ "prettier",
33
+ "semantic-release",
34
+ "stylelint"
21
35
  ],
22
36
  "license": "MIT",
23
- "publishConfig": {
24
- "access": "public"
25
- },
26
37
  "repository": {
27
38
  "type": "git",
28
- "url": "git+https://github.com/ivuorinen/base-configs.git"
39
+ "url": "https://github.com/ivuorinen/base-configs.git"
40
+ },
41
+ "scripts": {
42
+ "commitlint": "./node_modules/.bin/commitlint --from HEAD~1 --to HEAD --verbose",
43
+ "eslint:fix": "./node_modules/.bin/eslint '**/*.{js,tsx,ts,mjs,cjs}' --fix",
44
+ "eslint:report": "./node_modules/.bin/eslint '**/*.{js,tsx,ts,mjs,cjs}'",
45
+ "fix": "./node_modules/.bin/run-s prettier:fix eslint:fix markdownlint:fix",
46
+ "markdownlint:fix": "./node_modules/.bin/markdownlint '**/*.md' --fix",
47
+ "markdownlint:report": "./node_modules/.bin/markdownlint '**/*.md'",
48
+ "prettier:fix": "./node_modules/.bin/prettier '**/*.{js,tsx,ts,json,mjs,cjs}' '.*.{js,mjs,cjs,json}' --write",
49
+ "prettier:report": "./node_modules/.bin/prettier '**/*.{js,tsx,ts,json,mjs,cjs}' '.*.{js,mjs,cjs,json}' --check"
29
50
  },
30
51
  "dependencies": {
31
- "@ivuorinen/browserslist-config": "^0.4.4",
32
- "@ivuorinen/commitlint-config": "^0.3.8",
33
- "@ivuorinen/eslint-config": "^0.5.12",
34
- "@ivuorinen/markdownlint-config": "^0.3.15",
35
- "@ivuorinen/prettier-config": "^0.3.8",
36
- "@ivuorinen/semantic-release-config": "^0.3.9"
37
- },
38
- "gitHead": "b57fd98a95ff5b7822f8c8da04439f5c8d3e6033"
52
+ "@ivuorinen/browserslist-config": "^1.1.4",
53
+ "@ivuorinen/commitlint-config": "^1.0.32",
54
+ "@ivuorinen/eslint-config": "^1.2.3",
55
+ "@ivuorinen/markdownlint-config": "^1.1.3",
56
+ "@ivuorinen/prettier-config": "^2.0.0",
57
+ "@ivuorinen/semantic-release-config": "^2.0.0",
58
+ "@ivuorinen/stylelint-config": "^1.1.2"
59
+ },
60
+ "devDependencies": {
61
+ "@types/node": "^26.0.0",
62
+ "npm-run-all2": "^9.0.2",
63
+ "simple-git-hooks": "^2.13.1",
64
+ "typescript": "^6.0.3"
65
+ },
66
+ "resolutions": {
67
+ "js-yaml": "^5.0.0",
68
+ "minimatch": "^10.2.4",
69
+ "picomatch": "^4.0.4",
70
+ "undici": "^8.5.0"
71
+ },
72
+ "packageManager": "yarn@4.17.1"
39
73
  }