claude-math 0.2.0 → 0.3.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.
@@ -11,7 +11,7 @@
11
11
  "name": "claude-math",
12
12
  "source": "./",
13
13
  "description": "Renders math as Unicode glyphs in the terminal instead of unrenderable LaTeX",
14
- "version": "0.2.0"
14
+ "version": "0.3.1"
15
15
  }
16
16
  ]
17
17
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-math",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "Render math legibly in Claude Code. Emits Unicode glyphs instead of unrenderable LaTeX in the terminal (works in every terminal). Graphical sixel/kitty rendering is on the roadmap.",
5
5
  "author": {
6
6
  "name": "Vladimir Rotariu",
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "claude-math",
3
+ "version": "0.3.1",
4
+ "description": "Emit mathematics as inline Unicode (∑, ≤, ℝ, x², matrices, set-builder) instead of LaTeX, so equations stay legible in the Codex TUI and any terminal. Copy- and search-safe. Also works in Claude Code.",
5
+ "author": {
6
+ "name": "Vladimir Rotariu",
7
+ "url": "https://github.com/vladimirrott"
8
+ },
9
+ "license": "MIT",
10
+ "homepage": "https://github.com/vladimirrott/claude-math",
11
+ "repository": "https://github.com/vladimirrott/claude-math",
12
+ "keywords": [
13
+ "math",
14
+ "latex",
15
+ "unicode",
16
+ "terminal",
17
+ "codex-skills",
18
+ "claude-skills",
19
+ "rendering"
20
+ ],
21
+ "skills": "./skills/",
22
+ "interface": {
23
+ "displayName": "claude-math",
24
+ "shortDescription": "Readable Unicode math in the terminal instead of LaTeX.",
25
+ "longDescription": "A skill that makes the model emit mathematics as inline Unicode glyphs (∑, ≤, ℝ, x², ∫₀¹, matrices, set-builder) instead of LaTeX, so equations stay legible in the Codex TUI and any terminal. Copy- and search-safe (no math-alphanumeric styling codepoints). Also works in Claude Code via the same SKILL.md.",
26
+ "developerName": "Vladimir Rotariu",
27
+ "category": "Productivity",
28
+ "capabilities": [
29
+ "Read",
30
+ "Write"
31
+ ],
32
+ "websiteURL": "https://github.com/vladimirrott/claude-math",
33
+ "defaultPrompt": [
34
+ "State the Shannon entropy and explain each term.",
35
+ "Write the cohort filter as a set-builder expression.",
36
+ "Show the gradient descent update rule."
37
+ ]
38
+ }
39
+ }
package/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to `claude-math` documented here. Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versioning: [SemVer](https://semver.org/).
4
4
 
5
+ ## [0.3.1](https://github.com/vladimirrott/claude-math/compare/v0.3.0...v0.3.1) (2026-07-20)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **skill:** bracket big-operator bounds and parenthesize multi-char exponents ([#11](https://github.com/vladimirrott/claude-math/issues/11)) ([4284b6d](https://github.com/vladimirrott/claude-math/commit/4284b6d5b7819308b038cd2b798fb0bef028fa69))
11
+
12
+ ## [0.3.0](https://github.com/vladimirrott/claude-math/compare/v0.2.0...v0.3.0) (2026-07-18)
13
+
14
+
15
+ ### Features
16
+
17
+ * make claude-math a first-class Codex plugin + harden CI supply chain ([#8](https://github.com/vladimirrott/claude-math/issues/8)) ([9acb093](https://github.com/vladimirrott/claude-math/commit/9acb0934025572daa2607ecd7c7b92b94321bbdd))
18
+
5
19
  ## [0.2.0](https://github.com/vladimirrott/claude-math/compare/v0.1.0...v0.2.0) (2026-07-17)
6
20
 
7
21
 
package/SECURITY.md ADDED
@@ -0,0 +1,25 @@
1
+ # Security Policy
2
+
3
+ ## Supported versions
4
+
5
+ Only the latest published version of `claude-math` on npm is supported. Fixes
6
+ ship in a new release rather than as patches to older versions.
7
+
8
+ ## Scope
9
+
10
+ `claude-math` is a Claude Code / Codex CLI skill plus a small Node installer. It
11
+ has no network calls and no runtime service. The installer only symlinks or
12
+ copies the skill into your agent's local plugin directory. The main surface
13
+ worth reporting is anything that would let the installer write outside that
14
+ directory or execute untrusted code.
15
+
16
+ ## Reporting a vulnerability
17
+
18
+ Please report privately. Do not open a public issue for security reports.
19
+
20
+ - Preferred: open a [GitHub security advisory](https://github.com/vladimirrott/claude-math/security/advisories/new).
21
+ - Or email the maintainer at the address on the npm package page.
22
+
23
+ You will get an acknowledgement within a few days. Once a fix is released, the
24
+ advisory will be published with credit to the reporter unless you prefer to stay
25
+ anonymous.
@@ -261,14 +261,21 @@ function status() {
261
261
  }
262
262
 
263
263
  function prepack() {
264
- const pluginJsonPath = join(PLUGIN_ROOT, ".claude-plugin", "plugin.json");
265
- const pj = JSON.parse(readFileSync(pluginJsonPath, "utf8"));
266
- if (pj.version !== pkg.version) {
267
- pj.version = pkg.version;
268
- writeFileSync(pluginJsonPath, JSON.stringify(pj, null, 2) + "\n");
269
- log(`synced plugin.json version → ${pkg.version}`);
264
+ syncManifestVersion(join(PLUGIN_ROOT, ".claude-plugin", "plugin.json"), "plugin.json");
265
+ const codexManifest = join(PLUGIN_ROOT, ".codex-plugin", "plugin.json");
266
+ if (existsSync(codexManifest)) {
267
+ syncManifestVersion(codexManifest, ".codex-plugin/plugin.json");
268
+ }
269
+ }
270
+
271
+ function syncManifestVersion(path, label) {
272
+ const manifest = JSON.parse(readFileSync(path, "utf8"));
273
+ if (manifest.version !== pkg.version) {
274
+ manifest.version = pkg.version;
275
+ writeFileSync(path, JSON.stringify(manifest, null, 2) + "\n");
276
+ log(`synced ${label} version → ${pkg.version}`);
270
277
  } else {
271
- log(`plugin.json already at ${pkg.version}`);
278
+ log(`${label} already at ${pkg.version}`);
272
279
  }
273
280
  }
274
281
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-math",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "Render math legibly in Claude Code. Emits Unicode glyphs instead of unrenderable LaTeX in the terminal. (Graphical sixel/kitty rendering is on the roadmap.)",
5
5
  "keywords": [
6
6
  "claude",
@@ -32,7 +32,9 @@
32
32
  },
33
33
  "files": [
34
34
  ".claude-plugin/",
35
+ ".codex-plugin/",
35
36
  "skills/",
37
+ "SECURITY.md",
36
38
  "bin/",
37
39
  "README.md",
38
40
  "LICENSE",
@@ -111,25 +111,30 @@ Good:
111
111
 
112
112
  ### Rule 3 — Subscripts
113
113
 
114
- - Single Unicode-renderable index: prefer the glyph (x₁, x₂, xᵢ, x)
115
- - Multi-character or non-mappable subscript: keep `_{...}` syntax for clarity
114
+ - Single Unicode-renderable index: prefer the glyph (x₁, x₂, xᵢ, xⱼ, xₙ)
115
+ - Multi-character or non-mappable subscript: keep `_{...}` syntax the
116
+ underscore reads unambiguously as a subscript and stays more legible than
117
+ bracket-style indexing:
116
118
  - `n_{s,r}` ← (s,r) has no Unicode subscript form
117
119
  - `x_max`, `σ_obs` ← multi-letter
118
120
  - Never mix: don't write `x_₁` or `x_{1}` when `x₁` works.
119
121
 
120
122
  ### Rule 4 — Superscripts (powers)
121
123
 
122
- - Integer powers, simple: x², x³, xⁿ, e^x → eˣ
123
- - Multi-character / non-mappable: `x^{T}`, `x^{(i)}`, `A^{-1}` (or A⁻¹ if the exponent is simple)
124
+ - Simple / Unicode-mappable exponent: prefer the glyph — x², x³, xⁿ, eˣ, A⁻¹,
125
+ and the transpose x / vᵀ.
126
+ - Multi-character or expression exponent: use **caret + parentheses**, never
127
+ `^{...}` — `x^(k+1)`, `x^(i)`, `e^(iπ)`. A bare `x^{T}` / `x^{(i)}` leaks
128
+ LaTeX source; write `xᵀ` (single glyph) or `x^(i)` (parenthesized).
124
129
 
125
- ### Rule 5 — Big operators with indices
130
+ ### Rule 5 — Big operators with bounds
126
131
 
127
- Use Unicode operator + ASCII bounds:
132
+ Unicode operator + a **bracketed inline range** — never `_{...}^{...}`. Use `..`
133
+ for a numeric/expression range, `∈` for set membership, `→` for a limit target:
128
134
 
129
135
  ```
130
- _{i=1}^{n} aᵢ
131
- ∏_{k K} pₖ
132
- ∫_a^b f(x) dx
136
+ [i=1..n] aᵢ ∏[k ∈ K] pₖ ∫[a..b] f(x) dx
137
+ ∫[-∞..∞] e^(-x²) dx ⋃[i=1..n] Aᵢ lim[x→0] f(x)
133
138
  ```
134
139
 
135
140
  ### Rule 6 — Fractions
@@ -172,7 +177,7 @@ Q = { (s,r) ∈ T : n_{s,r} ≥ 18 ∧ p⁰_{s,r} < 0.9 }
172
177
  If a glyph chain becomes denser than the LaTeX it replaces, switch to readable ASCII pseudo-LaTeX and annotate it. Example:
173
178
 
174
179
  ```
175
- H(p) = − Σ_{x ∈ X} p(x) · log p(x) (Σ = sum over the support X)
180
+ H(p) = − ∑[x ∈ X] p(x) · log p(x) ( = sum over the support X)
176
181
  ```
177
182
 
178
183
  The reader's comprehension is the only metric. Choose whichever form is clearest, then stay consistent within a passage.
@@ -193,8 +198,8 @@ Variance Var(X) = 𝔼[X²] − 𝔼[X]²
193
198
  Gradient ∇f = ( ∂f/∂x₁ , ... , ∂f/∂xₙ )
194
199
  Norm ‖x‖₂ = √(Σᵢ xᵢ²)
195
200
  Big-O T(n) = O(n log n)
196
- Limit lim_{n → ∞} aₙ = L
197
- Sum bounds ∑_{i=1}^{n} i = n(n+1)/2
201
+ Limit lim[n → ∞] aₙ = L
202
+ Sum bounds ∑[i=1..n] i = n(n+1)/2
198
203
  Quantile q_α = inf{ x : F(x) ≥ α }
199
204
  ```
200
205
 
@@ -205,6 +210,7 @@ Quantile q_α = inf{ x : F(x) ≥ α }
205
210
  ✗ \( a^2 + b^2 = c^2 \)
206
211
  ✗ $$\int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}$$
207
212
  ✗ \[ |Q|/|T| \approx 16.9\% \]
213
+ ✗ ∑_{i=1}^{n} or ∫_a^b or x^{T} (stacked bounds / brace exponent leak source even without $…$ — write ∑[i=1..n], ∫[a..b], xᵀ)
208
214
  ✗ Let 𝑉𝑎𝑟 = … or matrix 𝐀 = … (math-alphanumeric styling; garbles on copy/search — write Var, A)
209
215
  ```
210
216