Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add ntaffzii/Skill-Agents --skill thai-id-validategit clone --depth 1 https://github.com/ntaffzii/Skill-AgentsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ntaffzii/skill-agents/thai-id-validate)<a href="https://agentmods.dev/skills/ntaffzii/skill-agents/thai-id-validate"><img src="https://agentmods.dev/badge/skills/ntaffzii/skill-agents/thai-id-validate/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/ntaffzii/skill-agents/thai-id-validate"><img src="https://agentmods.dev/badge/skills/ntaffzii/skill-agents/thai-id-validate.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00130 | $0.01510 |
| Opus 5 | $0.00065 | $0.00755 |
| Sonnet 5 | $0.00026 | $0.00302 |
| Haiku 4.5 | $0.00013 | $0.00151 |
Grade A, and why
thai-id-validate scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 78 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Thai ID / Phone / PromptPay Validation
Overview
A Thai national ID (and tax ID, same 13-digit scheme) has a checksum digit, not just a fixed length — a model that validates with ^\d{13}$ alone will happily accept an ID that fails the real check. PromptPay QR codes are EMVCo TLV-encoded with a CRC-16 checksum; hand-rolling this without the exact tag structure and CRC algorithm produces a QR code that scanner apps reject. This skill supplies the real checksum algorithm, phone normalization, and a working EMVCo payload builder.
When to use
- ตรวจเลขบัตรประชาชน/เลขผู้เสียภาษี 13 หลักว่า checksum ผ่านไหม
- Normalizing a Thai phone number from mixed formats (
081-234-5678,+66 81 234 5678,66812345678) to a single canonical form - Generating a PromptPay QR payload string for a mobile number or national ID proxy, static or with a fixed amount
When NOT to use
- The task needs to verify an ID belongs to a real, specific person — that requires a government lookup (DOPA), not a checksum; checksum only proves the number is well-formed, not that it is real or belongs to anyone in particular
- The task needs an actual scannable QR image — this skill produces the payload string; rendering it as a QR code image needs a QR-encoding library (e.g.
qrcodein Python), which is outside this skill's scope
Core knowledge
National ID / tax ID checksum (13 digits, weighted mod-11):
sum = Σ d[i] * (13 - i) for i = 0..11 (first 12 digits)
check_digit = (11 - (sum % 11)) % 10
The 13th digit must equal check_digit. This is the same algorithm for a personal national ID and a juristic-person tax ID.
Phone normalization: canonical local form is 0 + 9 digits (10 digits total, e.g. 0812345678). International form drops the leading 0 and prefixes 66 (e.g. 66812345678 or +66 81 234 5678).
PromptPay QR payload (EMVCo QR Code for Payment Systems, Thai PromptPay profile): a flat TLV (tag-length-value) string:
| Tag | Meaning | Value |
|---|---|---|
00 |
Payload Format Indicator | 01 |
01 |
Point of Initiation Method | 11 static (no amount) / 12 dynamic (fixed amount) |
29 |
Merchant Account Info (PromptPay) | nested TLV: 00=GUID A000000677010111, 01=mobile proxy (0066 + 9-digit phone) or 02=13-digit national/tax ID proxy |
53 |
Transaction Currency | 764 (ISO 4217 numeric code for THB) |
54 |
Transaction Amount | THB amount, 2 decimals — only present on a dynamic QR |
58 |
Country Code | TH |
63 |
CRC | CRC-16/CCITT-FALSE (poly 0x1021, init 0xFFFF, no reflect, xorout 0) of everything up to and including the 6304 tag+length prefix, appended as 4 uppercase hex digits |
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 9d ago First seen · 78 lines · 130 tokens per session scan A 24483d6f67b8
thai-id-validate is a skill published in the GitHub repository ntaffzii/Skill-Agents (4 stars, last pushed today), licensed MIT. It adds 130 tokens to every session and 1,510 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
bionic-safety-net
Unified survival infrastructure: health, finance, legal safety, circuit breakers, and structural protection against all ruin classes. The last line of defense.
legal-translation
Translate legal documents from any language into English while preserving .docx formatting and translating track changes and headers/footers. Use this skill whenever the user asks to translate a legal document, contract, deed, agreement, or any formal legal text into English. Also trigger when the user mentions…
legal-translation-US
Translate legal documents from any language into English while preserving .docx formatting and translating track changes and headers/footers. Use this skill whenever the user asks to translate a legal document, contract, deed, agreement, or any formal legal text into English. Also trigger when the user mentions…
Icelandic Legal Terminology
Use this skill when asked to translate, explain, or map Icelandic legal terms to English (or vice versa). Triggers on requests involving Icelandic legal vocabulary, legal translation, understanding Icelandic statutes or court decisions, or cross-referencing Icelandic and common law concepts.
route-legal-translation
Pick the right LLM for LEGAL TRANSLATION — translating contracts, statutes, case law, and legal correspondence across languages, including Arabic/MENA. Vendor-neutral routing triangulated from mid-2026 evidence (WMT25 human eval, SwiLTra-Bench legal-MT, multilingual-reasoning proxies, ArabLegalEval). There is NO clean…
counterparty-guard
A Russian business-counterparty check based on an identification number called an INN. It gathers public records about a company or sole proprietor and presents deal-risk signals.