# Vnu Eoffice

> Route VNU eOffice requests to an existing vnu_eoffice package or CLI: monitor updates, list latest incoming/outgoing documents, search by keyword, download attachments, and hand explicit file delivery to the authenticated host queue.

- Skill: `hoanganhduc/vnu-eoffice` (Agent Skill)
- Install (CLI): `npx skillmds@latest add hoanganhduc/vnu-eoffice`
- Raw SKILL.md: https://api.skillmd.com/api/skills/hoanganhduc/vnu-eoffice/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: hoanganhduc (https://skillmd.com/u/hoanganhduc)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/hoanganhduc/vnu-eoffice

---


Use this skill when the user asks about VNU eOffice, VNU e-office, eoffice.vnu.edu.vn, incoming documents, outgoing documents, document summaries, document searches, or delivery of eOffice attachments.

Core rules:
- Do not fork or paste target-specific helper code into this canonical skill.
- Do not print credentials, tokens, chat ids, or secret setup instructions.
- Use both modules by default: `den` for incoming and `di` for outgoing.
- Ignore eOffice read/unread state. The user may also read posts manually in a browser, so selection and monitoring must rely on fetched document ids.
- Fetch multiple pages by default. Use `--pages N` when the user asks for a deeper or shallower scan.
- Only download and send document files when the user explicitly asks for files or asks to download/send results.
- The VNU package is a retrieval authority only. Always use `--no-notify` where
  available; never invoke its `send` command or direct Telegram/OpenClaw notifier,
  and never project delivery bot credentials or
  `AAS_FILE_DELIVERY_SECRETS_FILE` into the package process.
- For an explicit delivery request, download first, stage the file in an
  authorized AAS export root, and hand a bounded JSON request to the installed
  `skills/zotero/send_file.sh` queue producer on stdin with no delivery metadata
  in argv. If that producer is unavailable, report the local path and do not
  fall back to a direct provider API.
- Delete local copies only after the authenticated queue reports successful
  delivery, unless the user explicitly asks to keep them.
- Preserve the package's numbered latest/search/monitor output. The package persists item numbers for follow-up download/send requests.
- Use `items` before resolving an ambiguous follow-up request when the current item numbers are not visible in the conversation.

Execution surface:
- On POSIX, prefer the managed dedicated environment when it exists:

```bash
vnu_python="$HOME/.vnu-eoffice_venv/bin/python"
if [ ! -x "$vnu_python" ]; then
  vnu_python="$(command -v python3 || true)"
fi
if [ -z "$vnu_python" ]; then
  printf '%s\n' 'TECHNICAL_FAIL: vnu-eoffice Python interpreter is missing' >&2
  exit 1
fi
"$vnu_python" -m vnu_eoffice <command> [options]
```

- If the dedicated environment is absent, an already importable checkout or
  installed `vnu-eoffice` CLI remains an allowed fallback; do not silently
  install or switch environments.
- On native Windows, if the dedicated local venv exists, prefer `& "$env:USERPROFILE\.vnu-eoffice_venv\Scripts\vnu-eoffice.exe" <command>` or `& "$env:USERPROFILE\.vnu-eoffice_venv\Scripts\python.exe" -m vnu_eoffice <command>` in PowerShell.
- On native Windows consoles, set `PYTHONUTF8=1` and `PYTHONIOENCODING=utf-8` before commands that may print Vietnamese text.
- This skill requires an importable `vnu_eoffice` package/checkout or `vnu-eoffice` executable. If neither is available, report the missing dependency instead of claiming eOffice access.
- If the package is not importable, use the target's normal project checkout mechanism to make `vnu_eoffice` importable. Do not hardcode a user-specific checkout path into the skill.
- Target adapters may wrap the package CLI with convenience command names such as `latest`, but numbered items are package behavior. Keep adapter-only logic outside this canonical skill body.
- Only eOffice credentials may reach the VNU package. Outbound channel
  credentials remain behind the authenticated host worker and are not part of
  this skill's environment or secret store.

Common commands:
- `"$vnu_python" -m vnu_eoffice test-login`
- `"$vnu_python" -m vnu_eoffice monitor --no-notify --limit 60 --pages 2`
- `"$vnu_python" -m vnu_eoffice list --limit 10 --pages 2 --modules den,di`
- `"$vnu_python" -m vnu_eoffice search "<keywords>" --limit 10 --pages 2 --modules den,di`
- `"$vnu_python" -m vnu_eoffice search "<keywords>" --limit 5 --pages 2 --has-attach`
- `"$vnu_python" -m vnu_eoffice items`
- `"$vnu_python" -m vnu_eoffice download --item 5`
- `"$vnu_python" -m vnu_eoffice download --id den:12345`

Natural-language routing:
- "start updates now" or "check updates now": run `monitor --no-notify`, then reply with a titled summary.
- "send latest 10 summaries" or "login and send top 10": run `list --limit 10`; reply with both incoming and outgoing categories, number the results, and retain the `module:intid` mapping for follow-up.
- "search <keywords>": run `search "<keywords>"`; reply with numbered results and ask which item numbers to download.
- "search <keywords> and download results": run `search "<keywords>"`, number the results, and download only the selected item ids unless the user explicitly asks for all results.
- "download all documents of item 5 to me": run `download --item 5`, then use
  the authenticated host queue if delivery was explicitly requested.
- "download items 2 and 4": run `download --item 2,4`, then use the
  authenticated host queue if delivery was explicitly requested.
- "download all results": run the package's download-all selection flow, then
  submit each staged export separately through the authenticated host queue.

Target notes:
- This canonical skill is target-adaptable across supported install targets; target-specific paths should be resolved by the installing agent adapter or local environment.
- OpenClaw-specific rebuild material belongs to the OpenClaw adapter/rebuild plan, not to this ai-agents-skills canonical skill body.

