Install
$ agentstack add skill-trussary-vietnamese-language-skill-vietnamese-business-comms ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Vietnamese marketing and sales copy (vi-VN)
Campaign and outbound copy fails in two directions at once. It fails commercially by reading as a mass mailing — wrong pronoun, translated CTA, formal vocabulary where the market uses loanwords. And it fails legally, because Vietnamese advertising law regulates ordinary marketing enthusiasm: unproven superlatives, discounts over 50%, messages sent outside the legal window, and, from 01/01/2026, undisclosed influencer content.
Both failures are invisible to a fluency check. Every rule below exists to stop a specific one.
Step 1 — The channel picks the register, not the brand
Vietnamese has no neutral "you", and in this skill the choice is made by where the message lands rather than by the brand's usual voice.
| Channel or genre | Register | Address | |---|---|---| | Zalo ZNS/ZBS template | zns | Quý khách — even for a brand that says bạn everywhere else | | B2B cold email, quote, proposal, dunning | b2b | anh/chị, self as em or tôi | | E-commerce, social, ads, push | saas | bạn | | Mid-market services, consulting | consult | anh/chị | | Press release | press | Institutional third person, Quý vị if anyone | | Livestream script | livestream | cả nhà, mọi người — spoken register |
bạn in B2B outreach is the single clearest tell of an automated send. No Vietnamese salesperson opens a cold email with Chào bạn.
Who you are in the sentence — em versus tôi, and why age outranks job title — [references/b2b-xung-ho.md](references/b2b-xung-ho.md). The shared pronoun matrix: [references/register-matrix.md](references/register-matrix.md).
Step 2 — Core rules (non-negotiable, no file hop needed)
- Never
bạnormìnhin B2B outreach, a quote, or a dunning notice.anh/chịfor
them; em if you are plausibly junior, tôi otherwise.
- Open with courtesy, not with the pitch. Vietnamese cold outreach puts a line of context
before the ask. An English-style first-line value proposition reads rude.
- **Never write
nhất,số 1,duy nhất,hàng đầu,bán chạy nhấtas an unproven
claim.** Illegal under Điều 8 khoản 11 Luật Quảng cáo 16/2012/QH13, with current fines. bán chạy nhất is a ranking claim like any other.
- A discount over 50% needs a registered
chương trình khuyến mại tập trung. NĐ 81/2018
as amended by NĐ 128/2024. A headline number over 50 is a compliance question.
- No marketing content in a transactional Zalo template. It gets the template rejected.
ZNS/ZBS bodies cap at 400 characters có dấu.
- Advertising messages need prior opt-in, a working opt-out, and the legal window — SMS
07:00–22:00, calls 08:00–17:00, ≤3 SMS and ≤1 call per number per 24h.
- Use market vocabulary, not formal translations.
Freeship,Deal,Voucher,
Mua ngay. Học thêm means take extra classes and is never a CTA.
- Never name a competitor in a comparison, and never use a person's image, name, or words
without consent.
Step 3 — Look up the conventional wording
Calques with settled native equivalents (trích dẫn → báo giá, theo lên → theo dõi, lời chào tốt nhất → Trân trọng), the e-commerce vocabulary the market actually uses, sales artifact names, and CTAs by register:
[references/glossary.md](references/glossary.md) — machine-readable, so every row is a lint rule.
Phrases that mark a mass mailing, plus the health and outcome claims that are never permissible: [references/banned-phrases.md](references/banned-phrases.md).
Step 4 — Respect the channel's mechanics
Each channel imposes hard limits that copy has to be written into, not trimmed to afterwards: the ZNS 400-character cap and transactional/promotional split, marketplace title conventions (no ALL-CAPS, no emoji), SMS at 70 characters per segment once diacritics force UCS-2, email subject truncation, emoji density, and the livestream spoken register.
[references/channel-guide.md](references/channel-guide.md)
Step 5 — Get the campaign legally clean
The 50% ceiling and its `` exemption, anti-spam windows, the KOL/KOC disclosure duty new from 01/01/2026, comparative-advertising limits, and sector pre-approval for health and supplement claims:
[references/promo-law.md](references/promo-law.md) — and [references/compliance.md](references/compliance.md) for the cross-cutting citations shared with every Vietnamese skill.
Financial promotion — cam kết lợi nhuận, lãi suất 0%, investment products — is not handled here. Route it to vietnamese-finance-copy and to legal review.
Step 6 — Format numbers, dates, and prices correctly
VND groups with periods and decimalizes with commas: 2.500.000 ₫. Prose uses 2,5 tỷ and 35 triệu, tables use grouped digits, and the two are never mixed in one context. Dates are dd/MM/yyyy. Phones are 0xxx xxx xxx or +84 with the trunk zero dropped.
[references/locale-formatting.md](references/locale-formatting.md), plus [references/unicode-and-tone.md](references/unicode-and-tone.md) for NFC and the tone-mark consistency rule.
Step 7 — Validate, fix, then ship
Run the validator immediately after writing. If it reports errors, fix them and run again. Only present the copy once it passes.
python scripts/validate_copy.py campaign.md --register saas
python scripts/validate_copy.py outreach.md --doctype cold-outreach --register b2b
python scripts/validate_copy.py template.txt --doctype zns-transactional
python scripts/validate_copy.py title.txt --doctype marketplace-title
--doctypeis what turns on the structural rules, and they stay silent without it:
zns, zns-transactional, marketplace-title, cold-outreach, bao-gia, dunning, bulk-message, promo. --list-rules prints everything this skill can emit.
--register zns|b2b|press|livestream|saas|consult|…enablesPRO002.- Exit
0= clean or warnings only. Exit1= errors that must be fixed. --jsonfor machine-readable findings;--strictto fail on warnings too.--fixrewrites NFC violations in place; every other rule is a human judgement call.
Two annotations suppress a legal warning where the paperwork genuinely exists. Neither creates the paperwork:
Thương hiệu số 1 Việt Nam
Giảm đến 90%
Step 8 — Learn from the worked pairs, then hand it to a human
[references/examples.md](references/examples.md) — read the bad→good corpus before writing anything long.
Then run the checklist. The linter cannot tell you whether the xưng hô fits this particular recipient, whether a KOL actually used the product, whether an opt-in genuinely exists, or whether a `` annotation has anything behind it. Those are the four checks that matter most: [references/qa-checklist.md](references/qa-checklist.md)
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: trussary
- Source: trussary/vietnamese-language-skill
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.