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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +39 -0
- package/CHANGELOG.md +14 -0
- package/SECURITY.md +25 -0
- package/bin/claude-math.js +14 -7
- package/package.json +3 -1
- package/skills/math-unicode/SKILL.md +18 -12
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-math",
|
|
3
|
-
"version": "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.
|
package/bin/claude-math.js
CHANGED
|
@@ -261,14 +261,21 @@ function status() {
|
|
|
261
261
|
}
|
|
262
262
|
|
|
263
263
|
function prepack() {
|
|
264
|
-
|
|
265
|
-
const
|
|
266
|
-
if (
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
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(
|
|
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.
|
|
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
|
|
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
|
-
-
|
|
123
|
-
|
|
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
|
|
130
|
+
### Rule 5 — Big operators with bounds
|
|
126
131
|
|
|
127
|
-
|
|
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
|
-
∑
|
|
131
|
-
|
|
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) = −
|
|
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
|
|
197
|
-
Sum bounds ∑
|
|
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
|
|