×
an@portfolio: ~/about.md
main

I'm An Li.

$ a SWT engineer

From Taiwan, based in Tokyo.

More About Me

Core Skills

# ~/portfolio/skills.yml

Work Experience

// parsed 7 roles · 3 cities · ~6.5 years

Highlighted Projects

// export default: top 10

Say Hello.

mailto: fallback

$ curl hello@an-li.tw  ·  LinkedIn · Instagram

Form posts to Formspree when the endpoint is set; otherwise falls back to a mailto: draft.

resume.pdf

📕 Anli-Resume.pdf · read-only preview Open in tab Download

:help

# command palette reference · ⌘K / Ctrl+K

Navigation

:aboutOpen about.md (bio, hero)
:skillsOpen skills.yml (core capabilities)
:experienceOpen experience.json (7 roles)
:projectsOpen projects.ts (top 10)
:contactOpen contact form
:cvPreview resume.pdf inline

Actions

:resume downloadDownload Anli-Resume.pdf
:emailCompose email to hello@an-li.tw
:linkedinOpen LinkedIn profile
:playgroundRun a live Playwright snippet
:exitShut down · back to classic UI

Personalization

:themeToggle dark / light
:theme darkSet theme: Dark
:theme lightSet theme: Light
:lang en / ja / zhSwitch language

Shortcuts

:sudo¯\_(ツ)_/¯
⌘K / Ctrl+KOpen command palette
/Open command palette (search focus)
g a / g s / g p …Quick-jump to files (vim-style)
EscClose palette / dialogs

:playground

# a simulated Playwright test run · watch it in real time

// tests/login.spec.ts import { test, expect } from '@playwright/test'; test('login flow · happy path', async ({ page }) => { await page.goto('/login'); await page.getByLabel('Email').fill('hello@an-li.tw'); await page.getByLabel('Password').fill(process.env.PW!); await page.getByRole('button', { name: 'Sign in' }).click(); await expect(page.getByRole('heading', { name: 'Dashboard' })).toBeVisible(); });
--:--:--·Press "Run test" to start.
an@portfolio/about.md $
⌘K palette

✓ Access granted.

Nice try on that sudo. 😄
But seriously, if you're reading this, let's talk.
Open roles in QA / Automation welcome.

Press +K / Ctrl+K · :help