Plugin directory / Developer / dsh-checkdigit
dsh-checkdigit
Unverified TYEclipse
What it does
Check-digit mathematics toolbox for DeepSeek Harness (dsh): generate, validate and detect Luhn / Verhoeff / Damm / ISBN / EAN / UPC / ISIN / CUSIP / IBAN check digits — zero runtime dependencies
Unverified — not yet verified
Check-digit mathematics toolbox for DeepSeek Harness (dsh): generate, validate and detect Luhn / Verhoeff / Damm / ISBN / EAN / UPC / ISIN / CUSIP / IBAN check digits — zero runtime dependencies Not yet verified — install and test it yourself.
“Unverified” means our automated CI has not yet installed this plugin. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.
README
dsh-checkdigit
Check-digit mathematics toolbox for DeepSeek Harness (dsh): generate, validate and detect check digits for 11 schemes — Luhn, Verhoeff, Damm, ISBN-10, ISBN-13, EAN-8, EAN-13, UPC-A, ISIN, CUSIP and IBAN.
校验位数学工具箱:生成 / 验证 / 识别 11 种校验位(Luhn、Verhoeff、Damm、ISBN、EAN、UPC、ISIN、CUSIP、IBAN),零运行时依赖、纯本地算术。
Why
Language models routinely botch check-digit arithmetic: wrong card-number checksums, ISBNs that fail validation, IBANs with impossible check digits. Every algorithm here is implemented from its published specification with pure integer arithmetic — deterministic, offline, zero runtime dependencies — and cross-checked against published worked examples (Apple's US0378331005, the classic GB82 WEST 1234 5698 7654 32, the Luhn textbook example 79927398713, and more).
Install
dsh plugin --profile web add github:TYEclipse/dsh-checkdigit
Then add dsh-checkdigit to dsh.profile.bundles in your profile's package.json if it is not auto-activated, and restart dsh.
Tools
checkdigit_generate
Compute the check digit for a payload and return the complete identifier.
checkdigit_generate(scheme="luhn", payload="7992739871")
→ checkDigit: "3", complete: "79927398713"
Supported scheme values and their payloads:
| scheme | payload | check digit | example complete |
|---|---|---|---|
luhn |
digits (any length ≥ 1) | last digit | 79927398713 |
verhoeff |
digits (any length ≥ 1) | last digit | 2363 |
damm |
digits (any length ≥ 1) | last digit | 5724 |
isbn10 |
9 digits | 10th char (0-9 or X) | 0306406152 |
isbn13 |
12 digits | 13th digit | 9780306406157 |
ean8 |
7 digits | 8th digit | 96385074 |
ean13 |
12 digits | 13th digit | 4006381333931 |
upca |
11 digits | 12th digit | 036000291452 |
isin |
2 letters + 9 alphanumerics | 12th char (digit) | US0378331005 |
cusip |
8 chars from [A-Z0-9*@#] |
9th char (digit) | 037833100 |
iban |
2-letter country + BBAN | chars 3–4 (two digits) | GB82WEST12345698765432 |
Use it to build test card numbers, ISBNs, barcodes, securities identifiers or account numbers whose check digits actually verify.
checkdigit_validate
Verify the check digit of a full identifier. The scheme is auto-detected when omitted (ISIN → CUSIP → IBAN → EAN-13 → UPC-A → EAN-8 → ISBN-10 → Luhn); pass scheme to force one.
checkdigit_validate(value="GB82WEST12345698765432")
→ valid: true, scheme: "iban", iban.country: "GB", iban.formatted: "GB82 WEST 1234 5698 7654 32"
checkdigit_validate(value="79927398714")
→ valid: false, scheme: "luhn", checkDigit: "4", expected: "3",
detail: "Luhn: check digit should be 3, but the value ends in 4"
Spaces and dashes in the input are ignored. When a value is invalid, the result carries the expected check digit so callers can fix it programmatically.
checkdigit_info
Describe the supported schemes: identifier lengths, payload formats, check-digit positions and worked examples. Call with a scheme for one scheme, or without arguments for all 11.
Supported schemes
| Scheme | Standard | Detail |
|---|---|---|
| Luhn | ISO/IEC 7812 | Credit/debit cards, IMEI, loyalty cards |
| Verhoeff | — | Dihedral-group checksum; catches all single errors and adjacent transpositions |
| Damm | — | Quasigroup operation; full-value tally must be zero |
| ISBN-10 | ISO 2108 | Mod-11; check digit may be X (= 10) |
| ISBN-13 | ISO 2108 | EAN-13 arithmetic (Bookland) |
| EAN-8 / EAN-13 | GS1 GTIN-8 / GTIN-13 | Retail barcodes |
| UPC-A | GS1 GTIN-12 | North American retail barcodes |
| ISIN | ISO 6166 | Securities; letters expand A=10…Z=35, then Luhn |
| CUSIP | ANSI X9.6 | North American securities; * @ # allowed; even positions doubled |
| IBAN | ISO 13616 | Mod-97 over letter-expanded rearranged string; BBAN length table for 75+ countries |
Development
pnpm install
pnpm build
pnpm test # 51 tests, anchors cross-checked against published worked examples
pnpm lint
License
MIT
Install
Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:
dsh plugin add dshbase-catalog Then say "install dsh-checkdigit for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.
This plugin is GitHub source (not published to npm) — install it straight from the repo:
Web profile:
dsh plugin --profile web add github:TYEclipse/dsh-checkdigit Headless (CLI) profile:
dsh plugin --profile headless add github:TYEclipse/dsh-checkdigit Test report
Not yet L3-verified — see failure note below if we already ran it.