Pre-2026, every "skills module" in every product is a proprietary container that re-invents discovery, lifecycle, capability grants, and authoring. The result is universal: eager activation O(N) cold-start tax, ambient-authority sandbox holes, bespoke manifests no one else can read. In December 2025 Anthropic released Agent Skills as an open standard at agentskills.io; within six months Microsoft, GitHub, OpenAI, Cursor, Goose, Amp, Gemini CLI, Mistral, Databricks, Letta, and 15+ others adopted it. Inventing a competing format in 2026 is value-destroying. The 13 May 2026 architectural audit (AUDIT.md) made the call: adopt the standard verbatim, rebuild the host as a Rust core with Wasmtime, ship the Bun toolchain for TypeScript skill authors, and use the saved engineering to publish a defensible Vietnamese-market skill collection.
🌐
Open standard, day-1 reach
Every CyberOS skill loads in Claude Code / Codex / Cursor / VS Code unchanged. Distribution is OCI registry or agentskills.io.
🛡
Capability-based sandbox
No ambient authority. Skills declare allowed-tools; the host translates to WASI grants. First-use approval; grants persisted by content hash.
🇻🇳
VN-market collection as moat
Six high-quality Vietnamese-market skills (MST, VAT, VietQR, CCCD, legal, tax) — defensible differentiation a global vendor can't easily replicate.
Four Rust crates form the canonical host. A Bun toolchain handles authoring. Skills are distributed as .skill bundles (zip of the directory + content hash) resolvable from local cache, OCI registries, or HTTPS URLs.
graph TB
subgraph AUTHORING ["Authoring (Bun toolchain)"]
AUTH_BUN["Bun 1.3 + esbuild
cyberos skill new --lang ts"]
AUTH_BUILD["build.ts
TS → wasm32-wasi component"]
AUTH_TEST["bun test"]
end
subgraph HOST ["Rust host (4 crates)"]
MANI_C["crates/manifest
serde model for SKILL.md frontmatter"]
HOST_C["crates/host
loader · registry · activator · invoker"]
RES_C["crates/resolver
OCI + HTTPS + local cache"]
CLI_C["crates/cli
cyberos-skill-cli"]
end
subgraph RUNTIME ["Runtime"]
REG["DashMap registry
sharded · read-mostly"]
WT["Wasmtime engine
WASI Preview 2 + Component Model"]
POOL["Pool
per-skill"]
BROKER["Capability broker
allowed-tools → WASI grants"]
SCRIPT["Native-script executor
(scripts/*.py / *.sh)"]
end
subgraph DIST ["Distribution"]
LOCAL["~/.cyberos/skills/"]
OCI["OCI registry
ghcr.io/cyberskill/*"]
HTTPS["HTTPS URL"]
REG_OPEN["agentskills.io"]
end
subgraph CONSUMERS ["Consumers"]
CUO_S["🎯 CUO router"]
AGENT_S["Claude / Codex / Cursor"]
CHAT_S["💬 CHAT / IDE host"]
end
AUTH_BUN --> AUTH_BUILD
AUTH_BUILD --> LOCAL
AUTH_TEST --> AUTH_BUILD
CLI_C --> HOST_C
HOST_C --> MANI_C
HOST_C --> RES_C
RES_C --> LOCAL
RES_C --> OCI
RES_C --> HTTPS
LOCAL --> REG_OPEN
HOST_C --> REG
HOST_C --> WT
WT --> POOL
HOST_C --> BROKER
HOST_C --> SCRIPT
CUO_S --> CLI_C
AGENT_S --> CLI_C
CHAT_S --> CLI_C
classDef shipped fill:#f5ede6,stroke:#45210e
classDef pending fill:#f0eee9,stroke:#9c9286,stroke-dasharray:4 3
class AUTH_BUN,AUTH_BUILD,AUTH_TEST,MANI_C,HOST_C,RES_C,CLI_C,REG,WT,POOL,BROKER,SCRIPT,LOCAL,CUO_S,AGENT_S shipped
class OCI,HTTPS,REG_OPEN,CHAT_S pending
Crate responsibilities
| Crate | Path | Responsibility |
cyberos-skill-manifest | crates/manifest/ | Serde model for SKILL.md frontmatter (name, description, license, compatibility, metadata, allowed-tools). parse_frontmatter() returns manifest + body offset. |
cyberos-skill-host | crates/host/ | Two-phase loader (boot index → lazy activate). DashMap registry. Invoker with capability checks. Activator pulling Wasmtime Stores from a pool. |
cyberos-skill-resolver | crates/resolver/ | Resolver trait — local cache + OCI + HTTPS. Cosign signature verification (refuses unsigned bundles unless --allow-unsigned). |
cyberos-skill-cli | crates/cli/ | cyberos-skill-cli binary: list, install, validate, run, build, audit. Single entrypoint for users and CUO. |
Three-level progressive disclosure
| Level | When | What's read | Cost |
| L1 · Startup | Host boot | SKILL.md frontmatter only · DashMap shard populated | ~100 tokens/skill · parallel · < 100 ms over 1,000 skills |
| L2 · Activation | Agent or activation event fires | SKILL.md body (up to ~5,000 tokens) · referenced references/ files | One-time per skill instance · cached for session |
| L3 · Execution | Skill is invoked | scripts/*.py or dist/skill.wasm · assets/* | WASM cold-start sub-millisecond with AOT cache · native script: process-spawn cost |
8The 6 cyberskill-vn skills
The Vietnamese-market collection. Each is a valid Agent Skill that loads unchanged in Claude Code / Codex / Cursor / VS Code. All are MIT- or Apache-2.0-licensed, network-free where possible, and ship with a parity-tested Python reference implementation for audit.
🇻🇳 vn-mst-validate v0.2.0 · region:VN · MIT
Validate a Vietnamese tax code (Mã số thuế). Per General Department of Taxation regulations, an MST is either 10 digits (legal entity) or 13 digits (branch — 10 digits + '-' + 3 digits). The skill returns a structured {ok, format, reason?}.
Quickstart
$ cyberos-skill-cli run vn-mst-validate --input '{"mst":"0123456789-001"}'
{"ok": true, "format": "13-digit-branch"}
When to use
User says "kiểm tra MST", "validate tax code", "mã số thuế 0123...". Routed automatically by CUO via the mst, tax code, ma so thue keywords.
Capabilities
read_file · no network
🇻🇳 vn-vat-invoice v0.3.0 · region:VN · Apache-2.0
Generate Vietnamese VAT-compliant electronic invoices (Hoá đơn GTGT điện tử) from a structured JSON line-item list. Produces XML conforming to General Department of Taxation schema v3.0. Validates buyer MST via the vn-mst-validate dependency (Phase 3 chain).
Quickstart
$ cyberos-skill-cli run vn-vat-invoice --input '{
"buyer_mst": "0123456789",
"seller_mst": "9876543210",
"lines": [{"item":"Consulting", "qty":1, "unit_price":10000000, "tax_rate":0.10}]
}'
<Invoice xmlns="urn:vn:gdt:v3">
<BuyerTaxCode>0123456789</BuyerTaxCode>
<LineItem>...<TaxAmount>1000000</TaxAmount></LineItem>
</Invoice>
When to use
User says "tạo hoá đơn", "xuất hoá đơn GTGT", "e-invoice Vietnam". CUO keywords: invoice, hoa don, vat, gtgt, e-invoice, xuat hoa don.
Capabilities
read_file · write_file · no network. Round-half-up VAT per line.
🇻🇳 vn-bank-transfer v0.1.0 · region:VN · MIT
Napas 24/7 + VietQR generator. Given a bank short-code, an account number, and an amount, produces (a) a VietQR EMVCo string for client-side QR rendering and (b) a Napas 24/7 transfer instruction payload. Does NOT execute transfers — that always defers to human approval.
Quickstart
$ cyberos-skill-cli run vn-bank-transfer --input '{
"bank": "VCB", "account":"0011001234567", "amount_vnd": 5000000,
"memo": "Refund INV-2026-014"
}'
{
"vietqr_emv": "00020101021238540010A0000007270124000697040401120011001234567...",
"napas_payload": {...},
"render_url": "https://img.vietqr.io/image/VCB-0011001234567-..."
}
When to use
User says "tạo QR chuyển khoản", "VietQR", "Napas 247". CUO keywords: transfer, qr, chuyen khoan, vietqr, napas, ma qr.
Capabilities
No filesystem · no network. Deterministic generation only.
🇻🇳 vneid-integration v0.1.0 · region:VN · MIT
CCCD validator + VNeID API scaffolding. Validates 12-digit Citizen Identification Card (Căn cước công dân) checksums and shapes an API request to the VNeID gateway for downstream identity verification (gateway access requires PDPL Decree 13/2023 consent — out of scope for this skill, which only prepares the request).
Quickstart
$ cyberos-skill-cli run vneid-integration --input '{"cccd":"079203012345"}'
{
"valid": true,
"structure": {"province_code":"079", "year_of_birth_century":"2", "gender_code":"0"},
"vneid_request_payload": {...},
"next_action": "POST to https://vneid.gov.vn/api/v2/verify (requires consent flow)"
}
When to use
User says "kiểm tra CCCD", "validate citizen ID", "VNeID lookup". CUO keywords: cccd, citizen id, can cuoc, vneid, id card, danh tinh.
Capabilities
No filesystem · no network (scaffolds the request; caller is responsible for the call + consent record).
🇻🇳 vn-legal-compliance v0.1.0 · region:VN · CC-BY-SA-4.0
Reference-only procedural knowledge for Vietnamese legal/compliance: PDPL Law 91/2025 · Decree 13/2023 (Personal Data) · Decree 53/2022 (Cyber Security) · Decree 20/2026 (SME). Markdown-only skill (no executable code) that loads procedural guidance into the agent's context on activation.
Quickstart
$ cyberos-skill-cli run vn-legal-compliance --input '{"topic":"DSAR fulfilment under PDPL Art. 14"}'
{
"level": "instructions",
"guidance": "# DSAR fulfilment under PDPL Art. 14\n\n1. Verify identity via VNeID or...\n2. Within 30 days: ...\n3. Encryption envelope review (Decree 13/2023 Art. 17)..."
}
When to use
User says "compliance check", "decree review", "PDPL question". CUO keywords: compliance, law, decree, nghi dinh, thong tu, pdpl, cybersecurity.
Capabilities
Markdown-only — zero runtime cost.
🇻🇳 vn-tax-filing v0.1.0 · region:VN · Apache-2.0
Monthly + quarterly VAT return helper. Aggregates vn-vat-invoice-emitted XML invoices across a reporting period, sums output VAT and input VAT credits, and shapes the tax return XML for the GDT online filing portal. The skill never submits — submission is a deferred-to-human action.
Quickstart
$ cyberos-skill-cli run vn-tax-filing --input '{
"period":"2026-Q2", "invoices_dir":"./invoices/2026-Q2/"
}'
{
"period": "2026-Q2",
"output_vat_total": 25_000_000,
"input_vat_total": 18_000_000,
"net_vat_due": 7_000_000,
"gdt_xml_path": "./returns/2026-Q2.xml",
"ready_for_submission": true,
"next_action": "human review then upload to https://thuedientu.gdt.gov.vn"
}
When to use
User says "monthly VAT return", "quarterly tax filing", "kê khai thuế". CUO keywords: filing, return, to khai, ke khai thue, monthly vat, quarterly vat.
Capabilities
read_file (invoices) · write_file (return XML) · no network.
9Audit phases 0–7 — outcomes
The 13 May 2026 architectural audit (skill/docs/AUDIT.md) prescribed a seven-phase migration from the legacy in-house format to the open Anthropic Agent Skills standard. All seven phases are now done; Phase 7 is a 30-day soak window before legacy code deletion.
0Phase 0 — Inventory & freeze shipped
Catalogued every legacy skill. Froze the legacy format — no new bespoke skills accepted past Day 0. Stood up cyberos-skill-cli validate that parses both legacy and SKILL.md formats and emits a diff.
1Phase 1 — Rust + Bun scaffold · spec validator shipped
Stood up the 4-crate Rust workspace (manifest · host · resolver · cli) and the Bun + esbuild authoring toolchain. Added the SKILL.md loader alongside the legacy loader behind a --skills-format=both|legacy|standard flag. Audited deltas vs the open spec.
2Phase 2 — Parity harness (Python ↔ Rust) shipped · 12/12 green
Built a property-test harness that asserts byte-identical agent outputs across both runners for the entire catalogue. 12/12 fixtures pass. This is the single objective gate for Phase 7.
3Phase 3 — Executor selection flag · default to Rust shipped
Flipped the default from legacy Python to Rust host. Legacy runner remains compiled in for the soak window. Announced deprecation; the cyberskill-vn collection is now resolvable from the open registry.
4Phase 4 — DashMap registry + Criterion benchmarks shipped · ≥ 2× at contention
Replaced the legacy global Mutex<HashMap> with Arc<DashMap> (64 shards). Criterion microbenchmarks show ≥ 2× throughput at 4+ concurrent invocations on a commodity laptop. Registry hot path is no longer a bottleneck.
5Phase 5 — Wasmtime engine + AOT cache + componentize scaffolded · runtime gated
Wasmtime executor lands behind --exec=script|wasm|auto. Auto selects WASM when dist/skill.wasm is present. AOT artifacts cached on disk by content hash. Bun toolchain compiles TS skills to wasm32-wasi components. Runtime is feature-gated on user install per docs/PHASE_5_ACTIVATION.md.
6Phase 6 — Capability broker GA shipped
Capability enforcement flipped from warn to deny. Operators approve each skill's allowed-tools on first use; the grant is recorded in ~/.cyberos/grants.json bound to the skill's content hash. cyberos-skill-cli audit reports grants.
7Phase 7 — Legacy retirement runbook ready · 30-day soak
Runbook ready (docs/PHASE_7_RETIREMENT.md). Executes after a 30-day soak with zero P0 incidents on the new defaults. Deletes the legacy loader, registry primitive, and executor; tags a new major version.
17CLI usage — real examples
1. List installed skills
$ cyberos-skill-cli list
╭──────────────────────────────────────┬─────────┬────────┬───────────╮
│ name │ version │ region │ executor │
├──────────────────────────────────────┼─────────┼────────┼───────────┤
│ cuo/cpo/prd-author │ 0.4.1 │ — │ inline │
│ cuo/cpo/fr-author │ 0.3.0 │ — │ inline │
│ cuo/cto/srs-author │ 0.2.0 │ — │ inline │
│ ... │ │ │ │
│ cyberskill-vn/vn-mst-validate │ 0.2.0 │ VN │ script │
│ cyberskill-vn/vn-vat-invoice │ 0.3.0 │ VN │ script │
│ cyberskill-vn/vn-bank-transfer │ 0.1.0 │ VN │ wasm │
│ cyberskill-vn/vneid-integration │ 0.1.0 │ VN │ script │
│ cyberskill-vn/vn-legal-compliance │ 0.1.0 │ VN │ inline │
│ cyberskill-vn/vn-tax-filing │ 0.1.0 │ VN │ script │
╰──────────────────────────────────────┴─────────┴────────┴───────────╯
20 skills indexed · cold-start 65 ms · all parity-verified
2. Install from OCI registry (with cosign verification)
$ cyberos-skill-cli install ghcr.io/cyberskill/vn-mst-validate:0.2.0
[resolver] pulling ghcr.io/cyberskill/vn-mst-validate:0.2.0 ... OK (842 KB)
[cosign] verifying signature ... OK (key=cyberskill-release)
[manifest] parsing SKILL.md frontmatter ... OK
[manifest] name=vn-mst-validate version=0.2.0 region=VN
[registry] inserting header into DashMap (shard 14)
[install] cached at ~/.cyberos/skills/vn-mst-validate-0.2.0/
[install] content_hash sha256:a3b8d4...
3. Validate a skill manifest
$ cyberos-skill-cli validate ./skills/cyberskill-vn/vn-tax-filing/
[validate] reading SKILL.md ... OK (1.3 KB)
[validate] frontmatter parse ... OK
[validate] field: name=vn-tax-filing OK (dir-match)
[validate] field: description (412 chars) OK
[validate] field: license=Apache-2.0 OK (SPDX)
[validate] field: metadata.version=0.1.0 OK (SemVer)
[validate] field: metadata.region=VN OK
[validate] field: allowed-tools=read_file,write_file OK (declared)
[validate] referenced files: references/gdt-q-return-schema-v3.md OK
[validate] ✅ valid Agent Skill · would load in Claude Code, Codex, Cursor, VS Code
4. Run a skill
$ echo '{"mst":"0123456789-001"}' | cyberos-skill-cli run vn-mst-validate --executor script
[invoke] skill=vn-mst-validate executor=script
[broker] declared allowed-tools: [read_file]
[broker] requested: [] -- no caps needed for this invocation
[broker] ok (within declared set)
[invoke] script: scripts/validate_mst.py
[invoke] elapsed_ms=24 exit_code=0
{"ok": true, "format": "13-digit-branch"}
5. Audit capability grants
$ cyberos-skill-cli audit --since 7d
╭───────────────────────────────────┬────────────────────────┬──────────────┬──────────╮
│ skill │ capability │ granted_by │ valid? │
├───────────────────────────────────┼────────────────────────┼──────────────┼──────────┤
│ vn-mst-validate │ read_file │ stephen │ ✓ │
│ vn-vat-invoice │ read_file │ stephen │ ✓ │
│ vn-vat-invoice │ write_file │ stephen │ ✓ │
│ vn-tax-filing │ read_file │ stephen │ ✓ │
│ vn-tax-filing │ write_file │ stephen │ ✓ │
│ vn-bank-transfer │ (none — pure compute) │ — │ ✓ │
│ vneid-integration │ (none — pure compute) │ — │ ✓ │
│ vn-legal-compliance │ (inline · no exec) │ — │ ✓ │
╰───────────────────────────────────┴────────────────────────┴──────────────┴──────────╯
8 grants on file · 0 stale · 0 revoked
6. Build a TypeScript skill (Bun toolchain)
$ cd skills/my-new-skill/
$ cyberos-skill-cli build --lang ts ./src/
[bun] installing deps ... OK (240 ms)
[esbuild] bundling src/index.ts ... OK (12 ms)
[wasm] wasm32-wasi component target ... OK (1.4 MB)
[component] wit-bindgen output ... OK
[aot] wasmtime compile · cache key sha256:b9e2c8...
[build] dist/skill.wasm ✓
[build] ready for: cyberos-skill-cli install ./skills/my-new-skill/