I'm Ngo Quoc Viet, a fullstack engineer focused on practical open-source maintenance. I use reproducible diagnostics, test evidence, and agent-assisted implementation to turn concrete upstream issues into narrow, reviewable patches.
| Character stat | Current build |
|---|---|
| Class | Fullstack Engineer / OSS Contributor |
| Experience | Nearly 4 years across product and outsourced projects |
| Party role | Project-level Dev Lead experience in healthcare systems |
| Main quests | Developer platforms, AI tooling, MCP, desktop apps, Windows DX |
| Play style | Reproduce the issue → ship a narrow fix → add regression coverage → follow through on review |
My favorite contributions are the ones maintainers can immediately use: broken runtime paths, cross-platform bugs, stale setup flows, incorrect API behavior, missing safety checks, and tests that prevent the same regression from returning.
Public contribution data for NgoQuocViet2001, refreshed 2026-08-26. The merged count covers public PRs submitted from this account and accepted into repositories it does not own during the preceding 12 months.
| Stat | Total | Meaning |
|---|---|---|
| Merged quests | 107 | External PRs merged by community maintainers in the last 12 months |
| Worlds visited | 38 | Community repositories with at least one merged contribution |
| Active quests | 60 | External PRs currently open for maintainer review |
The most recent merges, newest first. Earlier merged work is summarized in the Guild History table below.
| Project | PR | Quest result | Merged |
|---|---|---|---|
| book-to-skill | #178 | Strips the invisible carriers a Cf category filter misses — deprecated format controls, tag characters, musical format marks — while keeping U+2800 braille blank, which is printable text. |
2026-08-25 |
| text-to-cad | #331 | Reads the arc angle keys the DXF parsers actually emit, so a 90° arc stops being drawn as a complete circle. | 2026-08-25 |
| mise | #12362 | Emits the list separator when prepending to PATH in elvish, so a new entry no longer fuses onto the first existing one. |
2026-08-25 |
| mise | #12361 | Unsets __MISE_SESSION on nushell deactivate, which listed __MISE_DIFF twice and left the session marker behind. |
2026-08-25 |
| Yaak | #606 | Keeps an = inside --url-query and form values during curl import, preserving base64 padding and nested filters. |
2026-08-25 |
| Yaak | #607 | Escapes control characters in json.escape so a value containing a newline no longer produces an unparseable JSON document. |
2026-08-25 |
| Yaak | #605 | Uses the signing key as the OAuth 1.0 PLAINTEXT signature instead of the signature base string, per RFC 5849 3.4.4. | 2026-08-25 |
| drawDB | #1126 | Escapes single quotes in ENUM/SET values so a label such as it's fine no longer terminates the generated SQL literal early. |
2026-08-24 |
| repowise | #1754 | Scopes a module page's decision records to that module's own files, deduplicates them, and ranks by confidence instead of list position. | 2026-08-24 |
| repowise | #1753 | Counts a Prisma verb as a database sink only on a member call, so a local aggregate() stops producing false N+1 findings in code with no database. |
2026-08-24 |
| RAGFlow | #18292 | Classifies CLI benchmark responses by envelope code as well as HTTP status so failed calls stop inflating the success count. | 2026-08-21 |
| Vite | #23256 | Closes config bundles from a finally block so failed generation releases Rolldown plugin and native resources as reliably as the successful path. |
2026-08-21 |
| pnpm | #13900 | Preserves caret, tilde, bare, and equals-prefixed range styles when updates resolve to prereleases, keeping the TypeScript and Rust implementations aligned. | 2026-08-21 |
| OpenCADStudio | #827 | Rounds lengths and angles in their smallest displayed unit before splitting larger units, carrying values such as 12 inches or 60 seconds into the next column. | 2026-08-20 |
| Yaak | #593 | Emits shell-safe curl and gRPCurl arguments when values contain apostrophes, spaces, or file form-field type suffixes. | 2026-08-20 |
| Yaak | #597 | Keeps each --data-urlencode argument whole and preserves malformed percent text instead of failing the entire curl import. |
2026-08-20 |
| OpenCADStudio | #826 | Keeps DDPTYPE glyphs off dimension definition points on the Defpoints layer while preserving styles for user-created points. |
2026-08-20 |
| OpenCADStudio | #825 | Routes Up and Down to the MText caret while the editor is open instead of walking command history behind the dialog. | 2026-08-20 |
| zmx | #239 | Scopes the README session picker to the active ZMX_SESSION_PREFIX and prevents preview or attach from applying that prefix twice. |
2026-08-20 |
| OpenCADStudio | #823 | Gives SUBTRACT a deterministic operand order instead of taking the minuend and subtrahend from arbitrary HashSet iteration. |
2026-08-20 |
| OpenCADStudio | #822 | Restores tangent-tangent-radius solutions where the new circle encloses an existing circle without disturbing the external-tangency family. | 2026-08-20 |
| archify | #91 | Counts BMP emoji-presentation symbols and extended Hangul as full-width text units so fitted labels no longer overrun their nodes. | 2026-08-20 |
| OpenCADStudio | #820 | Requires identifier word boundaries during expression rescans so names such as ASPIRATORE no longer have their internal pi evaluated. |
2026-08-20 |
| cuda-oxide | #1051 | Rejects variadic #[device] externs at macro expansion with a source span, including declarations that are never reached by kernel MIR. |
2026-08-20 |
| Text-Grab | #670 | Applies Latin character correction only for Latin-based capture languages across paragraph, table, PDF, Tesseract, and Grab Frame OCR paths. | 2026-08-20 |
| Logto | #9462 | Aligns contributor prerequisites with the package engines by documenting Node ^22.14.0 and support for pnpm 9 and 10. |
2026-08-20 |
| text-to-cad | #301 | Accepts occurrenceId rows in Python label aliases and runs the shared alias fixture in both Python and JavaScript to prevent parity drift. |
2026-08-19 |
| text-to-cad | #300 | Strips only a leading # from CAD selectors so interior or trailing hashes remain opaque instead of being silently rewritten into labels. |
2026-08-19 |
| Slidev | #2703 | Defaults deferred manual setup to npm when create-slidev is launched without a detectable package manager. |
2026-08-19 |
| Yaak | #577 | Parses combined curl short flags left to right so common clusters such as -fsSL no longer turn sSL into the imported URL. |
2026-08-18 |
| manim | #2502 | Looks a graph's point up by clamping to the plotted x-range instead of indexing past it, so a lookup outside the unit range returns a point on the curve rather than failing. | 2026-08-17 |
| OpenCADStudio | #794 | Fingerprints a drawing through the handle its own edit lease already holds, so Save As over an existing file no longer fails against this editor's own mandatory Windows lock. | 2026-08-17 |
| text-to-cad | #283 | Copies a pinned temp file sideways and reruns the rename ladder when an SMB handle outlives it, covering every call site through replace_atomic rather than one writer. |
2026-08-17 |
| OpenCADStudio | #781 | Opens printer properties for the printer selected in the plot dialog on Windows instead of the system default. | 2026-08-17 |
| OpenCADStudio | #780 | Clears a half-drawn selection marquee when a command starts, so the pending rubber band cannot survive into the next command's input. | 2026-08-17 |
| Community project | Merged quests | Contribution territory |
|---|---|---|
| mksglu/context-mode | 13 | Codex/MCP reliability, Windows shells, plugin installs, analytics, cache behavior, docs, and regression coverage |
| HakanSeven12/OpenCADStudio | 12 | CAD geometry, commands, unit formatting, DWG rendering, Windows file locking, and printer integration |
| CJackHwang/ds2api | 8 | OpenAI-compatible routes, streaming, citations, tool output, Vercel sync, and file metadata |
| tinyhumansai/openhuman | 8 | Desktop OAuth, deep links, packaging, startup cleanup, RPC security, AppImage release safety, and Windows contributor setup |
| mountain-loop/yaak | 6 | Curl import parsing, shell-safe curl and gRPCurl export, OAuth 1.0 PLAINTEXT signing, and JSON template escaping |
| slidevjs/slidev | 6 | Base-path routing, reactive frontmatter, addon preprocessing, test lifecycle cleanup, local exports, and scaffold setup |
| earthtojake/text-to-cad | 5 | Windows SMB write resilience, cross-language CAD selector and label parity, and DXF arc angle parsing |
| github/spec-kit | 4 | Development agent symlinks, safe Kiro multi-install behavior, authentication host matching, and workflow step-type validation |
| jdx/mise | 4 | Filesystem-safe install linking, portable generated bootstrap paths, and nushell and elvish activation correctness |
| drawdb-io/drawdb | 3 | Clipboard schema validation, self-referencing foreign keys, and SQL literal escaping for enum values |
| neurosnap/zmx | 3 | Session wildcard matching, prefixed picker behavior, and nested-session documentation |
| tt-a1i/archify | 3 | CLI validation, renderer-bound safety, and full-width text measurement |
| Crosstalk-Solutions/project-nomad | 2 | Offline content download reliability and benchmark startup correctness |
| DayuanJiang/next-ai-draw-io | 2 | MCP diagram edit consistency, stale-state protection, and multi-page export preservation |
| logto-io/logto | 2 | Tenant initialization error observability and accurate contributor prerequisites |
| repowise-dev/repowise | 2 | Health-analysis precision and wiki page scoping |
| ruvnet/RuView | 2 | ESP32 swarm configuration validation and mesh-to-dashboard documentation |
| virgiliojr94/book-to-skill | 2 | Literal handling for bracketed input paths and invisible-carrier sanitization |
Community repositories with one merged contribution so far:
| Community project | Contribution territory |
|---|---|
| 3b1b/manim | Graph point lookup on manual curves outside unit x-ranges |
| addyosmani/agent-skills | Eval grader-result validation and summary integrity |
| agegr/pi-web | Wrapper process lifecycle, signal forwarding, and exit statuses |
| BarutSRB/OmniWM | Complete public CLI and IPC command reference |
| cathrynlavery/diagram-design | Accessible keyboard navigation for diagram gallery choices |
| NVIDIA-NeMo/Switchyard | Nested protocol metadata normalization and header precedence |
| NVlabs/cuda-oxide | Early validation for variadic CUDA device extern declarations |
| opengeos/GeoLibre | Geographic-to-planar projection for buffer processing |
| pacifio/atlas | Agent turn epoch handling and late transcript events |
| paperless-ngx/paperless-ngx | Sanity-check data correctness and regression coverage |
| pingdotgg/t3code | Cross-platform repository symlink integrity |
| infiniflow/ragflow | CLI benchmark failure accounting by response envelope |
| pnpm/pnpm | Prerelease range-style preservation across TypeScript and Rust update paths |
| rorkai/App-Store-Connect-CLI | CLI argument validation before authentication |
| supertone-inc/supertonic | Multi-language CLI option documentation |
| TheJoeFin/Text-Grab | Language-aware Latin correction across OCR capture paths |
| tw93/Pake | CLI startup independence from native image dependencies |
| vitejs/vite | Config-bundle resource cleanup on failed generation |
| withastro/astro | Page-directory boundary correctness and regression coverage |
| ZSeven-W/openpencil | CLI positional argument forwarding |
The newest open contributions waiting for maintainer review, ordered by creation time. 60 are open in total; the 20 most recent are listed here.
| Project | PR | Quest in progress |
|---|---|---|
| text-to-cad | #332 | Stops MTEXT paragraph-properties commands leaking their payload into engraved text, and regenerates the two skill bundles the parser is baked into. |
| manim | #2518 | Handles a single reference color and a single output sample in color_gradient, which raised IndexError and returned the wrong end respectively. |
| manim | #2517 | Strips LaTeX environments whose argument carries a star or a column spec, so align* stops inflating the glyph count used for submobject slicing. |
| archify | #105 | Rejects unknown options and extra positionals in render, which previously wrote a file named after the mistyped flag and exited 0. |
| Vite | #23346 | Keeps the image URL when a density descriptor omits its leading zero, so .5x candidates are no longer dropped from srcset and image-set(). |
| Vite | #23345 | Stops generateCodeFrame spinning forever on a CRLF source, turning a build or dev-server error into a hung process. |
| drawDB | #1125 | Stops treating a plain-text default that merely ends in (...) as a SQL function, which emitted it unquoted into the export. |
| drawDB | #1124 | Keeps a column declared NULL nullable on import across five dialects, instead of inverting it to NOT NULL. |
| repowise | #1752 | Shares the sink-reachability walk between the cross-function loop and lock passes while preserving call-line accurate first-hop resolution. |
| repowise | #1751 | Makes coverage add exit non-zero when it stores nothing, with opt-in strict handling for partial ingests. |
| joshuto | #634 | Avoids history panics when filtering produces an empty listing or a stored cursor points past its old contents. |
| ni | #357 | Reads JSONC-style package.json files with comments and trailing commas while preserving the original error for genuinely invalid manifests. |
| LocalMiniDrama | #37 | Routes a custom vendor to the Volcano omni endpoint instead of the default one, so a user-configured provider reaches the right API. |
| SQLBot | #1323 | Tolerates the extra columns a Hive DESCRIBE returns, so schema introspection stops failing on Hive sources. |
| KrillinAI | #308 | Preserves the page selection in a Bilibili playlist URL, so a multi-part video downloads the requested part. |
| witr | #231 | Normalizes localized Windows TCP listener states by name first, so BOUND, CLOSED, and DELETE_TCB stop being reported as LISTEN. |
| pdf-inspector | #387 | Escapes CLI error text before embedding it in JSON output, so a message containing a quote no longer produces an unparseable document. |
| Slidev | #2704 | Returns 404 for an out-of-range slide patch instead of writing past the end of the deck. |
| Astro | #17694 | Fixes MDX page-directory boundary detection so a sibling directory sharing a name prefix is no longer treated as inside the page directory. |
| next-ai-draw-io | #920 | Prevents server model ID collisions so two concurrently registered models no longer overwrite each other. |
| Inventory slot | Equipped tools |
|---|---|
| Frontend | JavaScript, TypeScript, React, Vue, Next.js, Vite, Tailwind CSS |
| Backend | Node.js, C#, ASP.NET, PHP, Laravel, Python, Java, Go, Rust |
| Data stores | MySQL, PostgreSQL, MongoDB, Redis |
| Infrastructure | AWS, Linux, Docker, Nginx, CI/CD, GitHub Actions, VPS operations |
| AI developer tooling | Codex, MCP, Claude Code, OpenAI-compatible APIs, agent workflows |
| Product toolkit | Git, GitHub, Figma, Postman, VS Code |
- AI developer tooling: MCP servers, Codex integrations, context optimization, local analytics, safe upgrade paths.
- Windows-first reliability: PowerShell,
pwsh,cmd, Git Bash, WSL, symlink restrictions, desktop deep links, packaging quirks. - API and data correctness: OpenAI-compatible routes, streaming behavior, file metadata, citation markers, validation, and counting semantics.
- Release safety: dependency checks, runtime guards, reproducible setup, CI and test lifecycle fixes.
- Maintainer-friendly delivery: narrow diffs, issue-backed scope, concrete tests, concise validation, and follow-up fixes.
| Project | What it equips |
|---|---|
| codex-keyring | Native multi-account manager for Codex with aliases, health checks, and failover support |
| codex-observatory | Local Codex usage analytics, token trends, model breakdowns, and dashboard views |
| google-workspace-mcp | MCP server for structured Google Docs and Sheets extraction with image-aware output |
- Fullstack delivery across product and outsourced environments, with project bootstrapping, reusable component design, code review, Git flow, mentoring, and internal training.
- Project-level Dev Lead experience in healthcare systems, including BA/QC/developer coordination and legacy-parity work.
- Hands-on deployment and support across AWS, Linux, Docker, Nginx, CI/CD, VPS, staging, and production environments.
- AWS Certified Solutions Architect – Associate, scored 861/1000.
Open to OSS collaboration, maintainer support, developer tooling, automation, and practical fullstack/internal-tool work.




