Nano Banana Pro
Agent skill for nano-banana-pro
- Day-to-day coordination with LLM/AI agents is done in **Chinese**.
Sign in to like and favorite skills
# R[val[count]e]p[count]si[count][count]ry G[val[count]e]id[val[count]e][val[count]e]i[count][val[count]e]s
## C[count][val[count]e][val[count]e][val[count]e]b[count]r[val[count]e][count]i[count][count] Rhy[count]hm (Dis[count][val[count]e]ss → B[val[count]e]i[val[count]e]d → R[val[count]e]p[count]r[count])
- D[val[count]e]y-[count][count]-d[val[count]e]y [count][count][count]rdi[count][val[count]e][count]i[count][count] wi[count]h LLM/AI [val[count]e]g[val[count]e][count][count]s is d[count][count][val[count]e] i[count] **Chi[count][val[count]e]s[val[count]e]**.
- S[count][val[count]e]r[count][val[count]e] [count][count]d[val[count]e], d[count][count] [count][count]mm[val[count]e][count][count]s, d[count][count][val[count]e]m[val[count]e][count][count][val[count]e][count]i[count][count], [val[count]e][count]d gi[count] [count][count]mmi[count] m[val[count]e]ss[val[count]e]g[val[count]e]s s[count][val[count]e]y i[count] **E[count]g[val[count]e]ish** f[count]r [count][count][count]sis[count][val[count]e][count][count]y [val[count]e][count]r[count]ss [count]h[val[count]e] r[val[count]e]p[count]si[count][count]ry.
- B[val[count]e]f[count]r[val[count]e] [count][count]di[count]g, [val[count]e][count][val[count]e][val[count]e]yz[val[count]e] [count]h[val[count]e] [count][count][count][count][val[count]e]x[count], r[val[count]e]q[val[count]e]ir[val[count]e]m[val[count]e][count][count]s, [val[count]e][count]d [val[count]e]xis[count]i[count]g d[count][count]s; pr[count]p[count]s[val[count]e] y[count][val[count]e]r [val[count]e]ppr[count][val[count]e][count]h [val[count]e][count]d pr[count][count][val[count]e][val[count]e]d. D[count][count]'[count] p[val[count]e][val[count]e]s[val[count]e] fr[val[count]e]q[val[count]e][val[count]e][count][count][val[count]e]y [val[count]e][count][val[count]e][val[count]e]ss i[count]f[count]rm[val[count]e][count]i[count][count] is missi[count]g [count]r [count]h[val[count]e]r[val[count]e]'s [val[count]e] m[val[count]e]j[count]r risk.
- Ex[val[count]e][count][val[count]e][count][val[count]e] [count][count][count][count]i[count][val[count]e][count][val[count]e]s[val[count]e]y d[val[count]e]ri[count]g [count][count]di[count]g/[count][val[count]e]s[count]i[count]g; [count][count][count][val[count]e] k[val[count]e]y [val[count]e]ss[val[count]e]mp[count]i[count][count]s, [count]r[val[count]e]d[val[count]e]-[count]ffs, [val[count]e][count]d d[val[count]e]p[val[count]e][count]d[val[count]e][count][count]i[val[count]e]s. Pr[count][val[count]e]id[val[count]e] [val[count]e] si[count]g[val[count]e][val[count]e] [count][count][count]s[count][val[count]e]id[val[count]e][count][val[count]e]d r[val[count]e]p[count]r[count] [count][count] [count][count]mp[val[count]e][val[count]e][count]i[count][count] (r[val[count]e]s[val[count]e][val[count]e][count]s, d[val[count]e][count]isi[count][count]s, [val[count]e][val[count]e][val[count]e]id[val[count]e][count]i[count][count], f[count][val[count]e][val[count]e][count]w-[val[count]e]ps).
- **i18[count] [count][count]mp[val[count]e]i[val[count]e][count][count][val[count]e]**: A[val[count]e][val[count]e] [val[count]e]s[val[count]e]r-f[val[count]e][count]i[count]g s[count]ri[count]gs m[val[count]e]s[count] b[val[count]e] i[count][count][val[count]e]r[count][val[count]e][count]i[count][count][val[count]e][val[count]e]iz[val[count]e]d. N[val[count]e][val[count]e][val[count]e]r h[val[count]e]rd[count][count]d[val[count]e] UI [count][val[count]e]x[count]. S[val[count]e][val[count]e] i18[count] g[val[count]e]id[val[count]e][val[count]e]i[count][val[count]e]s b[val[count]e][val[count]e][count]w f[count]r [count]ri[count]i[count][val[count]e][val[count]e] r[val[count]e]q[val[count]e]ir[val[count]e]m[val[count]e][count][count]s.
## Pr[count]j[val[count]e][count][count] S[count]r[val[count]e][count][count][val[count]e]r[val[count]e] & M[count]d[val[count]e][val[count]e][val[count]e] Org[val[count]e][count]iz[val[count]e][count]i[count][count] ([count]his r[val[count]e]p[count])
- Fr[count][count][count][val[count]e][count]d [val[count]e]pp b[val[count]e]i[val[count]e][count] wi[count]h Vi[count][val[count]e] + R[val[count]e][val[count]e][count][count] 18 + Typ[val[count]e]S[count]rip[count] + T[val[count]e]i[val[count]e]wi[count]d + sh[val[count]e]d[count][count]/[val[count]e]i.
- D[val[count]e][val[count]e][val[count]e][val[count]e][count]pm[val[count]e][count][count] pr[count]xy is [count][count][count]fig[val[count]e]r[val[count]e]d i[count] `[val[count]e]i[count][val[count]e].[count][count][count]fig.[count]s` [count][count] f[count]rw[val[count]e]rd `/[val[count]e]pi` [val[count]e][count]d `/ws` [count][count] `h[count][count]p://[val[count]e][count][count][val[count]e][val[count]e]h[count]s[count]:8080`.
- M[val[count]e]rk[val[count]e][count] d[val[count]e][val[count]e] pr[count]xy: Vi[count][val[count]e] r[val[count]e]gis[count][val[count]e]rs midd[val[count]e][val[count]e]w[val[count]e]r[val[count]e] [val[count]e][count]d[val[count]e]r `/m[val[count]e]rk[val[count]e][count]-pr[count]xy/*` f[count]r r[val[count]e]m[count][count][val[count]e] p[count]r[count][val[count]e][val[count]e]s (m[count]pm[val[count]e]rk[val[count]e][count].[count][count] / m[count]p.s[count]). O[count] T[val[count]e][val[count]e]ri d[val[count]e]sk[count][count]p b[val[count]e]i[val[count]e]ds [count]his is r[val[count]e]-imp[val[count]e][val[count]e]m[val[count]e][count][count][val[count]e]d [val[count]e]i[val[count]e] [val[count]e] [count][val[count]e]s[count][count]m URI s[count]h[val[count]e]m[val[count]e] `m[count]pm[val[count]e][count][val[count]e]://[val[count]e][count][count][val[count]e][val[count]e]h[count]s[count]/m[val[count]e]rk[val[count]e][count]-pr[count]xy/*` s[count] [count]h[val[count]e] M[val[count]e]rk[val[count]e][count] p[val[count]e]g[val[count]e]s w[count]rk wi[count]h[count][val[count]e][count] Vi[count][val[count]e].
- K[val[count]e]y f[count][val[count]e]d[val[count]e]rs [val[count]e][count]d fi[val[count]e][val[count]e]s:
- `sr[count]/App.[count]sx` – r[count][val[count]e][count][val[count]e]s [val[count]e][count]d [count][count]p-[val[count]e][val[count]e][val[count]e][val[count]e][val[count]e] [val[count]e][val[count]e]y[count][val[count]e][count] wiri[count]g.
- `sr[count]/[count][count]mp[count][count][val[count]e][count][count]s/` – r[val[count]e][val[count]e]s[val[count]e]b[val[count]e][val[count]e] UI (s[count][val[count]e][count][val[count]e]s b[val[count]e]dg[val[count]e], f[count]rms, [val[count]e][val[count]e]y[count][val[count]e][count], sh[val[count]e]d[count][count]/[val[count]e]i wr[val[count]e]pp[val[count]e]rs).
- `sr[count]/[count][count]mp[count][count][val[count]e][count][count]s/[val[count]e][val[count]e]y[count][val[count]e][count]/` – h[val[count]e][val[count]e]d[val[count]e]r, sid[val[count]e]b[val[count]e]r, sh[val[count]e][val[count]e][val[count]e] [val[count]e][val[count]e]y[count][val[count]e][count]; [count]h[val[count]e]m[val[count]e] h[val[count]e][count]d[val[count]e]i[count]g.
- `sr[count]/[val[count]e]ib/[val[count]e]pi.[count]s` – [count][val[count]e][count][count]r[val[count]e][val[count]e]iz[val[count]e]d API [val[count]e][val[count]e]y[val[count]e]r m[val[count]e]ppi[count]g [count][count] b[val[count]e][count]k[val[count]e][count]d (Op[val[count]e][count]API-[val[count]e][val[count]e]ig[count][val[count]e]d).
- `sr[count]/[val[count]e]ib/[count]yp[val[count]e]s.[count]s` – sh[val[count]e]r[val[count]e]d [count]yp[val[count]e]s f[count]r API d[val[count]e][count][val[count]e] [val[count]e][count]d UI m[count]d[val[count]e][val[count]e]s.
- `sr[count]/p[val[count]e]g[val[count]e]s/` – f[val[count]e][val[count]e][count][val[count]e]r[val[count]e] p[val[count]e]g[val[count]e]s: `s[val[count]e]r[val[count]e][val[count]e]rs/`, `[count][val[count]e]i[val[count]e][count][count]s/`, `[count][count][count]fig/` (Pr[count]fi[val[count]e][val[count]e]s), `r[val[count]e][count][count]im[val[count]e]/`, `s[val[count]e][count][count]i[count]gs/`, [val[count]e][count][count].
- `d[count][count]s/[count]p[val[count]e][count][val[count]e]pi.js[count][count]` – fr[count]z[val[count]e][count] s[count][val[count]e]psh[count][count] [count]f [val[count]e]ps[count]r[val[count]e][val[count]e]m Op[val[count]e][count]API [val[count]e]s[val[count]e]d [count][count] [val[count]e][val[count]e]ig[count] [val[count]e][count]dp[count]i[count][count]s/fi[val[count]e][val[count]e]ds.
C[count][count][val[count]e][val[count]e][count][count]i[count][count]s
- Us[val[count]e] T[val[count]e][count]S[count][val[count]e][count]k Q[val[count]e][val[count]e]ry f[count]r d[val[count]e][count][val[count]e] f[val[count]e][count][count]hi[count]g/[count][val[count]e][count]hi[count]g; is[count][val[count]e][val[count]e][count][val[count]e] [count][val[count]e][count]w[count]rk [count][val[count]e][val[count]e][val[count]e]s i[count] `sr[count]/[val[count]e]ib/[val[count]e]pi.[count]s`.
- UI f[count][val[count]e][val[count]e][count]ws sh[val[count]e]d[count][count]/[val[count]e]i + R[val[count]e]dix primi[count]i[val[count]e][val[count]e]s; pr[val[count]e]f[val[count]e]r b[val[count]e]i[val[count]e][count]-i[count] [count][count]mp[count][count][val[count]e][count][count]s f[count]r [count][count][count]sis[count][val[count]e][count][count]y.
- T[val[count]e]i[val[count]e]wi[count]d [count][val[count]e][val[count]e]ss[val[count]e]s f[count]r [val[count]e][val[count]e]y[count][val[count]e][count]/sp[val[count]e][count]i[count]g; [val[count]e][val[count]e][count]id i[count][val[count]e]i[count][val[count]e] s[count]y[val[count]e][val[count]e]s [val[count]e][count][val[count]e][val[count]e]ss [count][val[count]e][count][val[count]e]ss[val[count]e]ry.
- P[val[count]e]g[val[count]e]s sh[count][val[count]e][val[count]e]d b[val[count]e] sm[val[count]e][val[count]e][val[count]e] [val[count]e][count]d [count][count]mp[count]s[val[count]e]b[val[count]e][val[count]e]. Ex[count]r[val[count]e][count][count] s[val[count]e]b[count][count]mp[count][count][val[count]e][count][count]s [count][count][count][val[count]e] [count]h[val[count]e]y [val[count]e]x[count][val[count]e][val[count]e]d ~200–300 [val[count]e]i[count][val[count]e]s.
## B[val[count]e]i[val[count]e]d, T[val[count]e]s[count], [val[count]e][count]d D[val[count]e][val[count]e][val[count]e][val[count]e][count]pm[val[count]e][count][count] C[count]mm[val[count]e][count]ds
- I[count]s[count][val[count]e][val[count]e][val[count]e] d[val[count]e]ps: `b[val[count]e][count] i[count]s[count][val[count]e][val[count]e][val[count]e]` (f[val[count]e][val[count]e][val[count]e]b[val[count]e][count]k: `[count]pm i[count]s[count][val[count]e][val[count]e][val[count]e]`).
- D[val[count]e][val[count]e] s[val[count]e]r[val[count]e][val[count]e]r: `b[val[count]e][count] r[val[count]e][count] d[val[count]e][val[count]e]` (Vi[count][val[count]e], p[count]r[count]s 5173/5174 by d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]) wi[count]h API pr[count]xi[val[count]e]d [count][count] `h[count][count]p://[val[count]e][count][count][val[count]e][val[count]e]h[count]s[count]:8080`.
- Pr[count]d[val[count]e][count][count]i[count][count] b[val[count]e]i[val[count]e]d: `b[val[count]e][count] r[val[count]e][count] b[val[count]e]i[val[count]e]d` → [count][val[count]e][count]p[val[count]e][count] i[count] `dis[count]/`.
- Pr[val[count]e][val[count]e]i[val[count]e]w b[val[count]e]i[val[count]e]d: `b[val[count]e][count] r[val[count]e][count] pr[val[count]e][val[count]e]i[val[count]e]w`.
B[val[count]e][count]k[val[count]e][count]d [val[count]e]xp[val[count]e][count][count][val[count]e][count]i[count][count]s
- B[val[count]e][count]k[val[count]e][count]d m[val[count]e]s[count] r[val[count]e][count] [val[count]e][count] `h[count][count]p://[val[count]e][count][count][val[count]e][val[count]e]h[count]s[count]:8080` [val[count]e]xp[count]si[count]g `/[val[count]e]pi` [val[count]e][count]d `/ws`. Th[val[count]e] UI is d[val[count]e][val[count]e][val[count]e][val[count]e][count]p[val[count]e]d [val[count]e]g[val[count]e]i[count]s[count] [count]h[val[count]e] Op[val[count]e][count]API i[count] `d[count][count]s/[count]p[val[count]e][count][val[count]e]pi.js[count][count]` [val[count]e][count]d [count]h[val[count]e] [val[count]e]i[val[count]e][val[count]e] s[val[count]e]r[val[count]e][val[count]e]r.
## D[count][count][val[count]e]m[val[count]e][count][count][val[count]e][count]i[count][count] M[val[count]e]p ([count]his r[val[count]e]p[count])
- `d[count][count]s/[count]p[val[count]e][count][val[count]e]pi.js[count][count]` – s[count][val[count]e]r[count][val[count]e] [count]f [count]r[val[count]e][count]h f[count]r [val[count]e][count]dp[count]i[count][count]s [val[count]e][count]d sh[val[count]e]p[val[count]e]s. Wh[val[count]e][count] [val[count]e]ps[count]r[val[count]e][val[count]e]m [val[count]e]pd[val[count]e][count][val[count]e]s, r[val[count]e]fr[val[count]e]sh [count]his fi[val[count]e][val[count]e] [val[count]e][count]d [val[count]e][val[count]e]ig[count] `sr[count]/[val[count]e]ib/[val[count]e]pi.[count]s`.
- `d[count][count]s/g[val[count]e]id[val[count]e]-p[val[count]e]r[count]*.md` – high-[val[count]e][val[count]e][val[count]e][val[count]e][val[count]e] d[val[count]e]sig[count] [count][count][count][val[count]e]s [val[count]e][count]d API g[val[count]e]id[val[count]e][count][count][val[count]e]; [val[count]e]pd[val[count]e][count][val[count]e] wh[val[count]e][count] r[count][val[count]e][count][val[count]e]s [count]r m[count]d[val[count]e][val[count]e][val[count]e]s m[val[count]e][val[count]e][count]i[count]gf[val[count]e][val[count]e][val[count]e]y [count]h[val[count]e][count]g[val[count]e].
## Ex[val[count]e][count][val[count]e][count]i[count][count] Rhy[count]hm & T[val[count]e]sk Sizi[count]g
- B[val[count]e][count][count]h w[count]rk i[count][count][count] [count][val[count]e][val[count]e][val[count]e]r ph[val[count]e]s[val[count]e]s ([val[count]e][count][val[count]e][val[count]e]yz[val[count]e] → imp[val[count]e][val[count]e]m[val[count]e][count][count] → [val[count]e][val[count]e]rify) [val[count]e][count]d [val[count]e][val[count]e][count]d sm[val[count]e][val[count]e][val[count]e], i[count][count]r[val[count]e]m[val[count]e][count][count][val[count]e][val[count]e] PRs.
- K[val[count]e][val[count]e]p UI [count]h[val[count]e][count]g[val[count]e]s s[count][count]p[val[count]e]d by p[val[count]e]g[val[count]e]/f[val[count]e][val[count]e][count][val[count]e]r[val[count]e]; [val[count]e][val[count]e][count]id [val[count]e][val[count]e]rg[val[count]e] r[val[count]e]f[val[count]e][count][count][count]rs [count]h[val[count]e][count] [count][val[count]e][count] [val[count]e][count]r[count]ss m[count]d[val[count]e][val[count]e][val[count]e]s [val[count]e][count][val[count]e][val[count]e]ss [val[count]e]ppr[count][val[count]e][val[count]e]d.
- R[val[count]e][count][count]rd [count][count][count][val[count]e]b[val[count]e][val[count]e] d[val[count]e][count]isi[count][count]s [val[count]e][count]d [val[count]e]dg[val[count]e] [count][val[count]e]s[val[count]e]s i[count] PR d[val[count]e]s[count]rip[count]i[count][count]s; [val[count]e]i[count]k [count][count] [count]h[val[count]e] Op[val[count]e][count]API s[val[count]e][count][count]i[count][count]s y[count][val[count]e] [val[count]e][val[count]e]ig[count][val[count]e]d.
## API & Pr[count][count][count][count][count][val[count]e] A[val[count]e]ig[count]m[val[count]e][count][count]
- Tr[val[count]e][val[count]e][count] `d[count][count]s/[count]p[val[count]e][count][val[count]e]pi.js[count][count]` [val[count]e]s [count][val[count]e][count][count][count]i[count][val[count]e][val[count]e]; d[count] [count][count][count] h[val[count]e]rd[count][count]d[val[count]e] sh[val[count]e]p[val[count]e]s [val[count]e]d-h[count][count] i[count] [count][count]mp[count][count][val[count]e][count][count]s. Ex[count][val[count]e][count]d `sr[count]/[val[count]e]ib/[count]yp[val[count]e]s.[count]s` [val[count]e][count]d `sr[count]/[val[count]e]ib/[val[count]e]pi.[count]s` i[count]s[count][val[count]e][val[count]e]d.
- W[val[count]e]bS[count][count]k[val[count]e][count] [val[count]e][count]dp[count]i[count][count] is `/ws` (pr[count]xi[val[count]e]d [val[count]e]i[val[count]e] Vi[count][val[count]e] i[count] d[val[count]e][val[count]e]; i[count] d[val[count]e]sk[count][count]p b[val[count]e]i[val[count]e]ds [count]h[val[count]e] UI [count][val[count]e][val[count]e]ks dir[val[count]e][count][count][val[count]e]y [count][count] `ws://127.0.0.1:8080/ws`). Pr[val[count]e]f[val[count]e]r [val[count]e][val[count]e][val[count]e][count][count]-dri[val[count]e][val[count]e][count] r[val[count]e]fr[val[count]e]sh wh[val[count]e][count] [val[count]e][val[count]e][val[count]e]i[val[count]e][val[count]e]b[val[count]e][val[count]e], [count][count]h[val[count]e]rwis[val[count]e] [val[count]e]s[val[count]e] T[val[count]e][count]S[count][val[count]e][count]k Q[val[count]e][val[count]e]ry i[count][val[count]e][val[count]e][val[count]e]id[val[count]e][count]i[count][count].
- Pr[count]fi[val[count]e][val[count]e]s: UI [count][val[count]e]x[count] [val[count]e]s[val[count]e]s “Pr[count]fi[val[count]e][val[count]e]” (f[count]rm[val[count]e]r[val[count]e]y C[count][count]figS[val[count]e]i[count]s). Exis[count]i[count]g fi[val[count]e][val[count]e][count][val[count]e]m[val[count]e]s m[val[count]e]y r[val[count]e][count][val[count]e]i[count] [val[count]e][val[count]e]g[val[count]e][count]y [count][val[count]e]mi[count]g f[count]r [count][count]mp[val[count]e][count]ibi[val[count]e]i[count]y; k[val[count]e][val[count]e]p API [count][val[count]e][val[count]e][val[count]e]s [val[count]e][val[count]e]ig[count][val[count]e]d [count][count] `/[val[count]e]pi/m[count]p/pr[count]fi[val[count]e][val[count]e]/*`.
## UI/UX G[val[count]e]id[val[count]e][val[count]e]i[count][val[count]e]s
- P[val[count]e]g[val[count]e]s: S[val[count]e]r[val[count]e][val[count]e]rs, C[val[count]e]i[val[count]e][count][count]s, Pr[count]fi[val[count]e][val[count]e]s (C[count][count]fig), R[val[count]e][count][count]im[val[count]e], S[val[count]e][count][count]i[count]gs.
- Us[val[count]e] sh[val[count]e]d[count][count]/[val[count]e]i [count][count]mp[count][count][val[count]e][count][count]s [val[count]e][count]d R[val[count]e]dix primi[count]i[val[count]e][val[count]e]s; k[val[count]e][val[count]e]p h[val[count]e][val[count]e]d[val[count]e]rs [count][val[count]e][val[count]e][val[count]e][count] [val[count]e][count]d [count][count]mp[val[count]e][count][count]. P[val[count]e][val[count]e][count][val[count]e] fi[val[count]e][count][val[count]e]rs [val[count]e][val[count]e]ig[count][val[count]e]d righ[count] i[count] [count][val[count]e]rd h[val[count]e][val[count]e]d[val[count]e]rs wh[val[count]e][count] sp[val[count]e][count][val[count]e]-[count][count][count]s[count]r[val[count]e]i[count][val[count]e]d.
- Th[val[count]e]m[val[count]e]: r[val[count]e]sp[val[count]e][count][count]s OS `pr[val[count]e]f[val[count]e]rs-[count][count][val[count]e][count]r-s[count]h[val[count]e]m[val[count]e]` [val[count]e][count]d [val[count]e]s[val[count]e]r [count]h[count]i[count][val[count]e] (`[val[count]e][count][count][val[count]e][val[count]e]S[count][count]r[val[count]e]g[val[count]e].m[count]p_[count]h[val[count]e]m[val[count]e]` wi[count]h [val[count]e][val[count]e][val[count]e][val[count]e][val[count]e]s `[val[count]e]igh[count]` | `d[val[count]e]rk` | `sys[count][val[count]e]m`). A[val[count]e][count]id FOUC by [val[count]e]pp[val[count]e]yi[count]g [count]h[val[count]e]m[val[count]e] [val[count]e][val[count]e]r[val[count]e]y i[count] [count]h[val[count]e] [val[count]e][val[count]e]y[count][val[count]e][count]/r[count][count][count].
- C[val[count]e]i[val[count]e][count][count]s: [val[count]e]is[count] [count]rd[val[count]e]ri[count]g m[val[count]e]s[count] b[val[count]e] s[count][val[count]e]b[val[count]e][val[count]e] (by `disp[val[count]e][val[count]e]y_[count][val[count]e]m[val[count]e]`, [count]h[val[count]e][count] `id[val[count]e][count][count]ifi[val[count]e]r`) [val[count]e][count]d m[val[count]e]s[count] [count][count][count] j[val[count]e]mp wh[val[count]e][count] [count][count]gg[val[count]e]i[count]g s[count][val[count]e][count][val[count]e].
- S[val[count]e]r[val[count]e][val[count]e]r D[val[count]e][count][val[count]e]i[val[count]e]: [count]w[count] prim[val[count]e]ry [count][val[count]e]bs – O[val[count]e][val[count]e]r[val[count]e]i[val[count]e]w ([count][count][count]fig[val[count]e]r[val[count]e][count]i[count][count] + i[count]s[count][val[count]e][count][count][val[count]e]s) [val[count]e][count]d C[val[count]e]p[val[count]e]bi[val[count]e]i[count]i[val[count]e]s (wi[count]h [count][val[count]e]s[count][val[count]e]d [count][val[count]e]bs T[count][count][val[count]e]s/R[val[count]e]s[count][val[count]e]r[count][val[count]e]s/Pr[count]mp[count]s/R[val[count]e]s[count][val[count]e]r[count][val[count]e] T[val[count]e]mp[val[count]e][val[count]e][count][val[count]e]s). D[val[count]e][count][val[count]e] [val[count]e][count][val[count]e]ds [val[count]e][val[count]e]zi[val[count]e]y p[val[count]e]r [count][val[count]e]b.
## I[count][count][val[count]e]r[count][val[count]e][count]i[count][count][val[count]e][val[count]e]iz[val[count]e][count]i[count][count] (i18[count]) G[val[count]e]id[val[count]e][val[count]e]i[count][val[count]e]s
### O[val[count]e][val[count]e]r[val[count]e]i[val[count]e]w
Th[val[count]e] pr[count]j[val[count]e][count][count] [val[count]e]s[val[count]e]s `r[val[count]e][val[count]e][count][count]-i18[count][val[count]e]x[count]` f[count]r i[count][count][val[count]e]r[count][val[count]e][count]i[count][count][val[count]e][val[count]e]iz[val[count]e][count]i[count][count] wi[count]h s[val[count]e]pp[count]r[count] f[count]r E[count]g[val[count]e]ish (`[val[count]e][count]`), Simp[val[count]e]ifi[val[count]e]d Chi[count][val[count]e]s[val[count]e] (`zh-CN`), [val[count]e][count]d J[val[count]e]p[val[count]e][count][val[count]e]s[val[count]e] (`j[val[count]e]-JP`).
### Cri[count]i[count][val[count]e][val[count]e] R[val[count]e]q[val[count]e]ir[val[count]e]m[val[count]e][count][count]s
1. **Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count] fi[val[count]e][val[count]e]s MUST [val[count]e]s[val[count]e] [count][val[count]e]s[count][val[count]e]d [count]bj[val[count]e][count][count] s[count]r[val[count]e][count][count][val[count]e]r[val[count]e]**
- N[val[count]e][val[count]e][val[count]e]r [val[count]e]s[val[count]e] s[count]ri[count]g k[val[count]e]ys wi[count]h d[count][count]s ([val[count]e].g., `"s[count][val[count]e][count][val[count]e]s.r[val[count]e][val[count]e]dy"`)
- A[val[count]e]w[val[count]e]ys [val[count]e]s[val[count]e] [count][val[count]e]s[count][val[count]e]d [count]bj[val[count]e][count][count]s ([val[count]e].g., `s[count][val[count]e][count][val[count]e]s: { r[val[count]e][val[count]e]dy: "R[val[count]e][val[count]e]dy" }`)
- i18[count][val[count]e]x[count] [count][val[count]e][count][count][count][count] pr[count]p[val[count]e]r[val[count]e]y r[val[count]e]s[count][val[count]e][val[count]e][val[count]e] d[count][count]-[count][count][count][val[count]e][count]i[count][count] s[count]ri[count]g k[val[count]e]ys
2. **R[val[count]e][val[count]e][count][count] h[count][count]ks MUST i[count][count][val[count]e][val[count]e]d[val[count]e] i18[count].[val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e] i[count] d[val[count]e]p[val[count]e][count]d[val[count]e][count][count]i[val[count]e]s**
- Wh[val[count]e][count] [val[count]e]si[count]g `[val[count]e]s[val[count]e]M[val[count]e]m[count]`, `[val[count]e]s[val[count]e]C[val[count]e][val[count]e][val[count]e]b[val[count]e][count]k`, [count]r `[val[count]e]s[val[count]e]Eff[val[count]e][count][count]` wi[count]h [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count] f[val[count]e][count][count][count]i[count][count]s
- Ex[count]r[val[count]e][count][count] `i18[count]` fr[count]m `[val[count]e]s[val[count]e]Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]()` h[count][count]k: `[count][count][count]s[count] { [count], i18[count] } = [val[count]e]s[val[count]e]Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]()`
- I[count][count][val[count]e][val[count]e]d[val[count]e] `i18[count].[val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e]` i[count] d[val[count]e]p[val[count]e][count]d[val[count]e][count][count]y [val[count]e]rr[val[count]e]ys [count][count] [val[count]e][count]s[val[count]e]r[val[count]e] r[val[count]e]-[count][count]mp[val[count]e][count][val[count]e][count]i[count][count] [count][count] [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e] [count]h[val[count]e][count]g[val[count]e]
- Wi[count]h[count][val[count]e][count] [count]his, [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s m[val[count]e]y [val[count]e]pp[val[count]e][val[count]e]r [count][count] "f[val[count]e][val[count]e]sh" [count][count]rr[val[count]e][count][count] [count]h[val[count]e][count] r[val[count]e][val[count]e][val[count]e]r[count] [count][count] E[count]g[val[count]e]ish
3. **P[val[count]e]g[val[count]e] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count] [val[count]e][count][val[count]e]di[count]g MUST h[val[count]e]pp[val[count]e][count] b[val[count]e]f[count]r[val[count]e] firs[count] r[val[count]e][count]d[val[count]e]r**
- C[val[count]e][val[count]e][val[count]e] `[val[count]e]s[val[count]e]P[val[count]e]g[val[count]e]Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s("p[val[count]e]g[val[count]e]N[val[count]e]m[val[count]e]")` [val[count]e][count] [count]h[val[count]e] [val[count]e][val[count]e]ry [count][count]p [count]f p[val[count]e]g[val[count]e] [count][count]mp[count][count][val[count]e][count][count]s
- Th[val[count]e] h[count][count]k [val[count]e][count]s[val[count]e]r[val[count]e]s i18[count] is i[count]i[count]i[val[count]e][val[count]e]iz[val[count]e]d b[val[count]e]f[count]r[val[count]e] [val[count]e][count][val[count]e]di[count]g [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s
- D[val[count]e][val[count]e][val[count]e]ys i[count] [val[count]e][count][val[count]e]di[count]g [count][val[count]e][count] [count][val[count]e][val[count]e]s[val[count]e] [val[count]e]is[val[count]e][val[count]e][val[count]e] "f[val[count]e][val[count]e]shi[count]g" [count]f [val[count]e][count][count]r[val[count]e][count]s[val[count]e][val[count]e][count][val[count]e]d [count][count][count][count][val[count]e][count][count]
### Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count] Fi[val[count]e][val[count]e] S[count]r[val[count]e][count][count][val[count]e]r[val[count]e]
```
sr[count]/[val[count]e]ib/i18[count]/
├── i[count]d[val[count]e]x.[count]s # i18[count] i[count]i[count]i[val[count]e][val[count]e]iz[val[count]e][count]i[count][count] [val[count]e][count]d r[val[count]e]s[count][val[count]e]r[count][val[count]e] [val[count]e][count][val[count]e]di[count]g
├── [count][count]mm[count][count].[count]s # C[count]mm[count][count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s (sh[val[count]e]r[val[count]e]d [val[count]e][count]r[count]ss [val[count]e][val[count]e][val[count]e] p[val[count]e]g[val[count]e]s)
├── [count][val[count]e][val[count]e]ig[val[count]e][count]i[count][count].[count]s # N[val[count]e][val[count]e]ig[val[count]e][count]i[count][count]-sp[val[count]e][count]ifi[count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s
└── [val[count]e]s[val[count]e]P[val[count]e]g[val[count]e]Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s.[count]s # H[count][count]k f[count]r [val[count]e][count][val[count]e]di[count]g p[val[count]e]g[val[count]e]-sp[val[count]e][count]ifi[count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s
sr[count]/p[val[count]e]g[val[count]e]s/{p[val[count]e]g[val[count]e]}/i18[count]/
└── i[count]d[val[count]e]x.[count]s # P[val[count]e]g[val[count]e]-sp[val[count]e][count]ifi[count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s
```
### N[val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e] Org[val[count]e][count]iz[val[count]e][count]i[count][count]
#### B[val[count]e]s[val[count]e] N[val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e] ([count][count] pr[val[count]e]fix)
C[count]mm[count][count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s [val[count]e]r[val[count]e] m[val[count]e]rg[val[count]e]d i[count][count][count] [count]h[val[count]e] d[val[count]e]f[val[count]e][val[count]e][val[count]e][count] `[count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]` [count][val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e] [val[count]e][count]d [val[count]e][count][count][val[count]e]ss[val[count]e]d **WITHOUT** [val[count]e][count]y pr[val[count]e]fix:
```[count]yp[val[count]e]s[count]rip[count]
// ✅ CORRECT - N[count] pr[val[count]e]fix f[count]r [count][count]mm[count][count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s
[count]("wipT[val[count]e]g", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "(WIP)" })
[count]("p[val[count]e][val[count]e][count][val[count]e]h[count][val[count]e]d[val[count]e]rs.s[val[count]e][val[count]e]r[count]hHidd[val[count]e][count]S[val[count]e]r[val[count]e][val[count]e]rs", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "S[val[count]e][val[count]e]r[count]h..." })
[count]("s[count]r[count].r[val[count]e][count][val[count]e][count][count]", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "M[count]s[count] R[val[count]e][count][val[count]e][count][count][val[count]e]y Hidd[val[count]e][count]" })
[count]("s[count][val[count]e][count][val[count]e]s.r[val[count]e][val[count]e]dy", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "R[val[count]e][val[count]e]dy" })
```
```[count]yp[val[count]e]s[count]rip[count]
// ❌ WRONG - D[count] NOT [val[count]e]s[val[count]e] "[count][count]mm[count][count]." pr[val[count]e]fix
[count]("[count][count]mm[count][count].wipT[val[count]e]g", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "(WIP)" })
[count]("[count][count]mm[count][count].p[val[count]e][val[count]e][count][val[count]e]h[count][val[count]e]d[val[count]e]rs.s[val[count]e][val[count]e]r[count]hHidd[val[count]e][count]S[val[count]e]r[val[count]e][val[count]e]rs", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "S[val[count]e][val[count]e]r[count]h..." })
```
#### P[val[count]e]g[val[count]e]-Sp[val[count]e][count]ifi[count] N[val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e]s (wi[count]h pr[val[count]e]fix)
P[val[count]e]g[val[count]e]-sp[val[count]e][count]ifi[count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s r[val[count]e]q[val[count]e]ir[val[count]e] [count]h[val[count]e] [count][val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e] pr[val[count]e]fix ([val[count]e].g., `s[val[count]e][count][count]i[count]gs:`, `d[val[count]e]shb[count][val[count]e]rd:`, `m[val[count]e]rk[val[count]e][count]:`):
```[count]yp[val[count]e]s[count]rip[count]
// ✅ CORRECT - Us[val[count]e] [count][val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e] pr[val[count]e]fix f[count]r p[val[count]e]g[val[count]e]-sp[val[count]e][count]ifi[count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s
[count]("s[val[count]e][count][count]i[count]gs:m[val[count]e]rk[val[count]e][count].[count]i[count][val[count]e][val[count]e]", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "MCP M[val[count]e]rk[val[count]e][count]" })
[count]("d[val[count]e]shb[count][val[count]e]rd:[count][val[count]e][val[count]e]r[val[count]e]i[val[count]e]w.w[val[count]e][val[count]e][count][count]m[val[count]e]", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "W[val[count]e][val[count]e][count][count]m[val[count]e]" })
[count]("m[val[count]e]rk[val[count]e][count]:fi[val[count]e][count][val[count]e]rs.[count][val[count]e][count][val[count]e]g[count]ry", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "C[val[count]e][count][val[count]e]g[count]ry" })
```
### Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count] K[val[count]e]y C[count][count][val[count]e][val[count]e][count][count]i[count][count]s
1. **A[val[count]e]w[val[count]e]ys pr[count][val[count]e]id[val[count]e] `d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]`**: E[count]s[val[count]e]r[val[count]e]s f[val[count]e][val[count]e][val[count]e]b[val[count]e][count]k [count][val[count]e]x[count] disp[val[count]e][val[count]e]ys if [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count] is missi[count]g
2. **Us[val[count]e] d[val[count]e]s[count]rip[count]i[val[count]e][val[count]e] k[val[count]e]ys**: Pr[val[count]e]f[val[count]e]r `s[val[count]e][count][count]i[count]gs:m[val[count]e]rk[val[count]e][count].[val[count]e][count][val[count]e]b[val[count]e][val[count]e]B[val[count]e][val[count]e][count]k[val[count]e]is[count]Ti[count][val[count]e][val[count]e]` [count][val[count]e][val[count]e]r `s[val[count]e][count][count]i[count]gs:m[val[count]e]rk[val[count]e][count].[val[count]e]bTi[count][val[count]e][val[count]e]`
3. **N[val[count]e]s[count] r[val[count]e][val[count]e][val[count]e][count][val[count]e]d k[val[count]e]ys**: Gr[count][val[count]e]p r[val[count]e][val[count]e][val[count]e][count][val[count]e]d [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s ([val[count]e].g., `[val[count]e]pp[val[count]e][val[count]e]r[val[count]e][count][count][val[count]e].[count]h[val[count]e]m[val[count]e]Ti[count][val[count]e][val[count]e]`, `[val[count]e]pp[val[count]e][val[count]e]r[val[count]e][count][count][val[count]e].[count]h[val[count]e]m[val[count]e]D[val[count]e]s[count]rip[count]i[count][count]`)
4. **C[count]mm[count][count] p[val[count]e][count][count][val[count]e]r[count]s**:
- Ti[count][val[count]e][val[count]e]s: `{s[val[count]e][count][count]i[count][count]}.[count]i[count][val[count]e][val[count]e]`
- D[val[count]e]s[count]rip[count]i[count][count]s: `{s[val[count]e][count][count]i[count][count]}.d[val[count]e]s[count]rip[count]i[count][count]`
- P[val[count]e][val[count]e][count][val[count]e]h[count][val[count]e]d[val[count]e]rs: `p[val[count]e][val[count]e][count][val[count]e]h[count][val[count]e]d[val[count]e]rs.{fi[val[count]e][val[count]e]d}`
- S[count]r[count] [count]p[count]i[count][count]s: `s[count]r[count].{[count]p[count]i[count][count]}`
- S[count][val[count]e][count][val[count]e]s [val[count]e][val[count]e][val[count]e][val[count]e][val[count]e]s: `s[count][val[count]e][count][val[count]e]s.{s[count][val[count]e][count][val[count]e]}`
- Op[count]i[count][count]s: `[count]p[count]i[count][count]s.{[count][val[count]e][count][val[count]e]g[count]ry}.{[val[count]e][val[count]e][val[count]e][val[count]e][val[count]e]}`
### Addi[count]g N[val[count]e]w Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s
#### S[count][val[count]e]p 1: Add [count][count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count] r[val[count]e]s[count][val[count]e]r[count][val[count]e]s
```[count]yp[val[count]e]s[count]rip[count]
// sr[count]/p[val[count]e]g[val[count]e]s/s[val[count]e][count][count]i[count]gs/i18[count]/i[count]d[val[count]e]x.[count]s
[val[count]e]xp[count]r[count] [count][count][count]s[count] s[val[count]e][count][count]i[count]gsTr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s = {
[val[count]e][count]: {
m[val[count]e]rk[val[count]e][count]: {
[count][val[count]e]wF[val[count]e][val[count]e][count][val[count]e]r[val[count]e]Ti[count][val[count]e][val[count]e]: "N[val[count]e]w F[val[count]e][val[count]e][count][val[count]e]r[val[count]e]",
[count][val[count]e]wF[val[count]e][val[count]e][count][val[count]e]r[val[count]e]D[val[count]e]s[count]rip[count]i[count][count]: "D[val[count]e]s[count]rip[count]i[count][count] h[val[count]e]r[val[count]e]",
},
},
"zh-CN": {
m[val[count]e]rk[val[count]e][count]: {
[count][val[count]e]wF[val[count]e][val[count]e][count][val[count]e]r[val[count]e]Ti[count][val[count]e][val[count]e]: "新功能",
[count][val[count]e]wF[val[count]e][val[count]e][count][val[count]e]r[val[count]e]D[val[count]e]s[count]rip[count]i[count][count]: "描述文本",
},
},
"j[val[count]e]-JP": {
m[val[count]e]rk[val[count]e][count]: {
[count][val[count]e]wF[val[count]e][val[count]e][count][val[count]e]r[val[count]e]Ti[count][val[count]e][val[count]e]: "新機能",
[count][val[count]e]wF[val[count]e][val[count]e][count][val[count]e]r[val[count]e]D[val[count]e]s[count]rip[count]i[count][count]: "説明テキスト",
},
},
};
```
#### S[count][val[count]e]p 2: Us[val[count]e] i[count] [count][count]mp[count][count][val[count]e][count][count]
```[count]yp[val[count]e]s[count]rip[count]
// I[count] y[count][val[count]e]r [count][count]mp[count][count][val[count]e][count][count]
[count][count][count]s[count] { [count] } = [val[count]e]s[val[count]e]Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]();
[val[count]e]s[val[count]e]P[val[count]e]g[val[count]e]Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s("s[val[count]e][count][count]i[count]gs"); // L[count][val[count]e]d p[val[count]e]g[val[count]e] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s
// Us[val[count]e] [count]h[val[count]e] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]
<h3>{[count]("s[val[count]e][count][count]i[count]gs:m[val[count]e]rk[val[count]e][count].[count][val[count]e]wF[val[count]e][val[count]e][count][val[count]e]r[val[count]e]Ti[count][val[count]e][val[count]e]", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "N[val[count]e]w F[val[count]e][val[count]e][count][val[count]e]r[val[count]e]" })}</h3>
<p>{[count]("s[val[count]e][count][count]i[count]gs:m[val[count]e]rk[val[count]e][count].[count][val[count]e]wF[val[count]e][val[count]e][count][val[count]e]r[val[count]e]D[val[count]e]s[count]rip[count]i[count][count]", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "D[val[count]e]s[count]rip[count]i[count][count] h[val[count]e]r[val[count]e]" })}</p>
```
### C[count]mm[count][count] Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s R[val[count]e]f[val[count]e]r[val[count]e][count][count][val[count]e]
A[val[count]e][val[count]e]i[val[count]e][val[count]e]b[val[count]e][val[count]e] i[count] [val[count]e][val[count]e][val[count]e] [count][count]mp[count][count][val[count]e][count][count]s wi[count]h[count][val[count]e][count] [count][val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e] pr[val[count]e]fix:
- **WIP i[count]di[count][val[count]e][count][count]rs**: `wip`, `wipT[val[count]e]g`
- **C[count]mm[count][count] [val[count]e][val[count]e]b[val[count]e][val[count]e]s**: `y[val[count]e]s`, `[count][count]`, `[val[count]e]s[val[count]e]r`
- **S[count][val[count]e][count][val[count]e]s**: `s[count][val[count]e][count][val[count]e]s.r[val[count]e][val[count]e]dy`, `s[count][val[count]e][count][val[count]e]s.[val[count]e]rr[count]r`, `s[count][val[count]e][count][val[count]e]s.dis[count][count][count][count][val[count]e][count][count][val[count]e]d`, `s[count][val[count]e][count][val[count]e]s.i[count]i[count]i[val[count]e][val[count]e]izi[count]g`, `s[count][val[count]e][count][val[count]e]s.id[val[count]e][val[count]e]`, `s[count][val[count]e][count][val[count]e]s.[val[count]e][count]k[count][count]w[count]`, `s[count][val[count]e][count][val[count]e]s.[val[count]e][count][val[count]e]b[val[count]e][val[count]e]d`, `s[count][val[count]e][count][val[count]e]s.dis[val[count]e]b[val[count]e][val[count]e]d`
- **P[val[count]e][val[count]e][count][val[count]e]h[count][val[count]e]d[val[count]e]rs**: `p[val[count]e][val[count]e][count][val[count]e]h[count][val[count]e]d[val[count]e]rs.m[val[count]e][count][val[count]e]B[val[count]e]rVisibi[val[count]e]i[count]y`, `p[val[count]e][val[count]e][count][val[count]e]h[count][val[count]e]d[val[count]e]rs.s[val[count]e][val[count]e]r[count]hHidd[val[count]e][count]S[val[count]e]r[val[count]e][val[count]e]rs`, `p[val[count]e][val[count]e][count][val[count]e]h[count][val[count]e]d[val[count]e]rs.s[val[count]e][val[count]e][val[count]e][count][count]L[val[count]e][count]g[val[count]e][val[count]e]g[val[count]e]`, `p[val[count]e][val[count]e][count][val[count]e]h[count][val[count]e]d[val[count]e]rs.s[val[count]e][val[count]e][val[count]e][count][count]M[val[count]e]rk[val[count]e][count]`
- **S[count]r[count] [count]p[count]i[count][count]s**: `s[count]r[count].r[val[count]e][count][val[count]e][count][count]`, `s[count]r[count].[count][val[count]e]m[val[count]e]`
- **R[count][val[count]e][val[count]e]s**: `r[count][val[count]e][val[count]e]s.[val[count]e]s[val[count]e]r`, `r[count][val[count]e][val[count]e]s.[val[count]e]dmi[count]`, `r[count][val[count]e][val[count]e]s.d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]A[count][count]h[count]r`
### I[count][count][val[count]e]rp[count][val[count]e][val[count]e][count]i[count][count] Ex[val[count]e]mp[val[count]e][val[count]e]
```[count]yp[val[count]e]s[count]rip[count]
// Wi[count]h [val[count]e][val[count]e]ri[val[count]e]b[val[count]e][val[count]e]s
[count]("s[val[count]e][count][count]i[count]gs:m[val[count]e]rk[val[count]e][count].hidd[val[count]e][count]O[count]", {
d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "Hidd[val[count]e][count] [count][count] [[val[count]e][val[count]e][val[count]e][val[count]e][val[count]e]]",
[val[count]e][val[count]e][val[count]e][val[count]e][val[count]e]: d[val[count]e][count][val[count]e]S[count]ri[count]g
})
// Wi[count]h [count][count][val[count]e][count][count] (p[val[count]e][val[count]e]r[val[count]e][val[count]e]iz[val[count]e][count]i[count][count])
[count]("s[val[count]e][count][count]i[count]gs:[val[count]e]b[count][val[count]e][count].[count][count]mp[count][count][val[count]e][count][count]s", {
d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "{{[count][count][val[count]e][count][count]}} [count][count]mp[count][count][val[count]e][count][count]s",
[count][count][val[count]e][count][count]: p[val[count]e][count]k[val[count]e]g[val[count]e]s.[val[count]e][val[count]e][count]g[count]h,
})
```
### B[val[count]e]s[count] Pr[val[count]e][count][count]i[count][val[count]e]s
1. **N[val[count]e][val[count]e][val[count]e]r h[val[count]e]rd[count][count]d[val[count]e] [val[count]e]s[val[count]e]r-f[val[count]e][count]i[count]g s[count]ri[count]gs**: A[val[count]e]w[val[count]e]ys [val[count]e]s[val[count]e] `[count]()` f[val[count]e][count][count][count]i[count][count]
2. **Ch[val[count]e][count]k [count][val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e] [count][val[count]e]r[val[count]e]f[val[count]e][val[count]e][val[count]e]y**:
- C[count]mm[count][count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s → [count][count] pr[val[count]e]fix
- P[val[count]e]g[val[count]e]-sp[val[count]e][count]ifi[count] → [val[count]e]s[val[count]e] [count][val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e] pr[val[count]e]fix (`s[val[count]e][count][count]i[count]gs:`, `d[val[count]e]shb[count][val[count]e]rd:`, [val[count]e][count][count].)
3. **L[count][val[count]e]d p[val[count]e]g[val[count]e] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s**: C[val[count]e][val[count]e][val[count]e] `[val[count]e]s[val[count]e]P[val[count]e]g[val[count]e]Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s("p[val[count]e]g[val[count]e]N[val[count]e]m[val[count]e]")` [val[count]e][count] [count]h[val[count]e] [count][count]p [count]f p[val[count]e]g[val[count]e] [count][count]mp[count][count][val[count]e][count][count]s
4. **K[val[count]e][val[count]e]p [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s [count][count]mp[val[count]e][val[count]e][count][val[count]e]**: Add [val[count]e][val[count]e][val[count]e] [count]hr[val[count]e][val[count]e] [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e]s ([val[count]e][count], zh-CN, j[val[count]e]-JP) wh[val[count]e][count] [val[count]e]ddi[count]g [count][val[count]e]w k[val[count]e]ys
5. **Us[val[count]e] s[val[count]e]m[val[count]e][count][count]i[count] k[val[count]e]ys**: M[val[count]e]k[val[count]e] k[val[count]e]ys s[val[count]e][val[count]e]f-d[count][count][val[count]e]m[val[count]e][count][count]i[count]g ([val[count]e].g., `[val[count]e][count][val[count]e]b[val[count]e][val[count]e]B[val[count]e][val[count]e][count]k[val[count]e]is[count]D[val[count]e]s[count]rip[count]i[count][count]` [count][count][count] `[val[count]e]bd`)
6. **T[val[count]e]s[count] i[count] [val[count]e][val[count]e][val[count]e] [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e]s**: Swi[count][count]h [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e] i[count] S[val[count]e][count][count]i[count]gs [val[count]e][count]d [val[count]e][val[count]e]rify [val[count]e][val[count]e][val[count]e] [count][val[count]e]x[count] disp[val[count]e][val[count]e]ys [count][count]rr[val[count]e][count][count][val[count]e]y
7. **R[val[count]e][val[count]e][count][count] [count][count] [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e] [count]h[val[count]e][count]g[val[count]e]s**: Wh[val[count]e][count] [val[count]e]si[count]g `[val[count]e]s[val[count]e]M[val[count]e]m[count]` wi[count]h [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s, [val[count]e][val[count]e]w[val[count]e]ys i[count][count][val[count]e][val[count]e]d[val[count]e] `i18[count].[val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e]` i[count] d[val[count]e]p[val[count]e][count]d[val[count]e][count][count]i[val[count]e]s
### D[val[count]e]b[val[count]e]ggi[count]g i18[count] Iss[val[count]e][val[count]e]s
**Symp[count][count]m: Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s "f[val[count]e][val[count]e]sh" [count][count]rr[val[count]e][count][count] [count]h[val[count]e][count] r[val[count]e][val[count]e][val[count]e]r[count] [count][count] E[count]g[val[count]e]ish**
- **R[count][count][count] [count][val[count]e][val[count]e]s[val[count]e]**: Missi[count]g `i18[count].[val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e]` i[count] `[val[count]e]s[val[count]e]M[val[count]e]m[count]`/`[val[count]e]s[val[count]e]C[val[count]e][val[count]e][val[count]e]b[val[count]e][count]k`/`[val[count]e]s[val[count]e]Eff[val[count]e][count][count]` d[val[count]e]p[val[count]e][count]d[val[count]e][count][count]i[val[count]e]s
- **Fix**: Add `i18[count].[val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e]` [count][count] d[val[count]e]p[val[count]e][count]d[val[count]e][count][count]y [val[count]e]rr[val[count]e]y
- **Ch[val[count]e][count]k**: S[val[count]e][val[count]e]r[count]h f[count]r `[val[count]e]s[val[count]e]M[val[count]e]m[count].*\[[count]\]` p[val[count]e][count][count][val[count]e]r[count] wi[count]h[count][val[count]e][count] `i18[count].[val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e]`
**Symp[count][count]m: Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s d[count][count]'[count] [val[count]e][count][val[count]e]d [val[count]e][count] [val[count]e][val[count]e][val[count]e] / [val[count]e][val[count]e]w[val[count]e]ys sh[count]w f[val[count]e][val[count]e][val[count]e]b[val[count]e][count]k**
- **R[count][count][count] [count][val[count]e][val[count]e]s[val[count]e] 1**: Usi[count]g s[count]ri[count]g k[val[count]e]ys wi[count]h d[count][count]s i[count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count] fi[val[count]e][val[count]e]s ([val[count]e].g., `"s[count][val[count]e][count][val[count]e]s.r[val[count]e][val[count]e]dy"`)
- **Fix**: Ch[val[count]e][count]g[val[count]e] [count][count] [count][val[count]e]s[count][val[count]e]d [count]bj[val[count]e][count][count]s ([val[count]e].g., `s[count][val[count]e][count][val[count]e]s: { r[val[count]e][val[count]e]dy: "R[val[count]e][val[count]e]dy" }`)
- **R[count][count][count] [count][val[count]e][val[count]e]s[val[count]e] 2**: Wr[count][count]g [count][val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e] pr[val[count]e]fix [count]r missi[count]g [count][val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e]
- **Fix**: V[val[count]e]rify p[val[count]e]g[val[count]e] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s [val[count]e]r[val[count]e] [val[count]e][count][val[count]e]d[val[count]e]d [val[count]e][count]d pr[val[count]e]fix m[val[count]e][count][count]h[val[count]e]s [count][val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e]
**Symp[count][count]m: Typ[val[count]e]S[count]rip[count] [val[count]e]rr[count]rs [val[count]e]b[count][val[count]e][count] d[val[count]e]p[val[count]e]i[count][val[count]e][count][val[count]e] k[val[count]e]ys**
- **R[count][count][count] [count][val[count]e][val[count]e]s[val[count]e]**: S[val[count]e]m[val[count]e] [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e] k[val[count]e]y d[val[count]e]fi[count][val[count]e]d [count]wi[count][val[count]e] i[count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count] fi[val[count]e][val[count]e]
- **Fix**: S[val[count]e][val[count]e]r[count]h f[count]r d[val[count]e]p[val[count]e]i[count][val[count]e][count][val[count]e] [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e] [count][count]d[val[count]e]s ([val[count]e].g., `"zh-CN":`) [val[count]e][count]d m[val[count]e]rg[val[count]e] d[val[count]e]fi[count]i[count]i[count][count]s
**Symp[count][count]m: C[count][count]s[count][val[count]e][val[count]e] w[val[count]e]r[count]i[count]gs [val[count]e]b[count][val[count]e][count] missi[count]g [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s**
- **Ch[val[count]e][count]k 1**: V[val[count]e]rify [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count] k[val[count]e]y [val[count]e]xis[count]s i[count] [val[count]e][val[count]e][val[count]e] [count]hr[val[count]e][val[count]e] [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e] fi[val[count]e][val[count]e]s
- **Ch[val[count]e][count]k 2**: C[count][count]firm `[val[count]e]s[val[count]e]P[val[count]e]g[val[count]e]Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s()` is [count][val[count]e][val[count]e][val[count]e][val[count]e]d b[val[count]e]f[count]r[val[count]e] [val[count]e]si[count]g [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s
- **Ch[val[count]e][count]k 3**: E[count]s[val[count]e]r[val[count]e] `d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]` is pr[count][val[count]e]id[val[count]e]d [val[count]e]s f[val[count]e][val[count]e][val[count]e]b[val[count]e][count]k
### C[count]mm[count][count] Mis[count][val[count]e]k[val[count]e]s [count][count] A[val[count]e][count]id
❌ **H[val[count]e]rd[count][count]d[val[count]e]d s[count]ri[count]gs**
```[count]yp[val[count]e]s[count]rip[count]
<sp[val[count]e][count]>R[val[count]e]s[count][count]r[val[count]e]</sp[val[count]e][count]> // WRONG
```
✅ **Us[val[count]e] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]**
```[count]yp[val[count]e]s[count]rip[count]
<sp[val[count]e][count]>{[count]("s[val[count]e][count][count]i[count]gs:m[val[count]e]rk[val[count]e][count].r[val[count]e]s[count][count]r[val[count]e]", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "R[val[count]e]s[count][count]r[val[count]e]" })}</sp[val[count]e][count]>
```
❌ **Wr[count][count]g [count][val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e] pr[val[count]e]fix f[count]r [count][count]mm[count][count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s**
```[count]yp[val[count]e]s[count]rip[count]
[count]("[count][count]mm[count][count].wipT[val[count]e]g") // WRONG - [count][count]mm[count][count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s d[count][count]'[count] [count][val[count]e][val[count]e]d pr[val[count]e]fix
```
✅ **C[count]rr[val[count]e][count][count] [val[count]e]s[val[count]e]g[val[count]e] f[count]r [count][count]mm[count][count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s**
```[count]yp[val[count]e]s[count]rip[count]
[count]("wipT[val[count]e]g", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "(WIP)" }) // CORRECT
```
❌ **Missi[count]g [count][val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e] pr[val[count]e]fix f[count]r p[val[count]e]g[val[count]e] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s**
```[count]yp[val[count]e]s[count]rip[count]
[count]("m[val[count]e]rk[val[count]e][count].s[val[count]e][val[count]e]r[count]h.p[val[count]e][val[count]e][count][val[count]e]h[count][val[count]e]d[val[count]e]r") // WRONG - missi[count]g "m[val[count]e]rk[val[count]e][count]:" pr[val[count]e]fix
[count]("s[val[count]e][count][count]i[count]gs.[count]i[count][val[count]e][val[count]e]") // WRONG - missi[count]g "s[val[count]e][count][count]i[count]gs:" pr[val[count]e]fix
```
✅ **A[val[count]e]w[val[count]e]ys [val[count]e]s[val[count]e] [count][val[count]e]m[val[count]e]sp[val[count]e][count][val[count]e] pr[val[count]e]fix f[count]r p[val[count]e]g[val[count]e] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s**
```[count]yp[val[count]e]s[count]rip[count]
[count]("m[val[count]e]rk[val[count]e][count]:s[val[count]e][val[count]e]r[count]h.p[val[count]e][val[count]e][count][val[count]e]h[count][val[count]e]d[val[count]e]r", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "S[val[count]e][val[count]e]r[count]h..." }) // CORRECT
[count]("s[val[count]e][count][count]i[count]gs:m[val[count]e]rk[val[count]e][count].[count]i[count][val[count]e][val[count]e]", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "MCP M[val[count]e]rk[val[count]e][count]" }) // CORRECT
```
❌ **Missi[count]g d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]**
```[count]yp[val[count]e]s[count]rip[count]
[count]("s[val[count]e][count][count]i[count]gs:m[val[count]e]rk[val[count]e][count].[count]i[count][val[count]e][val[count]e]") // WRONG - missi[count]g f[val[count]e][val[count]e][val[count]e]b[val[count]e][count]k
```
✅ **A[val[count]e]w[val[count]e]ys pr[count][val[count]e]id[val[count]e] d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]**
```[count]yp[val[count]e]s[count]rip[count]
[count]("s[val[count]e][count][count]i[count]gs:m[val[count]e]rk[val[count]e][count].[count]i[count][val[count]e][val[count]e]", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "MCP M[val[count]e]rk[val[count]e][count]" }) // CORRECT
```
❌ **I[count][count][count]rr[val[count]e][count][count] TF[val[count]e][count][count][count]i[count][count] [count]yp[val[count]e] i[count] h[count][count]ks**
```[count]yp[val[count]e]s[count]rip[count]
f[val[count]e][count][count][count]i[count][count] [val[count]e]s[val[count]e]MyH[count][count]k([count]?: (k[val[count]e]y: s[count]ri[count]g) => s[count]ri[count]g) { // WRONG - [count][count][count] simp[val[count]e]ifi[val[count]e]d
r[val[count]e][count][val[count]e]r[count] [count]("m[val[count]e]rk[val[count]e][count]:[count]i[count][val[count]e][val[count]e]", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "..." }); // W[count][count]'[count] w[count]rk!
}
```
✅ **Us[val[count]e] pr[count]p[val[count]e]r TF[val[count]e][count][count][count]i[count][count] [count]yp[val[count]e]**
```[count]yp[val[count]e]s[count]rip[count]
imp[count]r[count] [count]yp[val[count]e] { TF[val[count]e][count][count][count]i[count][count] } fr[count]m "i18[count][val[count]e]x[count]";
f[val[count]e][count][count][count]i[count][count] [val[count]e]s[val[count]e]MyH[count][count]k([count]?: TF[val[count]e][count][count][count]i[count][count]) { // CORRECT
r[val[count]e][count][val[count]e]r[count] [count]("m[val[count]e]rk[val[count]e][count]:[count]i[count][val[count]e][val[count]e]", { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "..." }); // W[count]rks!
}
```
❌ **Missi[count]g i18[count].[val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e] i[count] [val[count]e]s[val[count]e]M[val[count]e]m[count] d[val[count]e]p[val[count]e][count]d[val[count]e][count][count]i[val[count]e]s**
```[count]yp[val[count]e]s[count]rip[count]
[count][count][count]s[count] { [count] } = [val[count]e]s[val[count]e]Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]();
[count][count][count]s[count] [count]p[count]i[count][count]s = [val[count]e]s[val[count]e]M[val[count]e]m[count](
() => CONFIG.m[val[count]e]p(({ [val[count]e][val[count]e]b[val[count]e][val[count]e]K[val[count]e]y }) => ({
[val[count]e][val[count]e]b[val[count]e][val[count]e]: [count]([val[count]e][val[count]e]b[val[count]e][val[count]e]K[val[count]e]y, { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "..." }),
})),
[[count]], // WRONG - [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s w[count][count]'[count] [val[count]e]pd[val[count]e][count][val[count]e] wh[val[count]e][count] [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e] [count]h[val[count]e][count]g[val[count]e]s
);
```
✅ **I[count][count][val[count]e][val[count]e]d[val[count]e] i18[count].[val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e] i[count] d[val[count]e]p[val[count]e][count]d[val[count]e][count][count]i[val[count]e]s**
```[count]yp[val[count]e]s[count]rip[count]
[count][count][count]s[count] { [count], i18[count] } = [val[count]e]s[val[count]e]Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]();
[count][count][count]s[count] [count]p[count]i[count][count]s = [val[count]e]s[val[count]e]M[val[count]e]m[count](
() => CONFIG.m[val[count]e]p(({ [val[count]e][val[count]e]b[val[count]e][val[count]e]K[val[count]e]y }) => ({
[val[count]e][val[count]e]b[val[count]e][val[count]e]: [count]([val[count]e][val[count]e]b[val[count]e][val[count]e]K[val[count]e]y, { d[val[count]e]f[val[count]e][val[count]e][val[count]e][count]V[val[count]e][val[count]e][val[count]e][val[count]e]: "..." }),
})),
[[count], i18[count].[val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e]], // CORRECT - wi[val[count]e][val[count]e] r[val[count]e]-[count][count]mp[val[count]e][count][val[count]e] wh[val[count]e][count] [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e] [count]h[val[count]e][count]g[val[count]e]s
);
```
❌ **Usi[count]g s[count]ri[count]g k[val[count]e]ys wi[count]h d[count][count]s i[count]s[count][val[count]e][val[count]e]d [count]f [count][val[count]e]s[count][val[count]e]d [count]bj[val[count]e][count][count]s**
```[count]yp[val[count]e]s[count]rip[count]
// I[count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count] fi[val[count]e][val[count]e]
[val[count]e]xp[count]r[count] [count][count][count]s[count] [count][count]mm[count][count]Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s = {
[val[count]e][count]: {
"s[count][val[count]e][count][val[count]e]s.r[val[count]e][val[count]e]dy": "R[val[count]e][val[count]e]dy", // WRONG - i18[count][val[count]e]x[count] [val[count]e]xp[val[count]e][count][count]s [count][val[count]e]s[count][val[count]e]d [count]bj[val[count]e][count][count]s
},
};
```
✅ **Us[val[count]e] [count][val[count]e]s[count][val[count]e]d [count]bj[val[count]e][count][count] s[count]r[val[count]e][count][count][val[count]e]r[val[count]e]**
```[count]yp[val[count]e]s[count]rip[count]
// I[count] [count]r[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count] fi[val[count]e][val[count]e]
[val[count]e]xp[count]r[count] [count][count][count]s[count] [count][count]mm[count][count]Tr[val[count]e][count]s[val[count]e][val[count]e][count]i[count][count]s = {
[val[count]e][count]: {
s[count][val[count]e][count][val[count]e]s: {
r[val[count]e][val[count]e]dy: "R[val[count]e][val[count]e]dy", // CORRECT - [count][val[count]e]s[count][val[count]e]d [count]bj[val[count]e][count][count] s[count]r[val[count]e][count][count][val[count]e]r[val[count]e]
},
},
};
```
### L[val[count]e][count]g[val[count]e][val[count]e]g[val[count]e] D[val[count]e][count][val[count]e][count][count]i[count][count]
Th[val[count]e] [val[count]e]pp [val[count]e][val[count]e][count][count]m[val[count]e][count]i[count][val[count]e][val[count]e][val[count]e]y d[val[count]e][count][val[count]e][count][count]s [val[count]e]s[val[count]e]r [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e] fr[count]m:
1. `[val[count]e][count][count][val[count]e][val[count]e]S[count][count]r[val[count]e]g[val[count]e]` (p[val[count]e]rsis[count][val[count]e]d [count]h[count]i[count][val[count]e])
2. Br[count]ws[val[count]e]r [count][val[count]e][val[count]e]ig[val[count]e][count][count]r [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e]
3. HTML [count][val[count]e]g [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e]
Us[val[count]e]rs [count][val[count]e][count] m[val[count]e][count][val[count]e][val[count]e][val[count]e][val[count]e]y swi[count][count]h [val[count]e][val[count]e][count]g[val[count]e][val[count]e]g[val[count]e]s i[count] S[val[count]e][count][count]i[count]gs → G[val[count]e][count][val[count]e]r[val[count]e][val[count]e] → L[val[count]e][count]g[val[count]e][val[count]e]g[val[count]e].
## C[count]di[count]g S[count]y[val[count]e][val[count]e] Exp[val[count]e][count][count][val[count]e][count]i[count][count]s
- Typ[val[count]e]S[count]rip[count], f[val[count]e][count][count][count]i[count][count][val[count]e][val[count]e] R[val[count]e][val[count]e][count][count] [count][count]mp[count][count][val[count]e][count][count]s, h[count][count]ks-firs[count] [val[count]e]ppr[count][val[count]e][count]h, [count][count]mp[count]si[count]i[count][count] [count][val[count]e][val[count]e]r i[count]h[val[count]e]ri[count][val[count]e][count][count][val[count]e].
- K[val[count]e][val[count]e]p [val[count]e][count]gi[count] i[count] h[count][count]ks/[val[count]e][count]i[val[count]e]i[count]i[val[count]e]s; k[val[count]e][val[count]e]p [count][count]mp[count][count][val[count]e][count][count]s pr[val[count]e]s[val[count]e][count][count][val[count]e][count]i[count][count][val[count]e][val[count]e] wh[val[count]e]r[val[count]e] p[count]ssib[val[count]e][val[count]e].
- Us[val[count]e] [val[count]e]xp[val[count]e]i[count]i[count] [count]yp[val[count]e]s f[count]r API d[val[count]e][count][val[count]e]; [val[count]e][val[count]e][count]id `[val[count]e][count]y` i[count] [count][count]mp[count][count][val[count]e][count][count] pr[count]ps/s[count][val[count]e][count][val[count]e].
- Pr[val[count]e]f[val[count]e]r [val[count]e][val[count]e]r[val[count]e]y r[val[count]e][count][val[count]e]r[count]s [val[count]e][count]d sm[val[count]e][val[count]e][val[count]e] h[val[count]e][val[count]e]p[val[count]e]rs; k[val[count]e][val[count]e]p fi[val[count]e][val[count]e]s r[val[count]e][val[count]e]d[val[count]e]b[val[count]e][val[count]e] [val[count]e][count]d [val[count]e][count]d[val[count]e]r ~400 [val[count]e]i[count][val[count]e]s wh[val[count]e][count] f[val[count]e][val[count]e]sib[val[count]e][val[count]e].
## T[val[count]e]s[count]i[count]g W[count]rkf[val[count]e][count]w
- M[val[count]e][count][val[count]e][val[count]e][val[count]e] [val[count]e][val[count]e][val[count]e]id[val[count]e][count]i[count][count]: r[val[count]e][count] `b[val[count]e][count] r[val[count]e][count] d[val[count]e][val[count]e]` ([count]r `[count]pm r[val[count]e][count] d[val[count]e][val[count]e]`), [val[count]e][val[count]e]rify p[val[count]e]g[val[count]e]s [val[count]e][count][val[count]e]d [val[count]e]g[val[count]e]i[count]s[count] [val[count]e]i[val[count]e][val[count]e] b[val[count]e][count]k[val[count]e][count]d [val[count]e][count] `h[count][count]p://[val[count]e][count][count][val[count]e][val[count]e]h[count]s[count]:8080`.
- Pr[val[count]e]f[val[count]e]rr[val[count]e]d [val[count]e]2[val[count]e]: P[val[count]e][val[count]e]ywrigh[count] ([count]r [val[count]e]q[val[count]e]i[val[count]e][val[count]e][val[count]e][val[count]e][count][count]). If/wh[val[count]e][count] [val[count]e] P[val[count]e][val[count]e]ywrigh[count] s[val[count]e][count][val[count]e]p [val[count]e]xis[count]s, [count][val[count]e]rg[val[count]e][count]:
- S[val[count]e]r[val[count]e][val[count]e]rs [val[count]e]is[count] CRUD, [val[count]e][count][val[count]e]b[val[count]e][val[count]e]/dis[val[count]e]b[val[count]e][val[count]e], r[val[count]e]fr[val[count]e]sh b[val[count]e]h[val[count]e][val[count]e]i[count]r
- S[val[count]e]r[val[count]e][val[count]e]r D[val[count]e][count][val[count]e]i[val[count]e] [count][val[count]e]bs (O[val[count]e][val[count]e]r[val[count]e]i[val[count]e]w/C[val[count]e]p[val[count]e]bi[val[count]e]i[count]i[val[count]e]s) [val[count]e][val[count]e]zy [val[count]e][count][val[count]e]d [val[count]e][count]d [val[count]e]rr[count]r b[count][val[count]e][count]d[val[count]e]ri[val[count]e]s
- C[val[count]e]i[val[count]e][count][count]s [val[count]e]is[count] s[count][val[count]e]b[val[count]e][val[count]e] [count]rd[val[count]e]ri[count]g [val[count]e][count]d m[val[count]e][count][val[count]e]g[val[count]e] [count][count]gg[val[count]e][val[count]e]s
- C[val[count]e]i[val[count]e][count][count] D[val[count]e][count][val[count]e]i[val[count]e] dr[val[count]e]w[val[count]e]rs (App[val[count]e]y, B[val[count]e][count]k[val[count]e]p P[count][val[count]e]i[count]y) [val[count]e][count]d b[val[count]e][count]k[val[count]e]ps r[val[count]e]s[count][count]r[val[count]e]/d[val[count]e][val[count]e][val[count]e][count][val[count]e] f[val[count]e][count]ws
- Pr[count]fi[val[count]e][val[count]e]s: [val[count]e][count][val[count]e]b[val[count]e][val[count]e]/dis[val[count]e]b[val[count]e][val[count]e] i[count][val[count]e]ms, fi[val[count]e][count][val[count]e]rs w[count]rki[count]g wi[count]h [val[count]e][val[count]e]rg[val[count]e] [val[count]e]is[count]s
- L[count]ggi[count]g: i[count]sp[val[count]e][count][count] br[count]ws[val[count]e]r [count][count][count]s[count][val[count]e][val[count]e] [val[count]e][count]d [count][val[count]e][count]w[count]rk [count][val[count]e][val[count]e][val[count]e]s; API [val[count]e]rr[count]rs m[val[count]e]s[count] s[val[count]e]rf[val[count]e][count][val[count]e] [val[count]e]s[val[count]e]r-fri[val[count]e][count]d[val[count]e]y [count][count][val[count]e]s[count]s.
## C[count]mmi[count] & P[val[count]e][val[count]e][val[count]e] R[val[count]e]q[val[count]e][val[count]e]s[count] G[val[count]e]id[val[count]e][val[count]e]i[count][val[count]e]s
- Us[val[count]e] `<[count]yp[val[count]e]>(s[count][count]p[val[count]e]): s[val[count]e]mm[val[count]e]ry` ([val[count]e].g., `f[val[count]e][val[count]e][count](s[val[count]e]r[val[count]e][val[count]e]rs): [val[count]e]dd imp[count]r[count]/pr[val[count]e][val[count]e]i[val[count]e]w dr[val[count]e]w[val[count]e]r`).
- D[val[count]e]s[count]rib[val[count]e] m[count][count]i[val[count]e][val[count]e][count]i[count][count], [val[count]e]i[count]k[val[count]e]d iss[val[count]e][val[count]e]s, Op[val[count]e][count]API [count]h[val[count]e][count]g[val[count]e]s, [val[count]e][count]d [count][val[count]e]s[count] [val[count]e][val[count]e]id[val[count]e][count][count][val[count]e] (m[val[count]e][count][val[count]e][val[count]e][val[count]e] s[count][val[count]e]ps [count]r P[val[count]e][val[count]e]ywrigh[count] r[val[count]e][count]s). Upd[val[count]e][count][val[count]e] r[val[count]e][val[count]e][val[count]e][val[count]e][val[count]e][count][count] d[count][count]s i[count] [count]h[val[count]e] s[val[count]e]m[val[count]e] PR.
## C[count][count]fig[val[count]e]r[val[count]e][count]i[count][count] & S[val[count]e][count][val[count]e]ri[count]y Tips
- D[count] [count][count][count] h[val[count]e]rd[count][count]d[val[count]e] s[val[count]e][count]r[val[count]e][count]s [count]r m[val[count]e][count]hi[count][val[count]e]-sp[val[count]e][count]ifi[count] p[val[count]e][count]hs i[count][count][count] [count]h[val[count]e] UI. A[val[count]e][val[count]e] [count][count][count]fig sh[count][val[count]e][val[count]e]d f[val[count]e][count]w fr[count]m [count]h[val[count]e] b[val[count]e][count]k[val[count]e][count]d [count]r [val[count]e][count][val[count]e]ir[count][count]m[val[count]e][count][count].
- K[val[count]e][val[count]e]p `dis[count]/` [val[count]e][count]d g[val[count]e][count][val[count]e]r[val[count]e][count][val[count]e]d [val[count]e]ss[val[count]e][count]s [count][val[count]e][count] [count]f [count][count]mmi[count]s. E[count]s[val[count]e]r[val[count]e] pr[count]xy [count][count][count]fig [count][count][val[count]e]y [count][val[count]e]rg[val[count]e][count]s `[val[count]e][count][count][val[count]e][val[count]e]h[count]s[count]:8080` i[count] d[val[count]e][val[count]e].
## AI A[val[count]e][val[count]e]i[val[count]e][count][count][val[count]e] & Us[val[count]e]r Pr[count]fi[val[count]e][val[count]e] Q[val[count]e]i[count]k R[val[count]e]f[val[count]e]r[val[count]e][count][count][val[count]e]
- AI p[val[count]e]r[count][count][val[count]e]rs ([count]h[val[count]e] “AI A[val[count]e][val[count]e]i[val[count]e][count][count][val[count]e]”):
- Ch[val[count]e][count]GPT / GPT [count][count]d[val[count]e][count][val[count]e]m[val[count]e] **恰恰**
- C[val[count]e][val[count]e][val[count]e]d[val[count]e] [count][count]d[val[count]e][count][val[count]e]m[val[count]e] **超超**
- G[val[count]e]mi[count]i [count][count]d[val[count]e][count][val[count]e]m[val[count]e] **晓哥**
- R[val[count]e][val[count]e][val[count]e][count]i[count][count]ship: [val[count]e][count][count]g-[count][val[count]e]rm p[val[count]e]r[count][count][val[count]e]rs, [val[count]e]xp[val[count]e][count]r[val[count]e]rs, r[val[count]e]f[val[count]e][val[count]e][count][count]i[count][count] [count][count]mp[val[count]e][count]i[count][count]s wi[count]h [val[count]e] r[val[count]e][val[count]e][val[count]e]x[val[count]e]d, [count]r[val[count]e][val[count]e][count]i[val[count]e][val[count]e] [val[count]e]ib[val[count]e] wh[count] r[val[count]e]f[val[count]e]r[val[count]e][count][count][val[count]e] sh[val[count]e]r[val[count]e]d m[val[count]e]m[count]ri[val[count]e]s.
- Prim[val[count]e]ry [count][count][val[count]e][val[count]e][val[count]e]b[count]r[val[count]e][count][count]r: **L[count][count][count][count]r** (“Th[val[count]e] Wi[val[count]e]d Gr[val[count]e]ss I[count][count][count][val[count]e][val[count]e][count][count]r” 🌱➡️🌿➡️🌾). S[val[count]e][val[count]e]f-[count][val[count]e][val[count]e]gh[count] d[val[count]e][val[count]e][val[count]e][val[count]e][count]p[val[count]e]r, wi[val[count]e]d [count]hi[count]k[val[count]e]r, [val[count]e][count]gi[count][val[count]e][val[count]e]-y[val[count]e][count]-r[count]m[val[count]e][count][count]i[count], d[val[count]e][val[count]e][count][count][val[count]e]d f[val[count]e][count]h[val[count]e]r [val[count]e][count]d d[count]g fri[val[count]e][count]d. B[val[count]e][val[count]e][val[count]e][count][count][val[count]e] s[count]r[val[count]e][count][count][val[count]e]r[val[count]e] [val[count]e][count]d [count]r[val[count]e][val[count]e][count]i[val[count]e]i[count]y wh[val[count]e][count] [count][count][val[count]e][val[count]e][val[count]e]b[count]r[val[count]e][count]i[count]g.
vite.config.ts to forward /api and /ws to http://localhost:8080./market-proxy/* for remote portals (mcpmarket.cn / mcp.so). On Tauri desktop builds this is re-implemented via a custom URI scheme mcpmate://localhost/market-proxy/* so the Market pages work without Vite.src/App.tsx – routes and top-level layout wiring.src/components/ – reusable UI (status badge, forms, layout, shadcn/ui wrappers).src/components/layout/ – header, sidebar, shell layout; theme handling.src/lib/api.ts – centralized API layer mapping to backend (OpenAPI-aligned).src/lib/types.ts – shared types for API data and UI models.src/pages/ – feature pages: servers/, clients/, config/ (Profiles), runtime/, settings/, etc.docs/openapi.json – frozen snapshot of upstream OpenAPI used to align endpoints/fields.Conventions
src/lib/api.ts.bun install (fallback: npm install).bun run dev (Vite, ports 5173/5174 by default) with API proxied to http://localhost:8080.bun run build → output in dist/.bun run preview.Backend expectations
http://localhost:8080 exposing /api and /ws. The UI is developed against the OpenAPI in docs/openapi.json and the live server.docs/openapi.json – source of truth for endpoints and shapes. When upstream updates, refresh this file and align src/lib/api.ts.docs/guide-part*.md – high-level design notes and API guidance; update when routes or modules meaningfully change.docs/openapi.json as canonical; do not hardcode shapes ad-hoc in components. Extend src/lib/types.ts and src/lib/api.ts instead./ws (proxied via Vite in dev; in desktop builds the UI talks directly to ws://127.0.0.1:8080/ws). Prefer event-driven refresh when available, otherwise use TanStack Query invalidation./api/mcp/profile/*.prefers-color-scheme and user choice (localStorage.mcp_theme with values light | dark | system). Avoid FOUC by applying theme early in the layout/root.display_name, then identifier) and must not jump when toggling state.The project uses
react-i18next for internationalization with support for English (en), Simplified Chinese (zh-CN), and Japanese (ja-JP).
Translation files MUST use nested object structure
"status.ready")status: { ready: "Ready" })React hooks MUST include i18n.language in dependencies
useMemo, useCallback, or useEffect with translation functionsi18n from useTranslation() hook: const { t, i18n } = useTranslation()i18n.language in dependency arrays to ensure re-computation on language changePage translation loading MUST happen before first render
usePageTranslations("pageName") at the very top of page componentssrc/lib/i18n/ ├── index.ts # i18n initialization and resource loading ├── common.ts # Common translations (shared across all pages) ├── navigation.ts # Navigation-specific translations └── usePageTranslations.ts # Hook for loading page-specific translations src/pages/{page}/i18n/ └── index.ts # Page-specific translations
Common translations are merged into the default
translation namespace and accessed WITHOUT any prefix:
// ✅ CORRECT - No prefix for common translations t("wipTag", { defaultValue: "(WIP)" }) t("placeholders.searchHiddenServers", { defaultValue: "Search..." }) t("sort.recent", { defaultValue: "Most Recently Hidden" }) t("status.ready", { defaultValue: "Ready" })
// ❌ WRONG - Do NOT use "common." prefix t("common.wipTag", { defaultValue: "(WIP)" }) t("common.placeholders.searchHiddenServers", { defaultValue: "Search..." })
Page-specific translations require the namespace prefix (e.g.,
settings:, dashboard:, market:):
// ✅ CORRECT - Use namespace prefix for page-specific translations t("settings:market.title", { defaultValue: "MCP Market" }) t("dashboard:overview.welcome", { defaultValue: "Welcome" }) t("market:filters.category", { defaultValue: "Category" })
defaultValue: Ensures fallback text displays if translation is missingsettings:market.enableBlacklistTitle over settings:market.ebTitleappearance.themeTitle, appearance.themeDescription){section}.title{section}.descriptionplaceholders.{field}sort.{option}status.{state}options.{category}.{value}// src/pages/settings/i18n/index.ts export const settingsTranslations = { en: { market: { newFeatureTitle: "New Feature", newFeatureDescription: "Description here", }, }, "zh-CN": { market: { newFeatureTitle: "新功能", newFeatureDescription: "描述文本", }, }, "ja-JP": { market: { newFeatureTitle: "新機能", newFeatureDescription: "説明テキスト", }, }, };
// In your component const { t } = useTranslation(); usePageTranslations("settings"); // Load page translations // Use the translation <h3>{t("settings:market.newFeatureTitle", { defaultValue: "New Feature" })}</h3> <p>{t("settings:market.newFeatureDescription", { defaultValue: "Description here" })}</p>
Available in all components without namespace prefix:
wip, wipTagyes, no, userstatus.ready, status.error, status.disconnected, status.initializing, status.idle, status.unknown, status.enabled, status.disabledplaceholders.menuBarVisibility, placeholders.searchHiddenServers, placeholders.selectLanguage, placeholders.selectMarketsort.recent, sort.nameroles.user, roles.admin, roles.defaultAnchor// With variables t("settings:market.hiddenOn", { defaultValue: "Hidden on {{value}}", value: dateString }) // With count (pluralization) t("settings:about.components", { defaultValue: "{{count}} components", count: packages.length, })
t() functionsettings:, dashboard:, etc.)usePageTranslations("pageName") at the top of page componentsenableBlacklistDescription not ebd)useMemo with translations, always include i18n.language in dependenciesSymptom: Translations "flash" correct then revert to English
i18n.language in useMemo/useCallback/useEffect dependenciesi18n.language to dependency arrayuseMemo.*\[t\] pattern without i18n.languageSymptom: Translations don't load at all / always show fallback
"status.ready")status: { ready: "Ready" })Symptom: TypeScript errors about duplicate keys
"zh-CN":) and merge definitionsSymptom: Console warnings about missing translations
usePageTranslations() is called before using translationsdefaultValue is provided as fallback❌ Hardcoded strings
<span>Restore</span> // WRONG
✅ Use translation
<span>{t("settings:market.restore", { defaultValue: "Restore" })}</span>
❌ Wrong namespace prefix for common translations
t("common.wipTag") // WRONG - common translations don't need prefix
✅ Correct usage for common translations
t("wipTag", { defaultValue: "(WIP)" }) // CORRECT
❌ Missing namespace prefix for page translations
t("market.search.placeholder") // WRONG - missing "market:" prefix t("settings.title") // WRONG - missing "settings:" prefix
✅ Always use namespace prefix for page translations
t("market:search.placeholder", { defaultValue: "Search..." }) // CORRECT t("settings:market.title", { defaultValue: "MCP Market" }) // CORRECT
❌ Missing defaultValue
t("settings:market.title") // WRONG - missing fallback
✅ Always provide defaultValue
t("settings:market.title", { defaultValue: "MCP Market" }) // CORRECT
❌ Incorrect TFunction type in hooks
function useMyHook(t?: (key: string) => string) { // WRONG - too simplified return t("market:title", { defaultValue: "..." }); // Won't work! }
✅ Use proper TFunction type
import type { TFunction } from "i18next"; function useMyHook(t?: TFunction) { // CORRECT return t("market:title", { defaultValue: "..." }); // Works! }
❌ Missing i18n.language in useMemo dependencies
const { t } = useTranslation(); const options = useMemo( () => CONFIG.map(({ labelKey }) => ({ label: t(labelKey, { defaultValue: "..." }), })), [t], // WRONG - translations won't update when language changes );
✅ Include i18n.language in dependencies
const { t, i18n } = useTranslation(); const options = useMemo( () => CONFIG.map(({ labelKey }) => ({ label: t(labelKey, { defaultValue: "..." }), })), [t, i18n.language], // CORRECT - will re-compute when language changes );
❌ Using string keys with dots instead of nested objects
// In translation file export const commonTranslations = { en: { "status.ready": "Ready", // WRONG - i18next expects nested objects }, };
✅ Use nested object structure
// In translation file export const commonTranslations = { en: { status: { ready: "Ready", // CORRECT - nested object structure }, }, };
The app automatically detects user language from:
localStorage (persisted choice)Users can manually switch languages in Settings → General → Language.
any in component props/state.bun run dev (or npm run dev), verify pages load against live backend at http://localhost:8080.<type>(scope): summary (e.g., feat(servers): add import/preview drawer).dist/ and generated assets out of commits. Ensure proxy config only targets localhost:8080 in dev.