跳到主要内容
知仓学习社ZHICANG

chunking-numeric-and-otp

Use this skill when designing inputs or displays for numeric strings — phone numbers, OTP / verification codes, credit card numbers, account IDs, li…

不碰外部(只输出文字)无严重或高危命中hashgraph-online/awesome-codex-plugins

它会碰到什么

扫了多少2 个文本文件,10 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Chunking applied to numeric strings

Numbers are the canonical chunking case. A 10-digit phone number, a 16-digit credit card, a 6-digit OTP — without chunking, these are working-memory overloads. With chunking, they're manageable.

Standard chunkings

Conventions that have evolved across industries:

| Type | Standard chunking | Example |

|---|---|---|

| US phone | 3-3-4 | 555-867-5309 |

| International phone | varies; usually 2-3-3-2 or similar | +44 20 7946 0958 |

| Credit card | 4-4-4-4 (most) or 4-6-5 (Amex) | 4242 4242 4242 4242 |

| Social Security (US) | 3-2-4 | 123-45-6789 |

| OTP / verification | 3-3 (6-digit) or 4-4 (8-digit) | 123-456 |

| Bank account (US) | varies; often grouped with type | 110000000 → routing display |

| ISBN | 1-3-3-5-1 (ISBN-13) | 978-3-16-148410-0 |

| IP address | 4 octets separated by dots | 192.168.1.1 |

| Date (ISO) | 4-2-2 | 2026-05-02 |

| Currency | 3-digit groups | $1,234,567.89 |

When in doubt, follow the convention. Users have already learned it.

OTP / verification code entry

The most common modern chunking case in product UI. A 6-digit code from email or SMS, entered into a verification field.

Single field vs. chunked fields

Single field:

<input type="text" inputmode="numeric" maxlength="6" pattern="\d{6}" />

Chunked fields (one per digit):

<div class="otp-input" role="group" aria-label="Verification code">
  <input type="text" inputmode="numeric" maxlength="1" autocomplete="one-time-code" />
  <input type="text" inputmode="numeric" maxlength="1" />
  <input type="text" inputmode="numeric" maxlength="1" />
  <span class="separator" aria-hidden>—</span>
  <input type="text" inputmode="numeric" maxlength="1" />
  <input type="text" inputmode="numeric" maxlength="1" />
  <input type="text" inputmode="numeric" maxlength="1" />
</div>

The chunked version:

  • Visually matches how the code is presented in email/SMS.
  • Lets the user verify each digit's position mid-entry.
  • Auto-advances focus on each digit (with JS).
  • Supports paste-spread (paste into first input fills all).

The single-field version is simpler to implement and supports SMS-autofill on iOS via autocomplete="one-time-code". Modern apps often offer both: a single field on mobile (where autofill is critical) and chunked on desktop.

OTP UX details

  • Auto-advance focus to the next digit on input.
  • Auto-back focus to previous digit on backspace.
  • Paste support: pasting a 6-digit string into the first input should distribute across all six.
  • autocomplete="one-time-code" on at least one input enables iOS Messages autofill.
  • Numeric keyboard on mobile via inputmode="numeric".
  • Optional auto-submit when the last digit is entered (debate: some users dislike auto-submit because it commits before they can verify).

Phone number entry

Phone numbers vary widely by country. Patterns:

  • US-only forms: enforce 3-3-4 with format mask or chunked inputs.
  • International forms: use a country selector + a free-text number field; format on display rather than enforcing entry format.
  • Dual-purpose (international users + US-heavy): use libphonenumber or similar to validate and format dynamically.
<label>
  Phone
  <div class="phone-input">
    <select name="country-code">
      <option value="+1">🇺🇸 +1</option>
      <option value="+44">🇬🇧 +44</option>
      <!-- ... -->
    </select>
    <input type="tel" name="phone" placeholder="555-867-5309" />
  </div>
</label>

Credit card display

In production, never display full card numbers — show the last 4 digits chunked with masking:

**** **** **** 4242

For entry, use 4-4-4-4 chunking with auto-advance, paste support, and card-type detection:

<input type="text" inputmode="numeric" autocomplete="cc-number"
       placeholder="1234 5678 9012 3456" />

Built-in browsers and password managers handle most of this if you use the right autocomplete value.

Account IDs and identifiers

For internal IDs (account IDs, transaction IDs, session IDs):

  • Display chunked if the user might read or transcribe them.
  • Display monospaced so digits and letters align (font-family: monospace; font-variant-numeric: tabular-nums;).
  • Provide one-click copy so users don't have to manually select.
<div class="id-display">
  <span class="id-value">ws_8f3c-7a92-1b04</span>
  <button onclick="copyToClipboard('ws_8f3c-7a92-1b04')" aria-label="Copy">📋</button>
</div>

The chunking aids reading aloud (support calls) and verification.

Currency

Currency should always use locale-appropriate digit grouping:

  • US English: $1,234,567.89 (3-digit groups, period decimal).
  • European: €1.234.567,89 (period grouping, comma decimal).
  • Indian: ₹12,34,567.89 (mixed grouping: 2-2-3).

Use Intl.NumberFormat to get this right per locale:

new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' })
  .format(1234567.89);
// "$1,234,567.89"

Numeric columns in tables should use font-variant-numeric: tabular-nums so digits align vertically.

Anti-patterns

  • Continuous strings: a 16-digit credit card with no chunking. Users can't verify.
  • Inconsistent chunk sizes within a context: phone numbers shown as 3-4-3 here and 5-2-3 there. Each format is a re-learn.
  • Wrong locale grouping: showing 1,234.56 to a German user (who reads it as 1,234.56 = roughly 1,234 plus 56/100 instead of 1234.56).
  • Missing inputmode: a numeric field that opens the alphabet keyboard on mobile. Easy fix; commonly missed.
  • OTP with no auto-advance / paste support: users tab manually between fields; if they paste, only the first field fills.
  • Unmasked credit card display: privacy and security violation. Always mask all but the last 4.

Heuristics

  1. The "read it aloud" test. Try reading the chunked number aloud. If it requires re-grouping mentally, the chunking is wrong.
  2. The cross-locale check. For currency and dates, test in at least 2–3 locales. Format mismatches are common.
  3. The clipboard / autofill check. Does pasting the user's clipboard into your input work cleanly? Do password managers fill correctly?
  4. The mobile keyboard check. Numeric inputs should produce numeric keyboards on mobile (inputmode="numeric").

Related sub-skills

  • chunking (parent).
  • chunking-form-grouping — chunking at the form-section level.
  • legibility (perception) — tabular numerals for column alignment.
  • accessibility-perceivable (process) — number formatting affects screen-reader pronunciation.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 1,027
本站分层T1
该仓技能数1910
原文件路径plugins/HDeibler/universal-design-principles/plugins/cognition-and-learnability-principles/skills/chunking-numeric-and-otp/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 1910 个技能