praneet-front

praneet-front is a skill for Claude Code, Codex from agent-dev-thai/praneet-front. It costs 143 tokens per session (1,303 once invoked), scanned A, original, MIT.

A design guide for building Thai-language or Thai-English web interfaces, including rules for Thai text, spacing, line height, and font choices.

In plain words
What is it for?
Use it when creating or styling Thai websites, dashboards, landing pages, or apps, including bilingual products. It also covers choosing Thai and Latin font pairings.
Why use it?
Default web typography can clip Thai marks, mix incompatible letter styles, or make Thai text harder to read. This guide explains settings that avoid those problems.

Skill for Claude CodeCodex

Part of the praneet-front plugin — 1 skill shipped together

Install

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.

agentmods
npx agentmods add skills/agent-dev-thai/praneet-front/praneet-front
Any agent
npx skills add agent-dev-thai/praneet-front --skill praneet-front
Clone the repo
git clone --depth 1 https://github.com/agent-dev-thai/praneet-front

Made for: Claude Code, Codex.

Or install praneet-front, the plugin that ships this one along with the rest of its 1 skill.

Wrote 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.

agentmods badge for praneet-front

README.md
[![agentmods](https://agentmods.dev/badge/skills/agent-dev-thai/praneet-front/praneet-front.svg)](https://agentmods.dev/skills/agent-dev-thai/praneet-front/praneet-front)
Your own site
<a href="https://agentmods.dev/skills/agent-dev-thai/praneet-front/praneet-front"><img src="https://agentmods.dev/badge/skills/agent-dev-thai/praneet-front/praneet-front.svg" alt="Measured on agentmods" height="20"></a>
Per session 143 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,303 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00143 $0.01303
Opus 5 $0.00072 $0.00651
Sonnet 5 $0.00029 $0.00261
Haiku 4.5 $0.00014 $0.00130

Measured 5d ago against content hash 325120f791b7, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-05, from the pricing page.

Security

Grade A, and why

praneet-front 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 5d 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.

skills/praneet-front/SKILL.md · 50 lines

How it starts

The opening of the file, as written. The whole thing — 50 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Thai Frontend Design

Apply this skill ON TOP of frontend-design, never instead of it. frontend-design owns the design process (brainstorm → plan → critique → build, signature element, restraint). This skill owns everything that changes when the page contains Thai script. When both apply, frontend-design's process runs first; this skill's rules override its typography defaults wherever Thai text is rendered.

Why Thai breaks default pairings

Thai stacks up to four glyphs vertically (consonant + above-vowel + tone mark, plus below-vowels), has no spaces between words, and its letterforms split into two families — looped (มีหัว, traditional reading forms) and loopless (ไม่มีหัว, modern/geometric). A Latin-first pairing ignores all three, producing clipped marks, tofu/system fallback, and arbitrary loop mixing. Every rule below exists to fix one of these.

Hard rules (non-negotiable)

  1. Line-height: Thai body 1.6–1.8 (never below 1.55). Headings/display 1.2–1.35. Test with stacked-mark words: น้ำ ที่ ปั๊ม.
  2. NEVER apply letter-spacing to Thai. It splits combining marks and breaks SARA AM (U+0E33) shaping. If the design system tracks Latin, scope it (:lang(en) or Latin-only class) and force letter-spacing: normal on Thai containers.
  3. NEVER ship a font stack without a Thai-capable fallback. Always end with: 'Noto Sans Thai', 'Sukhumvit Set', 'Thonburi', system-ui, sans-serif. (iOS/macOS ship Thonburi + Sukhumvit Set; Android ships Noto Sans Thai.)
  4. Looped vs loopless is a deliberate choice, never an accident. Default convention backed by readability research (Typotheque 2025: looped reads measurably faster in paragraphs, preferred for long sessions): loopless for headings, looped for body. All-loopless is acceptable only for young-skewing, short-string UI (modern tech/consumer). Never set long-form body, government, or finance content in loopless.
  5. NEVER use display/handwriting faces for body text (Pattaya, Charmonman, Charm, Srisakdi, Itim, Mali, Sriracha, Chonburi).
  6. NEVER use word-break: break-all or break-word on Thai — breaks mid-syllable. Rely on browser dictionary segmentation (word-break: normal); for critical layouts use Intl.Segmenter('th', {granularity:'word'}) + <wbr>/U+200B.
  7. Thai and Latin don't match in apparent size. Pair via unicode-range @font-face split (Thai block: U+0E00–0E7F) under one family name, and tune with font-size-adjust or a slightly larger Thai size. Pattern in assets/starter.css.

Read the full file on GitHub · 50 lines

Files

What ships with it

4 files 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.

Changes

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.

  1. 5d ago First seen · 50 lines · 143 tokens per session scan A 325120f791b7

Subscribe to this mod's changes

praneet-front is a skill published in the GitHub repository agent-dev-thai/praneet-front (10 stars, last pushed 2mo ago), licensed MIT. It adds 143 tokens to every session and 1,303 once invoked, about $0.0007 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.

Related

Other skills, from other repositories

rtl-aware-development

OpenCode Desktop should be RTL-aware. Use when implementing or reviewing RTL/LTR behavior in the web app, desktop app, CSS, menus, scrolling, resizing, icons, mixed-direction text, or Electron title bars.

anomalyco/opencode · 48 tokens

harden

Improve interface resilience through better error handling, i18n support, text overflow handling, and edge case management. Makes interfaces robust and production-ready. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.

fengshao1227/ccg-workflow · 62 tokens

experience-lwc-rtl-validate

Use this skill to review a Lightning Web Component (.html, .js, .css files) for right-to-left (RTL) internationalization correctness, producing a finding list with code-level fixes covering CSS logical properties, bidirectional text handling, keyboard semantics, and RTL-aware SLDS class usage. TRIGGER when the user…

forcedotcom/sf-skills · 197 tokens

ui-conventions

Frontend change conventions for apps/web — i18n (bilingual keys), dark mode (the highest-frequency rework source), theming inline SVG/chart colors, loading/empty/error states. Use for any UI change.

foru17/neko-master · 48 tokens

rtl-internationalization

Right-to-left (RTL) layout and bidirectional text support for Hebrew, Arabic, Persian, and Urdu interfaces. Use when building UI that must support RTL languages, converting physical CSS/Tailwind properties to logical ones, handling mixed-direction (bidi) text, mirroring directional icons, or testing an app with…

Mindrally/skills · 72 tokens

hebrew-rtl-best-practices

Implement right-to-left (RTL) layouts for Hebrew web applications. Use when user asks about RTL layout, Hebrew text direction, bidirectional (bidi) text, Hebrew CSS, "right to left", or needs to build a Hebrew web UI. Covers CSS logical properties, the :dir() pseudo-class, Tailwind RTL, React/Next.js RTL setup, icon…

skills-il/localization · 138 tokens