{
  "version": "1",
  "lang": "en",
  "count": 76,
  "items": [
    {
      "type": "about",
      "slug": "about",
      "title": "Zhang Lu",
      "text": "Zhang Lu\nTurning complex judgment into a traceable pipeline, with Harness + Loop\nBuilding a few AI products that turn complex judgment into traceable pipelines: mbabrand (a jury of agents scoring brands), bossagent (a decision agent for leaders), and oaf.world (an AI investment-research workbench). I keep 30-some Claude Skills on my machine, and post notes on my WeChat account “Zhang Lu's Murmurs.”\nClaude Skills\nMulti-agent\nBrand judgment\nDecision agents\nAI investing research",
      "url": "https://zhanglu.net/en/about"
    },
    {
      "type": "project",
      "slug": "ai-interview",
      "title": "AI Achievement Interview",
      "text": "AI Achievement Interview\nTurn one short conversation into a story your work can tell\nChatGPT Voice Realtime voice Auto transcription Six-dimension unified scoring\n## What it is\n\nA review system that asks what you actually did — by voice — and then scores everyone with the same ruler. A 1–2 minute core interview, one question at a time.\n\nThree steps, one loop: **voice confirmation** (name · department · project) → **highlight extraction** (facts · artefacts · to be confirmed) → **unified scoring** (six-dimension total · ranked results).\n\nTwo ways to take part, both feeding the same candidate queue, the same transcription pipeline and the same six-dimension scoring:\n\n- **On site** — staff record from a desktop dashboard while ChatGPT Voice on a phone handles the questions and adaptive follow-ups\n- **Remote, self-serve** — start straight from the web, no admin-issued link and no ChatGPT client required; if the realtime service falters it falls back to a standard six-question mode\n\nYou can re-record as many times as you like before submitting (it costs nothing), and after a formal submission you can still redo the interview, up to 3 times total — the latest recording, transcript and score count, while every previous recording, realtime Q&A log and action record is kept.\n\n## Why build it\n\nTwo failure modes dominate achievement reviews: **the smooth talker wins**, and **plans get counted as results**.\n\nThe three hard rules exist for exactly that — don't grade eloquence; don't count plans as results; score every project with the same model, the same prompt and the same weights, with no manual adjustment this round.\n\nThe interview itself isn't a fixed question bank but a method for talking about outcomes: the AI decides whether to clarify, chase the event, chase the change or chase the boundary based on your answer, taking the shortest path to **one real event + one inspectable piece of evidence + one question still open**. What already happened, what you think about it and what comes next are recorded separately, and anything thin is explicitly marked \"to be confirmed\".\n\n## How to use it\n\nOpen [openagent.world](https://openagent.world) on a laptop or phone → enter your real name, department and the project's formal name → allow the microphone and talk to the AI host → listen back, and submit only when you're happy.\n\nThe site also carries the pre-interview checklist, the scoring rules and a system architecture page — recording, transcript, highlights, score and report all share one candidate-project identifier, so nothing scatters and no project gets mismatched.\n\nGood for: organisations that need to compare dozens or hundreds of projects in a short window, without the outcome depending on who presents best.",
      "url": "https://zhanglu.net/en/projects/ai-interview"
    },
    {
      "type": "project",
      "slug": "free-model-port",
      "title": "FreeModel Port",
      "text": "FreeModel Port\nA discovery, live-verification, and local access layer for free LLMs worldwide, built to connect Codex and other AI CLIs safely\nPython FastAPI Model Routing Local-first AI CLI Cloudflare Pages\n## What it is\n\nFreeModel Port is an open-source, local-first routing and discovery system for free LLMs. It turns scattered free-model resources from providers such as OpenRouter, NVIDIA NIM, Google AI Studio, and Groq into a verifiable map: which models are registered, which are only candidates, which have passed live requests, and which are currently unavailable because of credentials, quota, or upstream status.\n\nIt is not another model platform. It is a local control plane. Codex, Claude Code, OpenCode, Kimi CLI, OpenClaw, WorkBuddy, Hermes, Pi / OMP, and similar clients only talk to one local endpoint; model routing, protocol adaptation, tool calls, streaming responses, and client configuration sync are handled by the port.\n\n## Why build it\n\nThe hard part of free models is not finding another list. Lists go stale, access paths are fragmented, and every provider has its own model IDs and API behavior. A model being labeled \"free\" does not mean your account can complete a real request right now; region rules, account eligibility, rate limits, and upstream policy changes all matter.\n\nFreeModel Port separates the workflow into three layers: public catalogs only create candidates, live requests decide what can enter the runnable registry, and clients access everything through a local proxy. That lowers trial-and-error cost while keeping credentials and usage records on your own machine.\n\n## How you can use it\n\n- Visit `oaf.asia` to browse the free-model catalog, live status, global map, benchmarks, and tool comparison.\n- Use the installer to create an isolated Python environment and Codex profile without overwriting normal OpenAI settings.\n- Connect Codex, Claude Code, OpenCode, and other AI coding tools through one local proxy endpoint.\n- Inspect success rate, latency, fallback, and token metrics locally; the public site publishes only redacted model metadata and verification state.\n\nBest for AI coding-tool users, independent developers, students, and model evaluators who want low-cost access to more models without constantly reworking configuration.",
      "url": "https://zhanglu.net/en/projects/free-model-port"
    },
    {
      "type": "project",
      "slug": "aip",
      "title": "Second Brain",
      "text": "Second Brain\nA compounding personal Wiki knowledge base continuously written and maintained by an LLM—knowledge is compiled once, then kept fresh forever (a Wiki is not RAG)\nClaude Code Markdown Wiki Cloudflare Pages\n## What it is\n\n[aip.cab](https://aip.cab) is a **compounding personal Wiki knowledge base** continuously written and maintained by an LLM. The core claim is that **a Wiki is not RAG**: when a new source comes in, the LLM doesn't index it—it **reads it, distills it, and integrates it into the existing Wiki**, updating entity pages, revising summaries, and flagging contradictions. The knowledge base thus becomes an asset that keeps compounding: knowledge is compiled once, cross-references are built, contradictions are flagged, and it stays fresh from there on.\n\nAn analogy: **Obsidian is the IDE, the LLM is the programmer, the Wiki is the codebase.** The theoretical foundation is Karpathy's \"LLM Wiki\" × *Building a Second Brain*. Everything is human-readable Markdown, and the architecture is radically simple—\"just markdown, full-text search, and grep.\"\n\n## Why build it\n\nKnowledge workers face four structural pain points:\n\n1. **Knowledge doesn't compound** — RAG retrieves from scratch on every question; what you've read never settles into an asset.\n2. **Input is disconnected from output** — flomo / clippings / local PDFs are each their own island, and you can't pull them up when it actually comes time to write or decide.\n3. **Organizing is a burden** — humans do the categorizing, tagging, and linking, and maintenance cost rises with scale.\n4. **It rots at scale** — the bigger the base, the more contradictions, duplicates, and orphaned pages appear, yet there's no mechanism to find and fix them.\n\nThe answer is to replace \"ad hoc retrieval\" with \"continuous compilation\": every conclusion is traceable to its source, and a periodic lint proactively finds and fixes contradictions and drift to fight rot. A versionable Schema (`CLAUDE.md`) serves as the \"constitution,\" clearly delineating the responsibilities of the compilation engine, the LLM, and the human—this is the key to keeping the system from drifting or overstepping.\n\n## Six capabilities + two supports\n\n- **C1 Ingest** — clippings auto-land and compile, important articles are ingested through deep dialogue, flomo processes only the delta\n- **C2 Compile** — sources are compiled into structured, interlinked Wiki pages; watch monitors, incremental and idempotent, indexes update automatically\n- **C3 Query** — read the index first, then dive into relevant pages, synthesize an answer with source citations, and write valuable output back to compound\n- **C4 Health check** — lint finds contradictions / orphaned pages / missing cross-references, auto-fixing the safe ones\n- **C5 Material** — a dual-track framework: extraction of six kinds of writing material + five-dimension decision retrieval\n- **C6 Writing** — extract from the material library before writing → dig deeper in real time while writing → write back afterward, a complete loop\n- **S1 Governance** — versionable responsibility-boundary config that prevents the LLM from overstepping and the structure from drifting\n- **S2 Automation** — directory watching, incremental detection, post-compilation archival, fixed weekly / monthly cadence\n\n## How you can use it\n\nFollow the install guide to stand up the skeleton in 30 minutes → clippings / flomo deltas auto-land and compile → read the index first and then dive in when querying, writing output back to compound → weekly lint to stay fresh. It suits people who build up knowledge over the long term and also need to pull that knowledge out to write or make decisions.",
      "url": "https://zhanglu.net/en/projects/aip"
    },
    {
      "type": "project",
      "slug": "boss",
      "title": "Boss",
      "text": "Boss\nA strategic OS for the CEO—hand your important judgments to a multi-juror deliberation that is citable, scorable, and falsifiable, with 30/90/365-day attribution checks\nClaude Skill Multi-agent MCP HTTP Service Python Feishu Bot\n## What it is\n\nBoss (bossagent.cc) is a **strategic OS** for leaders—a decision agent that engineers \"an anchor's (a given leader's / decision-maker's) judgment methodology.\" You submit a strategic question, or attach a document, and the system uses **one anchor conviction + N dimensional jurors, each holding a distinct doctrine** to score independently and mandatorily argue the counter-position, producing in minutes a judgment report that is citable, scorable, and falsifiable.\n\n- **Independent multi-juror deliberation**: one juror each for industry trends / strategic goals / customers / product / organization / operations, each holding their own methodology and scoring blind to the others\n- **5-lens scoring**: reasoning / evidence / counter-argument / falsifiability / resilience, with every judgment required to carry a falsifiable metric\n- **anchor_delta mechanism**: the gap between the jurors' weighted score and the anchor's conviction serves as a \"mirror,\" and too large a deviation raises an alarm\n- **30 / 90 / 365-day attribution checks**: when a judgment comes due, its prediction is automatically compared against the actual outcome, and hits / falsifications are written to the scoreboard\n- **Versioned freezing**: every judgment brief generates an immutable snapshot (chmod 444) for after-the-fact verification by investment committees / auditors; falsified judgments are archived to a Failure Card\n\n## Recent progress\n\n- **v1.17 boss-as-a-Service launched**: the judgment engine went from a single-machine CLI to a service external programs and visitors can call directly, with MCP + HTTP **dual protocols over one core**, a closed loop from proposal to public trial.\n- **Zero-config online demo bench**: visitors run the full multi-juror deliberation with no signup and no API key, just by posting a question on the homepage, backstopped by three cost guardrails (off by default + daily quota + single-concurrency).\n- **Engine extracted into a library** (the `boss_core` pure-function core): error handling, document IO, prompt assembly, score aggregation, and knowledge-base queries all pushed down into a standalone package—CLI and service share the core but not the shell, with byte-level snapshots proving zero drift.\n- **Public site rebuild**: navigation trimmed from 11 items to 7, with a new MCP integration guide, a Feishu bot landing page, and a case library (submitted questions and reports kept public for 7 days).\n- **Engineering guardrails maxed out**: adversarial security audit of all scripts (60 findings closed), LLM multi-endpoint redundancy with automatic failover, dual-gate fail-close outbound redaction; test suite of 1,787 passing, around 56,000 lines of code.\n\n## Why build it\n\nImportant decisions are often \"a gut call → no way to review it afterward → judgment never accumulates.\" Boss breaks a single judgment into a structured deliberation: instead of asking one person, it has a set of jurors with distinct positions score independently and mandatorily argue the counter-position; instead of stopping at a conclusion, it marks each conclusion with a falsifiable point and an attribution-check date, then comes back at term to verify whether the original judgment held. Judgment thus turns from \"a feeling\" into an asset that accumulates.\n\nData is confidential by default: real cases, reports, and internal knowledge bases never leave the intranet, and the public layer holds only methodology.\n\n## How you can use it\n\n- **Online demo bench**: post a question straight from the homepage and run a multi-juror deliberation with zero config.\n- **MCP / HTTP service**: run unlimited with your own model (under the service tier, Boss doesn't call the LLM—the caller's model runs the deliberation).\n- **Claude Code Skill**: install the `/boss` skill locally + CLI deployment.\n- **Feishu bot**: @-mention the bot in a direct message or group to trigger it, ingesting PDF / Word / PPT / MD documents directly.\n\nBest for: founders / executives who need to accumulate personal judgment (serving as the \"anchor\"), project leads who chair decisions, and investment committees and external auditors doing after-the-fact audits.",
      "url": "https://zhanglu.net/en/projects/boss"
    },
    {
      "type": "project",
      "slug": "brain-radar",
      "title": "BRAIN / 27 Opportunity Radar",
      "text": "BRAIN / 27 Opportunity Radar\nFrom experimental psychology toward brain science × AI\nOpportunity aggregation Advisor radar Paper tracking Static snapshot\n## What it is\n\nA career-and-study radar for people finishing a master's in 2027, aimed squarely at experimental psychology, cognitive neuroscience, brain–computer interfaces and brain-inspired AI. Any city.\n\nIt covers four kinds of opportunity, ranked by whether they can produce a result **within the next 30 days** rather than by institutional prestige:\n\n- **PhD / joint-training PhD** — BAAI joint programmes, open admission at the Chinese Institute for Brain Research, Tsinghua's Department of Psychological and Cognitive Sciences, Shanghai AI Lab joint training, the Tianjin University–PolyU Shenzhen Institute of Future Technology, and more\n- **Research assistant** — open to master's-level applicants, concentrated in Beijing, Shanghai, Shenzhen and Hong Kong\n- **Campus recruiting / internships / research posts** — including BCI signal processing and decoding, and ML research roles on the health side\n\nEvery entry carries its current state (open / expected month / keep watching), direction tags, **the next concrete action**, and a link to the official source.\n\nBeyond the opportunity list the site also has an advisor radar, recent papers, a research-institution map, source list and collection log.\n\n## Why build it\n\nThe problem with this information was never that you can't find it — it's that it's **scattered and time-boxed**: admission notices live on dozens of institutional sites and windows stay open for a few weeks, so by the time you see one it has usually closed. And for someone graduating in 2027, the scarce thing isn't a list of opportunities but the **ordering** — what you have to do first for the next thing to be possible at all.\n\nSo the radar hands you a shortest path: apply first to university research-assistant posts open to master's students, accumulate data, papers and references, and prepare the 2027 PhD applications in parallel — rather than carpet-bombing PhD programmes on day one.\n\n## How to use it\n\nOpen [radar.openagent.hk](https://radar.openagent.hk), start with the \"act now\" entries, then filter by type (PhD / joint training / research assistant / campus recruiting / internship / research post). Each entry has an explicit next action and a source link you can follow directly.\n\nThe page is a **static snapshot** with its collection date in the header — don't treat it as live data; for anything with a deadline, the official announcement still governs.",
      "url": "https://zhanglu.net/en/projects/brain-radar"
    },
    {
      "type": "project",
      "slug": "oaf",
      "title": "OAF",
      "text": "OAF\nA satellite-internet decision agent + an AI investment-research workbench for the US / A-share / HK markets—numbers come from tools, narrative from the model, gaps left blank not fabricated\nFastAPI Multi-agent MCP Claude Opus Claude Haiku Cloudflare Pages\n## What it is\n\nOAF (oaf.world) is an AI investment-research system with two product lines from one source, and the logo theme \"orbit is the trend\" twists the two lines into a single figure:\n\n- **Secondary-market research workbench**: covering the US, A-share, and HK markets, it hands real quotes and financials to deterministic tools and lets the model write only the narrative. Deep single-stock analysis (candlesticks / KPIs / DuPont financial decomposition / comparable companies / bull-bear moat debate), industry research, cross-market sector comparison, full-CSI300 multi-factor quant screening, two-stage DCF valuation, and conversational research—all in one place. The backend is production-live at `api.oaf.world`.\n- **Satellite-internet industry decision agent**: it maps policy / orders / filings / news onto five main threads—core network, terminals, chips, operational support, and launch vehicles—and outputs dual-perspective decisions from the CEO's and the investor's view, with a falsification layer (hard-threshold triggers / bull and bear checklists / red-flag self-checks).\n\nThe core engineering iron law: **numbers come from tools (deterministic), narrative from the model, gaps left blank not fabricated**; a mandatory disclaimer sitewide—research-efficiency tool only, not investment advice.\n\n## Recent progress\n\nA dense cadence, iterating from v0.33 all the way to v0.42 within July:\n\n- **Sector-pulse anomaly alerts (v0.42)**: a real-time synthesis of two deterministic signals—breaking major events (scanning titles only to avoid false positives) + today's median move of a sector's constituents—showing an anomaly banner the moment you land. The trigger was SpaceX's July 17 launch failure rippling across the whole sector while the dashboard had no alert layer.\n- **Four deep dashboards for the satellite-internet cluster**: `/spacex` (with three-dimension inline cards linking mbabrand's brand / sentiment / founder), `/yuanxin` (Yuanxin · Qianfan, honestly left blank as not yet public), `/xingwang` (China SatNet · GuoWang), and `/constellation` (the nine leaders in the constellation race + a launch-and-networking timeline), plus keyword monitoring so that unlisted, tickerless entities can also raise alerts.\n- **Conversational research wired to a real backend** (v0.39–0.41): the model only does intent routing + entity extraction and produces no numbers, dispatching a deterministic skill per instrument to fetch data and answer; it supports multi-turn coreference resolution and \"follow-up suggestion chips.\"\n- **All-market instrument fuzzy search `/search`**: local picks answer instantly → full A-share Chinese names → HK/US via Yahoo, so \"off-list instruments are searchable too,\" with names / codes taken from data-source facts rather than model guesses.\n- **Dashboard upgraded into an explorable cockpit** (v0.36): a global slice bar + cross-panel linkage + list drill-down + URL deep links + ⌘K search + watchlist + comparison mode, pure front-end with zero new backend.\n- **On the satellite agent side** (v0.23, 828 tests): a bottom-up market_model + satellite-internet attribution, time-series backtesting (+4.65% 5-day excess after a strengthening call / −6.60% after a weakening call), valuation wired to 29 real financial reports, and a wiki knowledge-graph NER landing (393 entities / 392 concepts).\n\n## Why build it\n\nInvestment research has two old problems: information is scattered, and numbers are easily fabricated by the model. OAF's answer is to separate the two—hand data fetching, valuation, and quant screening to deterministic tools and real data sources (baostock / tushare / yfinance / SEC EDGAR), hand narrative and bull-bear debate to the model, and in between flag disagreements via `data_quality_flag` cross-source checks and leave gaps blank. Credentials live only at the data-source / gateway layer; even an agent going through MCP can't get the key.\n\n## How you can use it\n\n- **Dashboards**: the `oaf.world` homepage real-time dashboard auto-refreshes every 6 hours; `/web/app` is the research workbench, switching between conversational research / industry research / cross-market sectors / knowledge graph / satellite-narrative stock pool.\n- **Agent CLI / MCP**: read `api.oaf.world` endpoints like `/quote /financials /dcf /research /ask /search /sector-pulse` directly, or use the 4 MCP research tools (get_quote / get_financials / get_company_profile / run_dcf).\n- **Skills**: the `fundamentals-research` skill pack; on the satellite agent side, a `satagent` CLI (init / ingest / fetch / report / decision).\n- **Feishu**: daily / weekly research briefings pushed via webhook.\n\nBest for: professional investors, buy-side / sell-side analysts, PMs, and satellite-internet industry decision-makers.",
      "url": "https://zhanglu.net/en/projects/oaf"
    },
    {
      "type": "project",
      "slug": "excel-ai-analyst",
      "title": "excel-ai-analyst",
      "text": "excel-ai-analyst\nUpload a spreadsheet, see through its structure first\nSheetJS In-browser compute Zero upload Formula-chain parsing\n## What it is\n\nRead spreadsheets as code. A business Excel file that has been running for years is really a legacy codebase with no documentation — this tool does step 0 of the reverse engineering **inside your browser**:\n\n- what **shape** the sheet is, and how many header rows it has\n- which columns are **inputs** and which are **results**\n- what the real **formulas** look like\n- which cell has been **edited by hand** (should be a formula, is now a hard-coded value)\n\nSupports `.xlsx` / `.xls` / `.csv`, up to 20MB, analysing multi-sheet workbooks one sheet at a time. Reports download as Markdown, HTML or JSON.\n\n**Zero upload**: everything runs in this page's memory — no server ever receives your data, and it works with the network disconnected. Results vanish on refresh; download if you want to keep them, and the report stays on your own device too.\n\n## Why build it\n\nThe first obstacle to \"putting a manual Excel process on AI rails\" isn't compute, it's **trust**: you are not going to upload your company's real cost or payroll sheet to some website. So step 0 is deliberately pure front-end — the engine is a function-by-function port of `excel_ai.py`, the file-format layer is same-origin SheetJS, and the page makes no external requests at all.\n\nThe second obstacle is **proving the AI actually understood it**. Detection only tells you roughly what the sheet is; confirming the reading is correct requires recomputing every row against the full real dataset — 100% row-level pass rate and zero sheet-level anomalies, or it doesn't count. That's step 4 of the six-step method, it needs AI in the loop, a plain web page can't do it, and the site doesn't pretend otherwise.\n\n## How to use it\n\nOpen [anp.asia](https://anp.asia) and drag a sheet in; there's a built-in demo sheet if you don't have a suitable one. Redact first (names, ID numbers, phone numbers) — the file never leaves your browser, but it's a good habit.\n\nThe full six-step method: **0 detect** (this page) → 1 structure to Markdown → 2 field ontology → 3 formula chains and lineage → 4 full-data validation → 4b ontology graph → 5 delivery and what-if → 6 web dashboard. The site has a pipeline demo with real output plus the product docs.\n\nKnown limits: date columns are treated as numbers; formula extraction from `.xls` is best-effort — save as `.xlsx` first for better results.",
      "url": "https://zhanglu.net/en/projects/excel-ai-analyst"
    },
    {
      "type": "project",
      "slug": "qcc-agent",
      "title": "QCC Agent",
      "text": "QCC Agent\nDrop Qichacha into any AI agent\nMCP Claude Skill Python TypeScript Cloudflare Pages\n## What it is\n\nAn open-source Qichacha integration layer built for AI agents. It wraps Qichacha's 146 query APIs into MCP (Model Context Protocol) Streamable HTTP, so the agent side calls them directly without having to handle signing, pagination, rate limiting, and field semantics itself.\n\n- **Protocol layer**: 6 MCP servers, 146 atomic tools\n- **Clients**: `qcc-py` (Python) + `qcc-ts` (TypeScript), with matching APIs on both sides\n- **Business layer**: 8 skills organized by \"due-diligence action\" (KYB / supplier onboarding / post-investment monitoring / relationship graph / risk scan, etc.), not 146 tools laid out in a row\n- **Runtimes**: Claude Code, OpenClaw, Hermes, plain CLI—the same `skills/` directory reused across four forms\n\n## Why build it\n\nQichacha's API has two layers of friction:\n\n1. **Too many scattered endpoints**: 146 of them, a full due-diligence run chains 7–10, each time starting from the field table, and the agent's context window fills up with signing boilerplate.\n2. **Missing business semantics**: the API returns a \"business-registration change record,\" but what you actually want to ask is \"has this company's control been stable over the past 12 months.\" Nobody built that mapping layer in between.\n\nSplitting protocol, client, and business flow into three layers means the agent only needs to call a Skill, the Skill calls a Server, and the Server calls the API. Any layer can be swapped on its own—swap the agent runtime without touching the Skill, swap the API provider without touching the business logic.\n\n## How you can use it\n\n**Use it directly in Claude Code**:\n\n```bash\npip install qcc-py\n# configure the MCP server, then:\n/kyb <company>          # one-click KYB report\n/supplier-check <list>  # batch supplier onboarding\n/post-investment <portfolio> # monthly post-investment monitoring\n```\n\n**Integrate it yourself**: use `qcc-py` or `qcc-ts` as an ordinary SDK, without going through MCP.\n\nBest for: teams building B2B due-diligence / risk-control / supply-chain SaaS, investment firms wanting to automate post-investment monitoring, and internal corporate audit wanting to turn \"looking things up on Qichacha\" from manual work into an agent's job.",
      "url": "https://zhanglu.net/en/projects/qcc-agent"
    },
    {
      "type": "project",
      "slug": "openworker-zh",
      "title": "OpenWorker, Chinese edition",
      "text": "OpenWorker, Chinese edition\nHand the AI the outcome, not just the answer\nTauri 2 React FastAPI MCP local-first\n## What it is\n\n[OpenWorker](https://github.com/andrewyng/openworker) is an open-source AI coworker that runs on your desktop (MIT, by Andrew Ng). It reads files, connects to everyday tools, breaks work down, asks for approval, and pushes a task all the way to a usable deliverable — instead of just replying with text.\n\n**This project is its Chinese side**, three things:\n\n1. **The Chinese site** [oaosf.cn](https://oaosf.cn) — introduction, capabilities, how it works, safety boundaries, FAQ\n2. **A localised macOS build** — currently 0.1.7, an Apple Silicon / aarch64 DMG, bundle ID `com.openworker.desktop.zh`, installable alongside the English version\n3. **A source-code deep dive** — architecture breakdown and maturity assessment of the upstream repo, with an interactive infographic\n\nUpstream source lives in `andrewyng/openworker`; the Chinese material and localised build live in `zhanglunet/openworker-zh-localized`.\n\n## Why do it\n\nTwo reasons OpenWorker deserved a Chinese side of its own.\n\n**First, it isn't a chat wrapper.** The verdict from the source analysis: this is a local agent runtime. Its moat comes from the tool loop, the permission system, the connectors and the persistence layer — not from any one model. The desktop shell is React + Tauri 2; the local service is a FastAPI + WebSocket Python sidecar, with `SessionManager` coordinating sessions, Inbox, automations, auditing and persistence. If you want to study agent architecture, it's a reference implementation you can actually run.\n\nSome details that show the design taste: `TurnEngine` authorises tool calls one at a time, then **runs explicitly low-risk reads concurrently**, while writes, shell and unlabelled tools **stay strictly sequential** — cutting races and accidental side effects. Permissions come in four levels: `READ` runs directly, `WRITE_LOCAL` needs mode-based approval and is confined to writable directories, `EXEC` requires explicit confirmation (complex shell can't auto-match the allowlist), and `EXTERNAL` needs per-target authorisation.\n\n**Second, the Chinese build used to revert to English on update.** 0.1.7 points the auto-update feed at the Chinese repo, which is what finally closed that hole.\n\n## How to use it\n\n**As a normal app**: download the DMG from the site and drag it into Applications; it coexists with the English build. Bring your own model key — OpenAI / Anthropic / Gemini / GLM / DeepSeek / Kimi / Qwen / MiniMax / Mistral / Ollama.\n\n**From source** (for studying the architecture):\n\n```bash\ngit clone https://github.com/zhanglunet/openworker-zh-localized\ncd openworker-zh-localized\nbash packaging/setup_dev_env.sh\n.venv/bin/openworker-server --cwd ~/project --port 8765\n# in another terminal\ncd surfaces/gui && npm install && npm run dev\n```\n\nBackend needs Python 3.10+, frontend Node 20+, and the full desktop shell also needs the Rust toolchain.\n\n**Just want the analysis**: the site has the interactive infographic and the source deep-dive page.\n\n## Boundaries worth stating first\n\nThe site puts these front and centre; copied here as-is:\n\n- **\"Local-first\" is a boundary, not an absolute promise.** Sessions, memory, keys and the main runtime state stay on the device — but the moment you pick a cloud model or enable an external connector, the data needed to finish the task does go to that service. For fully local operation, use Ollama and don't enable external connectors.\n- **The current build is not notarised.** On first launch, if macOS blocks it, right-click the app and choose Open once.\n- **Upstream still labels it Open Beta.** Start with low-risk workflows and check connector permissions, approval modes and model data policies one by one.\n- **The source analysis is critical too**: `server/manager.py` is past 4,000 lines and the connector execution layer approaches 5,000 — the feature loop is complete, but maintaining it will need further boundary splitting. Figures are from `main@01b6f83`, and they count **code assets, not test runs performed by this site**.",
      "url": "https://zhanglu.net/en/projects/openworker-zh"
    },
    {
      "type": "project",
      "slug": "mbabrand",
      "title": "MBA Brand",
      "text": "MBA Brand\nTurn brand influence into a monitorable / scorable / reviewable intelligent asset—43-juror deliberation with sentiment-driven versioned re-audits\nClaude Skill Multi-agent MCP Server TypeScript Python Cloudflare Pages\n## What it is\n\nA brand-judgment pipeline built on a Claude Skill. Give it a brand name and it runs a 7-dimension parallel investigation, a Lead juror synthesis, then has a panel of \"persona jurors\" (Fu Sheng / Steve Jobs / Zhang Yiming / Musk, and others) score independently across 5 lenses using their own mental models, finally producing a versioned Markdown + HTML report:\n\n- A 5-dimension radar chart (originality / category naming / leverage quality / identity consistency / authentic signal)\n- A juror-dissent heatmap—which conclusion drew the most disagreement\n- An influence-construction diagram—how the brand asset was built up\n- 30 / 90 / 365-day attribution checkpoints, so that on later review you can attribute back to a specific evidence chain\n- 90-day actionable recommendations\n\nIt started as a single skill and is now a **continuously running brand-monitoring dashboard online** (mbabrand.com), already monitoring 24 brands, with NVIDIA at the top on 8.88.\n\n## Recent progress\n\n- **Upgraded from \"monitoring\" to a \"relationship universe\" (v0.5)**: brand + founder + industry + portfolio, all four layers connected. Each brand links to its founder, founders can be seated at a \"founders' dinner\" to war-game collaboration, and brands are categorized into 6 major industries and filterable on the homepage.\n- **Seven global tech giants added at once**: NVIDIA / Apple / Google / Microsoft / Amazon / Huawei / DeepSeek, each with a full audit report; monitoring scale expanded from 15 to 24.\n- **The full Brand Watch sentiment-monitoring chain landed**: event collection → trigger-rule evaluation → EVOLUTION automatic re-audit, where watch only suggests and never changes a score; paired with a sentiment cockpit dashboard + Feishu L1/L2/L3 tiered alerts.\n- **A full-dimension knowledge starmap**: a pure-SVG constellation chart laying out the 184 real relationship edges across 5 lenses × 9 dimensions × brands × 10 panels × 43 jurors; each brand also has its own ego starmap.\n- **Released a standalone MCP server** (`npx -y mba-mcp-server`): 16 tools (8 core audit + 6 evolution tracking + 2 sentiment), pluggable into any MCP agent such as Claude Desktop / Cursor; incremental reruns cut the cost of an evolution audit from ~$3 to ~$0.4 per run.\n\n## Why build it\n\nJudging brand influence has long relied on \"a feeling.\" Two common failure modes:\n\n1. **Single-perspective bias**: ask one thought leader, and their blind spot becomes yours.\n2. **Conclusions can't be attributed**: you make a gut call that \"this brand is pretty strong,\" the numbers crater half a year later, and you don't know which step was wrong.\n\nDecomposing the judgment into multiple dimensions × 43 jurors with distinct mental models × 5 scoring lenses lets every conclusion trace back to evidence. Half a year later, whether a juror misjudged, the evidence was incomplete, or the world changed is plain to see. The core stance is **anti-fabrication**: cite only public first-hand sources, mark what can't be obtained as N/A instead of inventing it, and verbatim-check juror citations through a hard CI gate.\n\n## How you can use it\n\n**Quick read (3 minutes)**:\n\n```bash\n/mba <brand> --quick --no-judges\n```\n\nUses only WebSearch + WebFetch—validate the pipeline before adding weight.\n\n**Full deliberation (30 minutes)**:\n\n```bash\n/mba <brand>\n```\n\nConvenes the default 5 jurors, or use `--panel <name>` / `--industry <name>` to swap in an industry juror panel (automotive / education / consumer, etc.—10 panels in all).\n\n**Consume it as a service**: mount `npx -y mba-mcp-server@latest` into any MCP agent, or read the site's `/api/*.json` directly.\n\nBest for: founders deciding brand direction, brand / growth teams doing PMF reviews, investors doing due diligence and sentiment tracking, and \"objection rehearsals\" before an AI product launch.",
      "url": "https://zhanglu.net/en/projects/mbabrand"
    },
    {
      "type": "project",
      "slug": "qiji-roadshow-2026",
      "title": "Qiji 2026 Roadshow Panorama",
      "text": "Qiji 2026 Roadshow Panorama\n56 roadshow projects, from on-site photos to a publishable DD panorama page, all through one pipeline\nClaude Skill Multi-agent Cloudflare Pages\n## What it is\n\nIt takes the on-site material from a roadshow / demo day / accelerator graduation showcase (project-card photos + exhibition-wall photos + the organizer's public articles) and turns it in one pass into 6 distributable assets:\n\n1. **A structured JSON dataset**—standardized fields for every project\n2. **A panoramic interactive HTML landing page**—zoomable browsing by section / track\n3. **A sortable, filterable DD table page**—7 parallel research agents each run team / market / technology / financials / competitors / risk / peer benchmarking\n4. **A deep Word report**—the version for the fund's IC\n5. **A CSV table**—opens directly in Excel / Numbers for further analysis\n6. **One-click deploy to Cloudflare Pages**—`qiji-roadshow-2026.pages.dev` is exactly what this pipeline spat out\n\n## Why build it\n\nA roadshow floor has an extreme information density, but it's scattered across 200 phone photos, 3 public-article links, and your memory. A week later it's basically \"watched and forgotten.\"\n\nHaving a Claude Skill finish the photo OCR + article parsing + horizontal DD in parallel, structuring it into a database once so that **afterward it's indexable, comparable, and publishable**, can be at least an order of magnitude better than \"watched and forgotten\"—especially for people who want to write an external deliverable afterward (a fund brief / newsletter / industry note).\n\n## How you can use it\n\nDrop material of the same type (demo day / YC roadshow / VC demo day / accelerator graduation showcase) into:\n\n```bash\n/demo-day-dossier <event name>\n```\n\nAttach a folder (cards + wall photos) and the official article URL, run the six-piece set in half an hour, and push it live as the final step.\n\nBest for: investment firms doing demo-day reviews, researchers doing track mapping, media writing industry notes, and accelerators building an external showcase.",
      "url": "https://zhanglu.net/en/projects/qiji-roadshow-2026"
    },
    {
      "type": "project",
      "slug": "shanghai",
      "title": "AI Vision Forum · Shanghai Recap",
      "text": "AI Vision Forum · Shanghai Recap\nAn unofficial recap site turning the 30 talks from the 2026 AI Vision Forum (Shanghai) into minutes, a knowledge base, and a knowledge graph\nHTML JavaScript Knowledge graph Cloudflare Pages\n## What it is\n\nAn **unofficial** conference recap site that organizes the 30 talks from the 2026 AI Vision Forum (Shanghai) into a knowledge asset you can search, browse, and follow thread by thread:\n\n- **Knowledge starmap**: an interactive knowledge graph of 99 entities (people / organizations / concepts / events) and 288 co-occurrence links, with search, filtering, and drag, where clicking a node takes you straight to the entry.\n- **Smart minutes**: each talk includes key quotes, infographics, model explainers, and highlight commentary.\n- **Knowledge base**: 100+ entity pages (companies / people / concepts / events), with occurrence counts and two-way interlinks.\n- **Resource library**: 131 on-site slides (faces redacted).\n\nPure static HTML / CSS / JS, with no build dependencies and no third-party libraries, deployed to Cloudflare Pages for automatic release.\n\n## Why build it\n\nA conference floor has an extreme information density, but it's scattered across dozens of talks, hundreds of slides, and in-the-moment memory, and a week later it's basically \"heard and forgotten.\" Structuring the minutes, entities, and links into a searchable, interlinked, zoomable site turns \"heard and forgotten\" into \"come back and look it up anytime, and keep digging along the relationship graph.\"\n\nThe AI content is auto-generated by **Feishu Minutes + a large model**, with a transparent sitewide label of \"for study and reference only.\"\n\n## How you can use it\n\n- Want to quickly revisit a talk → the smart-minutes page for key quotes + highlight commentary.\n- Want to dig down along a person / company / concept → the knowledge starmap or a knowledge-base entry, following the two-way links.\n- Want the raw material → flip through the on-site slides in the resource library.\n\nBest for: practitioners who didn't attend but want to catch up, researchers doing track mapping, and media wanting to write industry notes.",
      "url": "https://zhanglu.net/en/projects/shanghai"
    },
    {
      "type": "project",
      "slug": "tui3",
      "title": "Web Archive · tui3.com",
      "text": "Web Archive · tui3.com\nSeveral Chinese personal websites I was part of between 1999 and 2007, rebuilt in full from server archives into a static site, preserved forever\nStatic site Archive rebuild Wayback\n## What it is\n\n[tui3.com](https://tui3.com) takes several Chinese personal websites I was part of between 1999 and 2007 and **rebuilds them in full into a static site, preserved forever**, from server archives + Wayback fragments. The content keeps its original look, encodings are uniformly converted to UTF-8, private information such as email addresses is hidden, and it depends on no backend.\n\n## Included (5 sites)\n\n- **Heibanbao Literary** (1999–2007) — an online magazine founded by independent intellectuals. 74 weekly issues, a forum with 4,009 topics / 18,875 posts, 639 Heibanbao News articles, an official feature on the play *Che Guevara*, and Wang Pei's Walnut Shell. → `heibanbao.tui3.com`\n- **Changyou** (1999–2007) — an online magazine of humanistic geography: \"We are born without shackles, so why not roam free?\" Over a hundred articles across three channels, 24 issues of the email magazine, 615 illustrations, and two blogs by Lin Lei and Yinuo. → `changyou.tui3.com`\n- **On the Road** (2007) — my personal blog (Zhang Lu's Wanderings). 19 articles, the Huaxi Village dispatches series, and an interview with Vint Cerf, a father of the internet. → `zhanglu.tui3.com`\n- **Shuo3 · Tech TV** (2007) — a tech video podcast by Le Yi and me. 11 posts recovered from Wayback, with 14 episode videos archived on the YouTube channel @shuo3. → `shuo3.tui3.com`\n- **Sofaee / New Marketing Lab** (2007) — a tech Digg-style site later rebuilt into a marketing-news portal. 8 posts recovered from Wayback, plus archived sections and a fingerprint of 103 tags. → `sofaee.tui3.com`\n\n## Why build it\n\nMuch of the early Chinese internet is quietly disappearing. These are sites I built in my twenties, and rather than let them rot on old servers and in Wayback fragments, it seemed better to rebuild them in full into a static site that depends on no backend and can be hosted forever—leaving an archive for that era of the internet, and for myself.\n\nPutting it here is a way of saying: before building those \"traceable, reviewable\" AI products, I also made a few things purely out of love.",
      "url": "https://zhanglu.net/en/projects/tui3"
    },
    {
      "type": "project",
      "slug": "siliconforge",
      "title": "SiliconForge",
      "text": "SiliconForge\nRequirements in, software out\nCloudflare Machine-readable PRD Parallel AI squads Executor verification\n## What it is\n\nA production line that turns UI-level pain points into shipped software. The homepage *is* the console, not a brochure — both submitting a request and looking one up hit real data.\n\n- **Submit** — answer 9 questions (mostly multiple choice, two or three minutes) to turn \"the thing that hurts every day\" into a machine-readable PRD, and get a ticket number\n- **Run the line** — once an FDE reviews and approves it, Cloudflare schedules parallel AI squads to build, verify and deliver under engineering discipline\n- **Track** — use the ticket number to see where it is: pending review → approved → in development → delivered\n- **Two delivery grades** — output ships first at \"model-reviewed\" grade, then an executor actually runs the generated tests and returns evidence, promoting it to \"verified\" or \"execution failed\"\n\nAlready have a PRD? Use *PRD direct submit* — upload the PRD JSON plus reference material (API docs, field mappings) and skip the nine questions straight into the same review queue.\n\n## Why build it\n\nMost \"AI writes your code\" products assume the user is a developer — you have to describe a technical solution to get anything back. But the people actually suffering through bad interfaces every day are business users: they can describe the pain precisely and the solution not at all.\n\nSo this line lowers the entry to \"answer nine multiple-choice questions\" and hands the translation into engineering language to the machine-readable PRD plus FDE review. It also separates \"the AI says it's done\" from \"the tests actually ran\" into two distinct states — only the second one is safe to use.\n\n## How to use it\n\nOpen [anp.pub](https://anp.pub), spend two or three minutes filing a request, and track it by ticket number (mobile-friendly).\n\nWant to see the whole line first? There's a *pipeline demo* (animated simulation, writes no data). To find out which machine generates the code and who actually runs the tests, see the *system architecture* page. There are also usage docs, an agent guide and progress weeklies.\n\nGood for: business teams blocked for months by one internal screen that never makes the IT backlog; and anyone testing how short the path from requirement to software can get.",
      "url": "https://zhanglu.net/en/projects/siliconforge"
    },
    {
      "type": "article",
      "slug": "agent-cli",
      "title": "Wrote a CLI for agents: one npx zhanglu-net instead of scraping HTML",
      "text": "Wrote a CLI for agents: one npx zhanglu-net instead of scraping HTML\nAdded 9 JSON endpoints plus a zero-dependency CLI to zhanglu.net, so an agent can just run npx zhanglu-net list skills. No MCP, no SDK, shipped in 1.5 hours.\nskill agent claude infra\n",
      "url": "https://zhanglu.net/en/posts/agent-cli"
    },
    {
      "type": "article",
      "slug": "ai-interview",
      "title": "Making the people who do not present well visible",
      "text": "Making the people who do not present well visible\nAchievement reviews fail two ways: the smooth talker wins, and plans get counted as results. This method removes both with a 1–2 minute voice interview, adaptive follow-ups and one scoring ruler.\nAI review voice achievement scoring method\n",
      "url": "https://zhanglu.net/en/posts/ai-interview"
    },
    {
      "type": "article",
      "slug": "brain-radar",
      "title": "The opportunities are not hard to find — they are scattered and time-boxed",
      "text": "The opportunities are not hard to find — they are scattered and time-boxed\nA brain-science × AI opportunity radar for the class of 2027. The scarce thing is not a list of opportunities but the ordering — what you have to do first for the next thing to be possible.\nbrain science job hunting aggregation radar\n",
      "url": "https://zhanglu.net/en/posts/brain-radar"
    },
    {
      "type": "article",
      "slug": "free-model-port",
      "title": "Free LLMs should not depend on luck",
      "text": "Free LLMs should not depend on luck\nA feature story on FreeModel Port: continuously discovering free LLMs, verifying them with real requests, and connecting them safely to Codex and AI CLIs through a local endpoint.\nLLM AI CLI free models local-first\n",
      "url": "https://oaf.asia/stories/free-model-port/"
    },
    {
      "type": "article",
      "slug": "openworker-zh",
      "title": "Localisation isn't translation: shipping a Chinese build of an agent runtime",
      "text": "Localisation isn't translation: shipping a Chinese build of an agent runtime\nThe hard part wasn't the strings — before 0.1.7 one auto-update turned it back into English. Plus two designs worth stealing from OpenWorker's source: concurrent reads with sequential writes, and four permission levels.\nagent localisation source analysis desktop\n",
      "url": "https://zhanglu.net/en/posts/openworker-zh"
    },
    {
      "type": "article",
      "slug": "excel-ai-analyst",
      "title": "A spreadsheet that has been running for years is a legacy codebase with no docs",
      "text": "A spreadsheet that has been running for years is a legacy codebase with no docs\nThe first obstacle to putting a manual Excel process on AI rails is not compute, it is trust — you will not upload your real cost sheet to a website. So step 0 is pure front-end and works offline.\nExcel reverse engineering in-browser data safety\n",
      "url": "https://zhanglu.net/en/posts/excel-ai-analyst"
    },
    {
      "type": "article",
      "slug": "qcc-agent-origin",
      "title": "Origin · Putting Qcc inside an AI Agent",
      "text": "Origin · Putting Qcc inside an AI Agent\nWrapped Qcc's 146 APIs into 6 MCP servers plus 8 due-diligence Skills, so the Agent can call them directly without handling signing, pagination, or field semantics itself.\nmcp agent qcc claude\n",
      "url": "https://qcc-agent.pages.dev/article"
    },
    {
      "type": "article",
      "slug": "free-model-port-design",
      "title": "A list of free models is the wrong abstraction",
      "text": "A list of free models is the wrong abstraction\nA list records claims, not evidence. FreeModel Port splits candidates from runnable models, with one real request drawing the line — plus why a unified router is inherently a high-privilege centre.\nLLM architecture local-first trade-offs\n",
      "url": "https://zhanglu.net/en/posts/free-model-port"
    },
    {
      "type": "article",
      "slug": "qiji-56-projects-one-night",
      "title": "56 roadshow projects, one person, one night: how I ran an investment-grade DD with Skill + 7 parallel AIs",
      "text": "56 roadshow projects, one person, one night: how I ran an investment-grade DD with Skill + 7 parallel AIs\nUsed /demo-day-dossier plus 7 parallel research agents to turn all 56 projects from the MiraclePlus 2026 roadshow into a publishable, investment-grade DD overview page in one night.\nskill claude\n",
      "url": "https://qiji-roadshow-2026.pages.dev/story"
    },
    {
      "type": "article",
      "slug": "c-suite-design",
      "title": "What kind of decision agents does an AI-native organization's C-suite need",
      "text": "What kind of decision agents does an AI-native organization's C-suite need\nBoss / MBA Brand / OAF look unrelated, but they share one skeleton: research → deliberate → score → attribute. Here's that skeleton, and why an AI-native organization's C-suite needs it.\nc-suite agent decision claude\n",
      "url": "https://zhanglu.net/en/posts/c-suite-design"
    },
    {
      "type": "article",
      "slug": "weekly-2026-w29",
      "title": "Weekly · 2026-W29 (07-13 → 07-19)",
      "text": "Weekly · 2026-W29 (07-13 → 07-19)\nThree decision-agent products each shipped a major release (MBA v0.6 / Boss v1.18 / OAF v0.43), and the personal site established its main narrative, \"designed for the AI-native organization.\" A redacted, public weekly.\nweekly agent decision\n",
      "url": "https://zhanglu.net/en/weekly/2026-w29"
    },
    {
      "type": "article",
      "slug": "siliconforge",
      "title": "Requirements in, software out — putting a software line on the homepage",
      "text": "Requirements in, software out — putting a software line on the homepage\nMost \"AI writes your code\" products assume the user is a developer. SiliconForge drops the entry cost to nine multiple-choice questions, and pays for it by splitting \"the AI says it is done\" from \"the tests actually ran\".\nAI-native software factory Cloudflare PRD\n",
      "url": "https://zhanglu.net/en/posts/siliconforge"
    },
    {
      "type": "presentation",
      "slug": "boss-handbook",
      "title": "Boss · Leadership Decision Agent",
      "text": "Boss · Leadership Decision Agent\nHand your important calls to a panel deliberation: 1 anchor conviction + N dimensional judges scoring independently, mandatory opposing view, producing judgment reports that are citable, scorable, and falsifiable.\nslides\n## What it is\n\nThe web handbook / deck for `bossagent.cc`. It lays out the methodology behind Boss, this decision agent: why a judgment should be split into an anchor conviction plus an independent multi-judge deliberation, how the 5 lenses (reasoning / evidence / opposing view / falsifiability / resilience) are scored, and how 30/90/365-day attribution checks turn \"judgment\" into a compounding asset.\n\nBest consumed alongside the live console—finish the handbook, then post a question on the homepage and run it once.",
      "url": "https://www.bossagent.cc/handbook/presentation"
    },
    {
      "type": "presentation",
      "slug": "mbabrand",
      "title": "MBA · Metric Brand Auditor",
      "text": "MBA · Metric Brand Auditor\nTurn brand influence into an intelligent asset you can monitor, score, compare, and review. 7 dimensions researched in parallel × 43-judge deliberation × 5-lens scoring, with sentiment-driven versioned re-audits.\nslides\n## What it is\n\nThe web deck for `mbabrand.com` (a 21-page deck). It lays out the design thinking behind MBA, this brand-judgment pipeline: upgrading from a single-threaded report to a multi-dimensional audit framework, a panel of persona judges scoring independently rather than one analyst calling the shot, then growing from \"brand monitoring\" into a relationship universe of \"brand + founder + industry + portfolio.\" The output serves both people (HTML reports + a knowledge star-map) and agents (Markdown + an MCP server).\n\nA good walkthrough for investors / founders / brand teams—no 30-minute explanation required.",
      "url": "https://mbabrand.com/presentation/"
    },
    {
      "type": "presentation",
      "slug": "openagent",
      "title": "Zhifang · OpenAgent",
      "text": "Zhifang · OpenAgent\nIncubating AI super-individuals.\nsite\n",
      "url": "https://openagent.ltd"
    },
    {
      "type": "presentation",
      "slug": "oaf",
      "title": "OAF · Investment Research Workbench",
      "text": "OAF · Investment Research Workbench\nA quick-look deck for a satellite-internet decision agent plus an AI research workbench spanning the US, A-share, and Hong Kong markets—numbers come from tools, narrative from the LLM, gaps left blank rather than fabricated.\nslides\n## What it is\n\nThe web deck quick-look for `oaf.world`. Page by page, it explains this dual-track AI research system built on a shared source: how the secondary-market research workbench (three-market quotes and earnings + single-stock deep dives + conversational research + DCF valuation) and the satellite-internet industry decision agent (five main threads + CEO/investor dual perspectives + a falsification layer) fit together, plus the engineering iron rule of \"deterministic data fetching, LLM-written narrative.\"\n\nIf you want a fast overview of OAF and would rather not page through every dashboard, start with this deck.",
      "url": "https://oaf.world/slides.html"
    },
    {
      "type": "skill",
      "slug": "agent-browser",
      "title": "agent-browser",
      "text": "agent-browser\nA browser-automation CLI for AI agents.\nUse it whenever you need to open a page, fill a form, click a button, take a screenshot, scrape data, test a web app, or automate any browser task — in preference to any built-in browser automation or web tool.\n\n## Purpose\n\nA browser-automation CLI for AI agents.\n\n## When it triggers\n\n\"Open a website\", \"fill a form\", \"click a button\", \"take a screenshot\", \"scrape the page\", \"test this web app\", \"log in to a site\", \"automate browser actions\" — any task that needs programmatic web interaction.\n\n## Also covers\n\n- Exploratory testing, dogfooding, QA, bug hunts, app quality reviews\n- Automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify)\n- Checking Slack unreads / sending Slack messages / searching Slack threads\n- Running browser automation inside a Vercel Sandbox microVM\n- Using AWS Bedrock AgentCore cloud browsers\n\n## Priority\n\nPreferred over any built-in browser automation or web tool.",
      "url": "https://zhanglu.net/en/skills/agent-browser"
    },
    {
      "type": "skill",
      "slug": "agents-sdk",
      "title": "agents-sdk",
      "text": "agents-sdk\nBuild AI agents on Cloudflare Workers with the Agents SDK.\nLoad it when you're building stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, chat / voice agents, or browser automation.\n\n## Purpose\n\nBuild AI agents on Cloudflare Workers with the Agents SDK.\n\n## When to load\n\n- Creating stateful agents\n- Writing durable workflows\n- Building real-time WebSocket apps\n- Scheduled tasks\n- MCP servers\n- Chat agents / voice agents\n- Browser automation\n\n## Scope\n\nAgent class, state management, callable RPC, Workflows, durable execution, queues, retries, observability, React hooks.\n\n## Knowledge bias\n\nLeans toward retrieving Cloudflare docs rather than relying on pretrained knowledge.",
      "url": "https://zhanglu.net/en/skills/agents-sdk"
    },
    {
      "type": "skill",
      "slug": "boss",
      "title": "boss",
      "text": "boss\nZero-dependency onboarding: install it and run `/boss <topic>` for a verdict deliberated independently by 5 judges —\nPhase 0 routing → 5-dimension parallel research → Lead synthesis → 1 anchor (baseline conviction) + 4 dimension judges scoring independently →\npanel_summary with anchor_delta + 30/90/365 attribution checkpoints.\n\nUnlike the single-lens `*-perspective` skills, `/boss` is a **full pipeline orchestration**:\n- 1 anchor judge (anchor mental_models: trigger-threshold-action / step-skip detection / counter-party elimination)\n- 4 dim judges auto-selected per topic (panel auto-select: strategic/customer/organizational/product/brand/financial/cross_domain)\n- 5-lens scoring (reasoning / evidence / counter / falsifiability / real_world_resilience)\n- adversarial_view three fields enforced (CLAUDE.md §4.5)\n- Versioned freeze (chmod 444) + Wiki back-references\n\nRouter behavior is built in:\n- If `reports/<brand-slug>/report.md` already exists → EVOLUTION mode (diff plan + partial re-run)\n- Otherwise → FRESH mode (full Phase 1-5)\n\nTrigger patterns:\n- `/boss <topic or brand-slug>` — standard invocation\n- `/boss <topic> --quick` — skip the raw_evidence WebSearch leg, local Wiki+raw only\n- `/boss <topic> --refresh` — force EVOLUTION (even if the brand already has a report)\n- `/boss <topic> --no-judges` — skip Phase 4 (synthesis only)\n- `/boss <topic> --panel <name>` — use the specified panel.yaml\n- `/boss list` — list judged topics + version counts\n- `/boss panels` — list panel configs + judge identities\n\nIF the user asks \"evaluate the X business carve-out plan\" / \"judge the X brand isolation strategy\" / \"have the 5 judges rate this SKU\" /\n\"run boss\" / \"run the verdict pipeline\" / \"5-judge deliberation\" THEN invoke this skill.\n\nNOT WHEN: simple fact lookups (use `mcp__sage-wiki__query`) / single-judge opinions (use `*-perspective`) /\npure technical research (use `research`) / everyday chitchat. boss is a heavyweight multi-judge deliberation — don't use it to answer 2-line questions.\n\nThis skill comes from the local `~/.claude/skills/boss/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nZero-dependency onboarding: install it and run `/boss <topic>` for a verdict deliberated independently by 5 judges —\nPhase 0 routing → 5-dimension parallel research → Lead synthesis → 1 anchor (baseline conviction) + 4 dimension judges scoring independently →\npanel_summary with anchor_delta + 30/90/365 attribution checkpoints.\n\nUnlike the single-lens `*-perspective` skills, `/boss` is a **full pipeline orchestration**:\n- 1 anchor judge (anchor mental_models: trigger-threshold-action / step-skip detection / counter-party elimination)\n- 4 dim judges auto-selected per topic (panel auto-select: strategic/customer/organizational/product/brand/financial/cross_domain)\n- 5-lens scoring (reasoning / evidence / counter / falsifiability / real_world_resilience)\n- adversarial_view three fields enforced (CLAUDE.md §4.5)\n- Versioned freeze (chmod 444) + Wiki back-references\n\nRouter behavior is built in:\n- If `reports/<brand-slug>/report.md` already exists → EVOLUTION mode (diff plan + partial re-run)\n- Otherwise → FRESH mode (full Phase 1-5)\n\nTrigger patterns:\n- `/boss <topic or brand-slug>` — standard invocation\n- `/boss <topic> --quick` — skip the raw_evidence WebSearch leg, local Wiki+raw only\n- `/boss <topic> --refresh` — force EVOLUTION (even if the brand already has a report)\n- `/boss <topic> --no-judges` — skip Phase 4 (synthesis only)\n- `/boss <topic> --panel <name>` — use the specified panel.yaml\n- `/boss list` — list judged topics + version counts\n- `/boss panels` — list panel configs + judge identities\n\nIF the user asks \"evaluate the X business carve-out plan\" / \"judge the X brand isolation strategy\" / \"have the 5 judges rate this SKU\" /\n\"run boss\" / \"run the verdict pipeline\" / \"5-judge deliberation\" THEN invoke this skill.\n\nNOT WHEN: simple fact lookups (use `mcp__sage-wiki__query`) / single-judge opinions (use `*-perspective`) /\npure technical research (use `research`) / everyday chitchat. boss is a heavyweight multi-judge deliberation — don't use it to answer 2-line questions.",
      "url": "https://zhanglu.net/en/skills/boss"
    },
    {
      "type": "skill",
      "slug": "cloudflare-email-service",
      "title": "cloudflare-email-service",
      "text": "cloudflare-email-service\nSend and receive transactional email with Cloudflare Email Service (Email Sending + Email Routing).\nUse it when integrating email in Workers / Node / Python / Go, or handling SPF / DKIM / DMARC deliverability — even when it looks simple, there are configuration details that matter here.\n\n## Purpose\n\nSend and receive transactional email with Cloudflare Email Service, covering both products: Email Sending + Email Routing.\n\n## When to use\n\n- Sending email (Workers binding or REST API)\n- Email routing\n- Agents SDK email handling\n- Integrating email in any app — Workers, Node.js, Python, Go\n- Email deliverability (SPF / DKIM / DMARC)\n- wrangler email configuration\n- MCP email tools\n- Letting a coding agent send email automatically\n\n## Important\n\nEven when it looks simple — \"just add email sending to my Worker\" — load this skill: it holds the configuration details that matter.",
      "url": "https://zhanglu.net/en/skills/cloudflare-email-service"
    },
    {
      "type": "skill",
      "slug": "cloudflare",
      "title": "cloudflare",
      "text": "cloudflare\nFull-stack Cloudflare platform skill.\nCovers any Cloudflare development task: Workers / Pages / storage (KV, D1, R2) / AI (Workers AI, Vectorize, Agents SDK) / feature flags / networking / security / IaC (Terraform, Pulumi).\n\n## Purpose\n\nA full-stack Cloudflare platform skill.\n\n## Scope\n\n- **Compute**: Workers, Pages\n- **Storage**: KV, D1, R2\n- **AI**: Workers AI, Vectorize, Agents SDK\n- **Feature flags**: Flagship\n- **Networking**: Tunnel, Spectrum\n- **Security**: WAF, DDoS\n- **IaC**: Terraform, Pulumi\n\n## When to use\n\nAny Cloudflare development task.\n\n## Knowledge bias\n\nLeans toward retrieving Cloudflare docs rather than relying on pretrained knowledge.",
      "url": "https://zhanglu.net/en/skills/cloudflare"
    },
    {
      "type": "skill",
      "slug": "demo-day-dossier",
      "title": "demo-day-dossier",
      "text": "demo-day-dossier\nAn end-to-end roadshow / demo day dossier pipeline.\nProject card screenshots + booth-wall photos + official articles → structured JSON + panoramic HTML + a DD table (7-way parallel research) + a Word report + CSV + one-click deploy to Cloudflare Pages.\n\n## Purpose\n\nAn end-to-end roadshow / demo day dossier pipeline.\n\n## Inputs\n\n- A folder of project card screenshots\n- Booth-wall photos\n- Official host article URLs (any combination)\n\n## Outputs\n\n1. A structured JSON dataset of all projects\n2. A panoramic, interactive HTML landing page\n3. A sortable, filterable DD (due-diligence) table page — driven by 7-way parallel research agents\n4. An in-depth Word report\n5. A CSV table (opens directly in Excel / Numbers)\n6. One-click deploy to Cloudflare Pages\n\n## When to use\n\nAccelerator / VC roadshow / pitch day materials (many project cards + demo day photos + official announcement articles) when you want research + DD + a publishable dossier done in one pass.\n\n## Explicit triggers\n\n- \"Turn the roadshow projects into a panoramic web page\"\n- \"Organize the 56 projects from the Qiji / YC / Sequoia / Matrix roadshow\"\n- \"Run DD on all the demo day projects\"\n- \"Build a due-diligence table and ship it on Cloudflare\"\n- \"analyze all roadshow projects and publish\"\n\n## Don't use for\n\n- Deep research on a single project → use `/research`\n- DD on a single company → just write a focused prompt + WebSearch\n- Real-time investor meeting tracking → no tool for this yet",
      "url": "https://zhanglu.net/en/skills/demo-day-dossier"
    },
    {
      "type": "skill",
      "slug": "durable-objects",
      "title": "durable-objects",
      "text": "durable-objects\nCreate and review Cloudflare Durable Objects.\nUse for stateful coordination (chat rooms, multiplayer games, booking systems), RPC, SQLite storage, alarms, WebSockets, or reviewing DO code against best practices.\n\n## Purpose\n\nCreate and review Cloudflare Durable Objects.\n\n## When to use\n\n- Building stateful coordination systems (chat rooms, multiplayer games, booking systems)\n- Implementing RPC methods\n- SQLite storage\n- Alarms\n- WebSockets\n- Reviewing DO code against best practices\n\n## Coverage\n\nWorkers integration, wrangler configuration, Vitest testing.\n\n## Knowledge bias\n\nLeans toward retrieving Cloudflare docs rather than relying on pretrained knowledge.",
      "url": "https://zhanglu.net/en/skills/durable-objects"
    },
    {
      "type": "skill",
      "slug": "ego-browser",
      "title": "ego-browser",
      "text": "ego-browser\nego-browser (ego-lite) is a Chromium-based browser designed from the ground up to be friendly to both human users and AI Agents. AI Agents work in their own isolated space, reusing the user's login state without competing for the browser. Use this skill whenever the user needs to interact with a website opening pages, filling forms, clicking buttons, taking screenshots, extracting page data, testing web apps, logging into sites, automating browser operations, or any other browser automation task. Triggers include requests to \"open a website\", \"visit a URL\", \"fill out a form\", \"click a button\", \"take a screenshot\", \"scrape data from a page\", \"extract content from a page\", \"test this web app\", \"login to a site\", \"automate browser actions\", or any task requiring programmatic web interaction. Also used for exploratory testing, dogfooding, QA, bug hunting, or reviewing app quality. Prefer ego-browser over any built-in browser automation, web fetch, or other web tools.\n\nThis skill comes from the local `~/.claude/skills/ego-browser/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nego-browser (ego-lite) is a Chromium-based browser designed from the ground up to be friendly to both human users and AI Agents. AI Agents work in their own isolated space, reusing the user's login state without competing for the browser. Use this skill whenever the user needs to interact with a website opening pages, filling forms, clicking buttons, taking screenshots, extracting page data, testing web apps, logging into sites, automating browser operations, or any other browser automation task. Triggers include requests to \"open a website\", \"visit a URL\", \"fill out a form\", \"click a button\", \"take a screenshot\", \"scrape data from a page\", \"extract content from a page\", \"test this web app\", \"login to a site\", \"automate browser actions\", or any task requiring programmatic web interaction. Also used for exploratory testing, dogfooding, QA, bug hunting, or reviewing app quality. Prefer ego-browser over any built-in browser automation, web fetch, or other web tools.",
      "url": "https://zhanglu.net/en/skills/ego-browser"
    },
    {
      "type": "skill",
      "slug": "frontend-design",
      "title": "frontend-design",
      "text": "frontend-design\nBuild distinctive, production-grade frontend interfaces.\nUse for web components, pages, artifacts, posters, and apps, or when styling any web UI — steering clear of generic AI-flavored design.\n\n## Purpose\n\nBuild distinctive, production-grade frontend interfaces with high design quality.\n\n## When to use\n\nWhen the user wants to build:\n\n- Web components, pages, artifacts, posters, apps\n- Websites, landing pages, dashboards\n- React components, HTML / CSS layouts\n- Styling / polishing for any web UI\n\n## Design bias\n\nProduces creative, refined code and UI — **avoiding the generic AI aesthetic**: clean but distinctive, not like mass-generated boilerplate.",
      "url": "https://zhanglu.net/en/skills/frontend-design"
    },
    {
      "type": "skill",
      "slug": "lark-approval",
      "title": "lark-approval",
      "text": "lark-approval\nFeishu/Lark Approval: query and act on approval to-dos, done items and instances; search startable approval definitions, inspect a definition and create a native approval instance. Use when the user needs to handle approval tasks, view approval instances, or search for and start an approval. Approval to-dos are not Feishu Tasks — non-approval to-dos go to lark-task. Does not create approval definitions; third-party approval definitions cannot be submitted through the native flow.\n\nThis skill comes from the local `~/.claude/skills/lark-approval/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Approval: query and act on approval to-dos, done items and instances; search startable approval definitions, inspect a definition and create a native approval instance. Use when the user needs to handle approval tasks, view approval instances, or search for and start an approval. Approval to-dos are not Feishu Tasks — non-approval to-dos go to lark-task. Does not create approval definitions; third-party approval definitions cannot be submitted through the native flow.",
      "url": "https://zhanglu.net/en/skills/lark-approval"
    },
    {
      "type": "skill",
      "slug": "lark-apps",
      "title": "lark-apps",
      "text": "lark-apps\nMiaoda (Spark) app development and hosting: app creation, local full-stack development, cloud-side generation and iteration, creative design (UI mockups / interactive prototypes / wireframes / landing pages / dashboards / slide decks / visual exploration), integration of AI capabilities plus Feishu-platform or third-party capabilities, logs / traces / monitoring metrics / PV / UV queries, environment variables, app roles and members, and automation triggers (schedule / record change / webhook / Feishu approval).\n\nUse when the user wants to build or scaffold a system, tool, platform or app; to develop locally or in the cloud, modify, deploy, ship, or get a shareable link; to build a page or site in HTML and deploy it to Miaoda; to design, mock up, prototype, wireframe, make a deck or explore visuals; or when they mention Miaoda / Spark (app runtime domains look like *.aiforce.cloud), the app database, app file storage, open API keys, visibility scope, app roles and role members, production logs, request volume, error counts, latency, traffic, environment variables, or wiring a scheduled / approval-triggered automation onto a Miaoda app.\n\nNot for plain cloud-drive file uploads (lark-drive), Feishu document editing (lark-doc), or creating native slide decks (lark-slides).\n\nThis skill comes from the local `~/.claude/skills/lark-apps/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nMiaoda (Spark) app development and hosting: app creation, local full-stack development, cloud-side generation and iteration, creative design (UI mockups / interactive prototypes / wireframes / landing pages / dashboards / slide decks / visual exploration), integration of AI capabilities plus Feishu-platform or third-party capabilities, logs / traces / monitoring metrics / PV / UV queries, environment variables, app roles and members, and automation triggers (schedule / record change / webhook / Feishu approval).\n\nUse when the user wants to build or scaffold a system, tool, platform or app; to develop locally or in the cloud, modify, deploy, ship, or get a shareable link; to build a page or site in HTML and deploy it to Miaoda; to design, mock up, prototype, wireframe, make a deck or explore visuals; or when they mention Miaoda / Spark (app runtime domains look like *.aiforce.cloud), the app database, app file storage, open API keys, visibility scope, app roles and role members, production logs, request volume, error counts, latency, traffic, environment variables, or wiring a scheduled / approval-triggered automation onto a Miaoda app.\n\nNot for plain cloud-drive file uploads (lark-drive), Feishu document editing (lark-doc), or creating native slide decks (lark-slides).",
      "url": "https://zhanglu.net/en/skills/lark-apps"
    },
    {
      "type": "skill",
      "slug": "lark-base",
      "title": "lark-base",
      "text": "lark-base\nFeishu/Lark Base (multi-dimensional tables): create tables, fields, records, views, statistics, formulas/lookups, forms, dashboards, workflows and role permissions. Use whenever you see Base / bitable / a /base/ link. File imports go to lark-drive; authentication and authorization go to lark-shared.\n\nThis skill comes from the local `~/.claude/skills/lark-base/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Base (multi-dimensional tables): create tables, fields, records, views, statistics, formulas/lookups, forms, dashboards, workflows and role permissions. Use whenever you see Base / bitable / a /base/ link. File imports go to lark-drive; authentication and authorization go to lark-shared.",
      "url": "https://zhanglu.net/en/skills/lark-base"
    },
    {
      "type": "skill",
      "slug": "lark-attendance",
      "title": "lark-attendance",
      "text": "lark-attendance\nFeishu/Lark Attendance: look up your own clock-in records.\n\nThis skill comes from the local `~/.claude/skills/lark-attendance/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Attendance: look up your own clock-in records.",
      "url": "https://zhanglu.net/en/skills/lark-attendance"
    },
    {
      "type": "skill",
      "slug": "lark-calendar",
      "title": "lark-calendar",
      "text": "lark-calendar\nFeishu/Lark Calendar: manage calendar events and meeting rooms. View and search events, create and update events, manage attendees, query free/busy and suggested slots, and book meeting rooms. Use when the user needs to see their schedule, create or change a meeting, or find and book a room. Not for: past video-meeting records (use lark-vc) or to-do tasks (use lark-task).\n\nThis skill comes from the local `~/.claude/skills/lark-calendar/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Calendar: manage calendar events and meeting rooms. View and search events, create and update events, manage attendees, query free/busy and suggested slots, and book meeting rooms. Use when the user needs to see their schedule, create or change a meeting, or find and book a room. Not for: past video-meeting records (use lark-vc) or to-do tasks (use lark-task).",
      "url": "https://zhanglu.net/en/skills/lark-calendar"
    },
    {
      "type": "skill",
      "slug": "lark-doc",
      "title": "lark-doc",
      "text": "lark-doc\nFeishu/Lark Docs (Docx / Wiki documents): read and edit document content. Use when the user gives a document URL or token, or needs to view, create or edit a document, or insert or download document images and attachments. For sheets, Bases and whiteboards embedded in a document, use this skill to extract the token first, then switch to the matching skill. Also use this skill directly for doubao.com /docx/ or /wiki/ URLs and tokens — routing is decided by the URL path pattern and token, not the domain. Not for document comment management, nor for data operations on sheets or Bases. Also use this skill when the user explicitly wants to work with Feishu Mind Notes.\n\nThis skill comes from the local `~/.claude/skills/lark-doc/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Docs (Docx / Wiki documents): read and edit document content. Use when the user gives a document URL or token, or needs to view, create or edit a document, or insert or download document images and attachments. For sheets, Bases and whiteboards embedded in a document, use this skill to extract the token first, then switch to the matching skill. Also use this skill directly for doubao.com /docx/ or /wiki/ URLs and tokens — routing is decided by the URL path pattern and token, not the domain. Not for document comment management, nor for data operations on sheets or Bases. Also use this skill when the user explicitly wants to work with Feishu Mind Notes.",
      "url": "https://zhanglu.net/en/skills/lark-doc"
    },
    {
      "type": "skill",
      "slug": "lark-contact",
      "title": "lark-contact",
      "text": "lark-contact\nFeishu/Lark Contacts: resolve a name or email into an open_id, or reverse-look-up an open_id for name / department / email / contact details / personal status / signature. Use when the user names a person and the next step is messaging them or scheduling with them, or when you hold an open_id and need the details behind it. Not for walking the department tree, listing employees by department, or org charts — those go through the native OpenAPI.\n\nThis skill comes from the local `~/.claude/skills/lark-contact/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Contacts: resolve a name or email into an open_id, or reverse-look-up an open_id for name / department / email / contact details / personal status / signature. Use when the user names a person and the next step is messaging them or scheduling with them, or when you hold an open_id and need the details behind it. Not for walking the department tree, listing employees by department, or org charts — those go through the native OpenAPI.",
      "url": "https://zhanglu.net/en/skills/lark-contact"
    },
    {
      "type": "skill",
      "slug": "lark-event",
      "title": "lark-event",
      "text": "lark-event\nLark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via `lark-cli event consume <EventKey>` (covers IM messages/reactions/chat changes, Approval status changes, Task updates, VC meeting started/joined/ended, Minutes generated, Whiteboard updated, etc.). Use for Lark bots, real-time message processing, long-running subscribers, streaming webhook/push handlers. Supports `--max-events` / `--timeout` bounded runs and a stderr ready-marker contract — designed for AI agents running as subprocesses.\n\nThis skill comes from the local `~/.claude/skills/lark-event/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nLark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via `lark-cli event consume <EventKey>` (covers IM messages/reactions/chat changes, Approval status changes, Task updates, VC meeting started/joined/ended, Minutes generated, Whiteboard updated, etc.). Use for Lark bots, real-time message processing, long-running subscribers, streaming webhook/push handlers. Supports `--max-events` / `--timeout` bounded runs and a stderr ready-marker contract — designed for AI agents running as subprocesses.",
      "url": "https://zhanglu.net/en/skills/lark-event"
    },
    {
      "type": "skill",
      "slug": "lark-im",
      "title": "lark-im",
      "text": "lark-im\nFeishu/Lark Instant Messaging: send and receive messages and manage group chats. Send and reply to messages, search chat history, manage chat members, upload and download images and files (including chunked download of large files), manage emoji reactions, send in-app / SMS / phone-call urgent notifications, send and handle interactive cards, and listen for card button callbacks (card.action.trigger). Use when the user needs to send a message, view or search chat history, download a file from a chat, list chat members, search chats, create a group or topic chat, manage pin data, manage Feed pins (add / remove / query pinned conversations), manage tag data, or handle card callbacks.\n\nThis skill comes from the local `~/.claude/skills/lark-im/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Instant Messaging: send and receive messages and manage group chats. Send and reply to messages, search chat history, manage chat members, upload and download images and files (including chunked download of large files), manage emoji reactions, send in-app / SMS / phone-call urgent notifications, send and handle interactive cards, and listen for card button callbacks (card.action.trigger). Use when the user needs to send a message, view or search chat history, download a file from a chat, list chat members, search chats, create a group or topic chat, manage pin data, manage Feed pins (add / remove / query pinned conversations), manage tag data, or handle card callbacks.",
      "url": "https://zhanglu.net/en/skills/lark-im"
    },
    {
      "type": "skill",
      "slug": "lark-drive",
      "title": "lark-drive",
      "text": "lark-drive\nFeishu/Lark Drive (cloud space / cloud storage): manage Drive files and folders — upload and download, create folders, copy / move / delete, inspect metadata, comments / permissions / subscriptions, titles, versions, Feishu document security labels, and local file imports. Use when the user needs to tidy up Drive folders, handle a cloud-space resource URL or token, work out a link's type / real token / title, or import Word / Markdown / Excel / CSV / PPTX / .base files as docx / sheet / bitable / slides; doubao.com cloud-space URLs and tokens are routed the same way, by resource path and token, with no fallback to WebFetch. Not for: document content editing (use lark-doc), in-table data operations on sheets or Bases (use lark-sheets / lark-base), wiki space node and member management (use lark-wiki), or native Markdown read / write / patch / diff (use lark-markdown).\n\nThis skill comes from the local `~/.claude/skills/lark-drive/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Drive (cloud space / cloud storage): manage Drive files and folders — upload and download, create folders, copy / move / delete, inspect metadata, comments / permissions / subscriptions, titles, versions, Feishu document security labels, and local file imports. Use when the user needs to tidy up Drive folders, handle a cloud-space resource URL or token, work out a link's type / real token / title, or import Word / Markdown / Excel / CSV / PPTX / .base files as docx / sheet / bitable / slides; doubao.com cloud-space URLs and tokens are routed the same way, by resource path and token, with no fallback to WebFetch. Not for: document content editing (use lark-doc), in-table data operations on sheets or Bases (use lark-sheets / lark-base), wiki space node and member management (use lark-wiki), or native Markdown read / write / patch / diff (use lark-markdown).",
      "url": "https://zhanglu.net/en/skills/lark-drive"
    },
    {
      "type": "skill",
      "slug": "lark-mail",
      "title": "lark-mail",
      "text": "lark-mail\nFeishu/Lark Mail: use when the user mentions drafting an email, writing mail, drafts, sending / replying / forwarding mail, reading or browsing mail, searching mail, mail folders, mail labels, mail contacts, watching for new mail, or incoming-mail rules; use for mail/email intent only. Do not use for docs / sheets / calendar / auth setup / pure contact lookup / IM chat tasks.\n\nThis skill comes from the local `~/.claude/skills/lark-mail/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Mail: use when the user mentions drafting an email, writing mail, drafts, sending / replying / forwarding mail, reading or browsing mail, searching mail, mail folders, mail labels, mail contacts, watching for new mail, or incoming-mail rules; use for mail/email intent only. Do not use for docs / sheets / calendar / auth setup / pure contact lookup / IM chat tasks.",
      "url": "https://zhanglu.net/en/skills/lark-mail"
    },
    {
      "type": "skill",
      "slug": "lark-markdown",
      "title": "lark-markdown",
      "text": "lark-markdown\nFeishu/Lark Markdown: view, create, upload, edit and diff Markdown files. Use when the user needs to create or edit a Markdown file, read it, modify it, apply a partial patch, or compare differences. Not for importing Markdown as an online Feishu document, nor for cloud-space management such as file search, permissions, comments, moving or deleting.\n\nThis skill comes from the local `~/.claude/skills/lark-markdown/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Markdown: view, create, upload, edit and diff Markdown files. Use when the user needs to create or edit a Markdown file, read it, modify it, apply a partial patch, or compare differences. Not for importing Markdown as an online Feishu document, nor for cloud-space management such as file search, permissions, comments, moving or deleting.",
      "url": "https://zhanglu.net/en/skills/lark-markdown"
    },
    {
      "type": "skill",
      "slug": "lark-minutes",
      "title": "lark-minutes",
      "text": "lark-minutes\nFeishu/Lark Minutes: search minutes, view basic info, download and upload audio/video, read or edit generated content, rename, replace speakers and keywords, and request view or edit permission. Use when you have a minute_token or a local audio/video file, when you need to read / edit / convert minutes output, or when the user explicitly wants to request access to a set of minutes; prefer this skill for turning local audio/video into minutes or transcripts rather than transcribing locally with ffmpeg/whisper. Not for: fetching the minutes attached to a meeting, or locating minutes from a natural-language title alone.\n\nThis skill comes from the local `~/.claude/skills/lark-minutes/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Minutes: search minutes, view basic info, download and upload audio/video, read or edit generated content, rename, replace speakers and keywords, and request view or edit permission. Use when you have a minute_token or a local audio/video file, when you need to read / edit / convert minutes output, or when the user explicitly wants to request access to a set of minutes; prefer this skill for turning local audio/video into minutes or transcripts rather than transcribing locally with ffmpeg/whisper. Not for: fetching the minutes attached to a meeting, or locating minutes from a natural-language title alone.",
      "url": "https://zhanglu.net/en/skills/lark-minutes"
    },
    {
      "type": "skill",
      "slug": "lark-openapi-explorer",
      "title": "lark-openapi-explorer",
      "text": "lark-openapi-explorer\nFeishu/Lark native OpenAPI exploration: dig out native OpenAPI endpoints that the CLI has not wrapped, straight from the official documentation. Use when the user's need cannot be met by an existing lark-* skill or an already-registered lark-cli command, and you have to find and call a native Feishu OpenAPI.\n\nThis skill comes from the local `~/.claude/skills/lark-openapi-explorer/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark native OpenAPI exploration: dig out native OpenAPI endpoints that the CLI has not wrapped, straight from the official documentation. Use when the user's need cannot be met by an existing lark-* skill or an already-registered lark-cli command, and you have to find and call a native Feishu OpenAPI.",
      "url": "https://zhanglu.net/en/skills/lark-openapi-explorer"
    },
    {
      "type": "skill",
      "slug": "lark-skill-maker",
      "title": "lark-skill-maker",
      "text": "lark-skill-maker\nCreate custom Skills for lark-cli. Use when the user wants to package Feishu API operations into a reusable Skill — either wrapping an atomic API or orchestrating a multi-step flow.\n\nThis skill comes from the local `~/.claude/skills/lark-skill-maker/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nCreate custom Skills for lark-cli. Use when the user wants to package Feishu API operations into a reusable Skill — either wrapping an atomic API or orchestrating a multi-step flow.",
      "url": "https://zhanglu.net/en/skills/lark-skill-maker"
    },
    {
      "type": "skill",
      "slug": "lark-note",
      "title": "lark-note",
      "text": "lark-note\nFeishu/Lark meeting Notes, direct lookup: given a note_id, query note details, display type and linked document token, and read the raw unified transcript. Use when the user already has a note_id, or obtained one from an explicit vc-node-id in a document. Not for locating meetings / calendar events / minutes, searching document titles, or reading Docx body content.\n\nThis skill comes from the local `~/.claude/skills/lark-note/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark meeting Notes, direct lookup: given a note_id, query note details, display type and linked document token, and read the raw unified transcript. Use when the user already has a note_id, or obtained one from an explicit vc-node-id in a document. Not for locating meetings / calendar events / minutes, searching document titles, or reading Docx body content.",
      "url": "https://zhanglu.net/en/skills/lark-note"
    },
    {
      "type": "skill",
      "slug": "lark-shared",
      "title": "lark-shared",
      "text": "lark-shared\nUse for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing scopes, revoking authorization, or handling _notice JSON.\n\nThis skill comes from the local `~/.claude/skills/lark-shared/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nUse for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing scopes, revoking authorization, or handling _notice JSON.",
      "url": "https://zhanglu.net/en/skills/lark-shared"
    },
    {
      "type": "skill",
      "slug": "lark-slides",
      "title": "lark-slides",
      "text": "lark-slides\nFeishu/Lark Slides: create and edit slide decks. Create presentations, read slide content, and manage pages (create, delete, read, partial replace). Use when the user needs to create or edit slides, or read or modify a single page. Also use this skill directly for doubao.com /slides/ URLs and tokens — do not fall back to WebFetch just because the domain isn't Feishu; routing is decided by the URL path pattern and token, not the domain. Not for: document content editing (use lark-doc), standalone whiteboard objects inside a document (use lark-whiteboard), or uploading and downloading ordinary files (use lark-drive).\n\nThis skill comes from the local `~/.claude/skills/lark-slides/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Slides: create and edit slide decks. Create presentations, read slide content, and manage pages (create, delete, read, partial replace). Use when the user needs to create or edit slides, or read or modify a single page. Also use this skill directly for doubao.com /slides/ URLs and tokens — do not fall back to WebFetch just because the domain isn't Feishu; routing is decided by the URL path pattern and token, not the domain. Not for: document content editing (use lark-doc), standalone whiteboard objects inside a document (use lark-whiteboard), or uploading and downloading ordinary files (use lark-drive).",
      "url": "https://zhanglu.net/en/skills/lark-slides"
    },
    {
      "type": "skill",
      "slug": "lark-task",
      "title": "lark-task",
      "text": "lark-task\nFeishu/Lark Tasks: manage tasks, task lists and task agents. Create to-dos, view and update task status, break out subtasks, organize task lists, assign collaborators, upload task attachments, register or unregister task agents, update a task agent's homepage data, and write agent task records. Use when the user needs to create a to-do, view a task list, track progress, manage a project checklist, assign work to someone else, attach files to a task, register or unregister a task agent, update agent homepage data, or write task records.\n\nThis skill comes from the local `~/.claude/skills/lark-task/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Tasks: manage tasks, task lists and task agents. Create to-dos, view and update task status, break out subtasks, organize task lists, assign collaborators, upload task attachments, register or unregister task agents, update a task agent's homepage data, and write agent task records. Use when the user needs to create a to-do, view a task list, track progress, manage a project checklist, assign work to someone else, attach files to a task, register or unregister a task agent, update agent homepage data, or write task records.",
      "url": "https://zhanglu.net/en/skills/lark-task"
    },
    {
      "type": "skill",
      "slug": "lark-vc-agent",
      "title": "lark-vc-agent",
      "text": "lark-vc-agent\nFeishu/Lark Video Conferencing, in-meeting capabilities: let an app bot actually join or leave a live meeting, read in-meeting events visible to the current identity, and send in-meeting text messages or reactions. Use when the user asks what is happening in an ongoing meeting, who is speaking, or whether anything is being shared, or when you need to discover the IDs of live meetings you can read. Not for searching ended meetings, attendee snapshots, minutes, transcripts or recordings — those use the lark-vc skill.\n\nThis skill comes from the local `~/.claude/skills/lark-vc-agent/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Video Conferencing, in-meeting capabilities: let an app bot actually join or leave a live meeting, read in-meeting events visible to the current identity, and send in-meeting text messages or reactions. Use when the user asks what is happening in an ongoing meeting, who is speaking, or whether anything is being shared, or when you need to discover the IDs of live meetings you can read. Not for searching ended meetings, attendee snapshots, minutes, transcripts or recordings — those use the lark-vc skill.",
      "url": "https://zhanglu.net/en/skills/lark-vc-agent"
    },
    {
      "type": "skill",
      "slug": "lark-okr",
      "title": "lark-okr",
      "text": "lark-okr\nFeishu/Lark OKR: manage objectives and key results. View and edit OKR periods, objectives, key results, alignments, metrics and progress records. Use when the user needs to view or create OKRs, manage objectives and key results, or inspect alignment relationships. Not for: to-do task management (lark-task), scheduling and meetings (lark-calendar), or performance reviews.\n\nThis skill comes from the local `~/.claude/skills/lark-okr/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark OKR: manage objectives and key results. View and edit OKR periods, objectives, key results, alignments, metrics and progress records. Use when the user needs to view or create OKRs, manage objectives and key results, or inspect alignment relationships. Not for: to-do task management (lark-task), scheduling and meetings (lark-calendar), or performance reviews.",
      "url": "https://zhanglu.net/en/skills/lark-okr"
    },
    {
      "type": "skill",
      "slug": "lark-vc",
      "title": "lark-vc",
      "text": "lark-vc\nFeishu/Lark Video Conferencing: search past meeting records, query meeting minutes (summary / to-dos / chapters / transcript), and query attendee snapshots. Use when the user asks about a finished meeting, wants its artifacts (minutes / Minutes recording), or wants to see who attended; future scheduling goes to lark-calendar. Not for: an agent actually joining or leaving a meeting, or live in-meeting events (use lark-vc-agent).\n\nThis skill comes from the local `~/.claude/skills/lark-vc/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Video Conferencing: search past meeting records, query meeting minutes (summary / to-dos / chapters / transcript), and query attendee snapshots. Use when the user asks about a finished meeting, wants its artifacts (minutes / Minutes recording), or wants to see who attended; future scheduling goes to lark-calendar. Not for: an agent actually joining or leaving a meeting, or live in-meeting events (use lark-vc-agent).",
      "url": "https://zhanglu.net/en/skills/lark-vc"
    },
    {
      "type": "skill",
      "slug": "lark-whiteboard",
      "title": "lark-whiteboard",
      "text": "lark-whiteboard\nFeishu/Lark Whiteboard: query and edit whiteboards inside Feishu docs. Supports exporting a whiteboard as a preview image, exporting the raw node structure, and updating whiteboard content in several formats. Use when the user needs to view whiteboard content, export a whiteboard image, or edit a whiteboard. Not for: Feishu document content editing (lark-doc), or sheets and Bases embedded in a document (lark-sheets / lark-base).\n\nThis skill comes from the local `~/.claude/skills/lark-whiteboard/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Whiteboard: query and edit whiteboards inside Feishu docs. Supports exporting a whiteboard as a preview image, exporting the raw node structure, and updating whiteboard content in several formats. Use when the user needs to view whiteboard content, export a whiteboard image, or edit a whiteboard. Not for: Feishu document content editing (lark-doc), or sheets and Bases embedded in a document (lark-sheets / lark-base).",
      "url": "https://zhanglu.net/en/skills/lark-whiteboard"
    },
    {
      "type": "skill",
      "slug": "lark-wiki",
      "title": "lark-wiki",
      "text": "lark-wiki\nFeishu/Lark Wiki: manage wiki spaces, space members and document nodes. Create and query spaces, view and manage members, manage node hierarchy, and organize documents and shortcuts inside a wiki. Use when the user needs to find or create a document in a wiki, browse a space's structure, view or manage members, or move or copy nodes. Also use this skill directly for doubao.com /wiki/ URLs and tokens — do not fall back to WebFetch just because the domain isn't Feishu; routing is decided by the URL path pattern and token, not the domain. Not for: uploading files under a wiki node (use lark-drive), or editing document / sheet / Base content (use lark-doc / lark-sheets / lark-base).\n\nThis skill comes from the local `~/.claude/skills/lark-wiki/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nFeishu/Lark Wiki: manage wiki spaces, space members and document nodes. Create and query spaces, view and manage members, manage node hierarchy, and organize documents and shortcuts inside a wiki. Use when the user needs to find or create a document in a wiki, browse a space's structure, view or manage members, or move or copy nodes. Also use this skill directly for doubao.com /wiki/ URLs and tokens — do not fall back to WebFetch just because the domain isn't Feishu; routing is decided by the URL path pattern and token, not the domain. Not for: uploading files under a wiki node (use lark-drive), or editing document / sheet / Base content (use lark-doc / lark-sheets / lark-base).",
      "url": "https://zhanglu.net/en/skills/lark-wiki"
    },
    {
      "type": "skill",
      "slug": "musk-perspective",
      "title": "musk-perspective",
      "text": "musk-perspective\nElon Musk's (Tesla / SpaceX / X / xAI / Boring / Neuralink founder, born 1971) brand and product judgment perspective.\nAn MBA panel judge, adept at autos / spaceflight / hardware platforms / founder bets / vertical integration / platform power / AI safety and other topics.\n\n## What it is\n\nElon Musk's (Tesla, SpaceX, X / Twitter, xAI, The Boring Company, Neuralink founder / CEO, born 1971) brand and product judgment perspective.\n\n## Distilled from\n\nPublic IAC talks, Tesla earnings calls, signature X threads, Walter Isaacson's biography, and long-form interview podcasts — distilled into a \"collide first principles with reality, backed by founder bets\" expressive DNA.\n\n## Use for\n\nAs a judge on the MBA `auto` panel, analyzing through Musk's lens:\n\n- Autos\n- Spaceflight\n- Hardware platforms\n- Founder collateral\n- Vertical integration\n- Platform power\n- AI safety and speech architecture\n\n## Explicit triggers\n\n\"use Musk's perspective,\" \"what would Musk think,\" \"how do you break this down from first principles,\" \"if Musk were a judge,\" \"from the Tesla / SpaceX founder's angle\"\n\n## Do not activate\n\n- Questions about Musk's private life / current whereabouts\n- Questions about specific facts on Tesla / SpaceX / X / xAI finances / deliveries / launches / political activity after 2025-Q4, without permission to verify online\n- Asking Musk to give a neutral score to Tesla / SpaceX / X / Twitter / xAI / Neuralink / Starlink / The Boring Company without declaring a conflict of interest, or without `--panel-drop musk` within MBA\n- Requests for fan-page hagiography / hit pieces (\"prove Musk is the worst\")",
      "url": "https://zhanglu.net/en/skills/musk-perspective"
    },
    {
      "type": "skill",
      "slug": "lark-workflow-meeting-summary",
      "title": "lark-workflow-meeting-summary",
      "text": "lark-workflow-meeting-summary\nMeeting-minutes roundup workflow: aggregate meeting minutes over a given time range and produce a structured report. Use when the user wants to tidy up meeting notes, generate a weekly meeting digest, or review what was discussed over a period.\n\nThis skill comes from the local `~/.claude/skills/lark-workflow-meeting-summary/SKILL.md` and is synced automatically by `pnpm run sync:skills`.\n\n## Description\n\nMeeting-minutes roundup workflow: aggregate meeting minutes over a given time range and produce a structured report. Use when the user wants to tidy up meeting notes, generate a weekly meeting digest, or review what was discussed over a period.",
      "url": "https://zhanglu.net/en/skills/lark-workflow-meeting-summary"
    },
    {
      "type": "skill",
      "slug": "research",
      "title": "research",
      "text": "research\nDeep research in the PRD methodology: Proposal → Baseline → parallel sub-agent team →\nauto stitch → Lead synthesis. Parallel multi-dimensional investigation maximizes\ninformation density, producing an actionable bilingual report.\n\n## Purpose\n\nA PRD-driven deep research skill. The pipeline:\n\n**Proposal → Baseline → parallel sub-agent team → auto stitch → Lead synthesis**\n\nFully orchestrate an agent team to run parallel, multi-dimensional investigation and\nmaximize information density.\n\n## When to use\n\nThe user wants to research any topic in depth:\n\n- Technical evaluation\n- Competitive analysis\n- Architecture decision\n- Trend investigation\n- Market research\n\n→ produces an actionable bilingual report\n\n## When not to use\n\n- Looking up a library's API docs → use `/context7`\n- Debugging → use `/tdd`\n- Framework selection → use `/framework-selection`\n\n## Trigger examples\n\n- `/research AI search architecture migration`\n- `/research compare Dify / Coze / Mars Agent`\n- `/research https://github.com/karpathy/autoresearch`\n- `/research livestream monetization trends 2026 --quick`",
      "url": "https://zhanglu.net/en/skills/research"
    },
    {
      "type": "skill",
      "slug": "sandbox-sdk",
      "title": "sandbox-sdk",
      "text": "sandbox-sdk\nBuild sandboxed applications for secure code execution.\nUse it for AI code execution, a code interpreter, CI / CD, interactive development\nenvironments, or running untrusted code.\n\n## Purpose\n\nBuild sandboxed applications on top of the Sandbox SDK for secure code execution.\n\n## When to use\n\n- Building AI code execution\n- A code interpreter\n- CI / CD systems\n- Interactive development environments\n- Running untrusted code\n\n## Coverage\n\nSandbox SDK lifecycle, commands, files, code interpreter, preview URLs.\n\n## Knowledge bias\n\nLean toward retrieving the Cloudflare docs rather than relying on pretrained knowledge.",
      "url": "https://zhanglu.net/en/skills/sandbox-sdk"
    },
    {
      "type": "skill",
      "slug": "turnstile-spin",
      "title": "turnstile-spin",
      "text": "turnstile-spin\nWire up Cloudflare Turnstile end-to-end in a project.\nScan the codebase → call the Cloudflare API to create a widget → deploy a managed\nsiteverify Worker → write the frontend snippet → verify → freeze the skill.\n\n## Purpose\n\nWire up Cloudflare Turnstile end-to-end in a project.\n\n## What it does\n\n1. Scan the codebase\n2. Call the Cloudflare API to create a widget\n3. Deploy a managed siteverify Worker\n4. Write the frontend snippet\n5. Verify\n6. Freeze the skill\n\n## When to load\n\n- Adding Turnstile\n- Setting up a CAPTCHA\n- Protecting a form against bots\n- Fixing a Turnstile integration\n\n## Reference\n\nMirrors [developers.cloudflare.com/turnstile/spin](https://developers.cloudflare.com/turnstile/spin).",
      "url": "https://zhanglu.net/en/skills/turnstile-spin"
    },
    {
      "type": "skill",
      "slug": "web-perf",
      "title": "web-perf",
      "text": "web-perf\nAnalyze web performance with Chrome DevTools MCP.\nMeasure Core Web Vitals (LCP, INP, CLS) plus supporting metrics (FCP, TBT, Speed Index),\nand hunt for render-blocking, network dependency chains, layout shifts, caching and\naccessibility issues.\n\n## Purpose\n\nAnalyze web performance with Chrome DevTools MCP.\n\n## What it measures\n\n- **Core Web Vitals**: LCP, INP, CLS\n- **Supporting metrics**: FCP, TBT, Speed Index\n\n## What it looks for\n\n- Render-blocking resources\n- Network dependency chains\n- Layout shifts\n- Caching issues\n- Accessibility gaps\n\n## When to use\n\nAuditing, profiling, debugging, or optimizing page load performance, Lighthouse scores, or site speed.\n\n## Knowledge bias\n\nLean toward retrieving the latest docs rather than relying on pretrained knowledge.",
      "url": "https://zhanglu.net/en/skills/web-perf"
    },
    {
      "type": "skill",
      "slug": "workers-best-practices",
      "title": "workers-best-practices",
      "text": "workers-best-practices\nReview and write Cloudflare Workers code following production best practices.\nUse when writing a new Worker, reviewing a Worker, configuring wrangler.jsonc, or checking common anti-patterns (streaming, floating promises, global state, secrets, bindings, observability).\n\n## Purpose\n\nReview and write Cloudflare Workers code following production best practices.\n\n## When to load\n\n- Writing a new Worker\n- Reviewing Worker code\n- Configuring `wrangler.jsonc`\n- Checking common Workers anti-patterns\n\n## Anti-patterns to watch for\n\n- streaming\n- floating promises\n- global state\n- secret handling\n- bindings\n- observability\n\n## Knowledge preference\n\nPrefers retrieving Cloudflare docs over relying on pre-trained knowledge.",
      "url": "https://zhanglu.net/en/skills/workers-best-practices"
    },
    {
      "type": "skill",
      "slug": "wrangler",
      "title": "wrangler",
      "text": "wrangler\nCloudflare Workers CLI.\nDeploy, develop, and manage Workers / KV / R2 / D1 / Vectorize / Hyperdrive / Workers AI / Containers / Queues / Workflows / Pipelines / Secrets Store.\n\n## Purpose\n\nThe CLI tool for Cloudflare Workers.\n\n## Coverage\n\nDeploy, develop, and manage:\n\n- Workers\n- KV\n- R2\n- D1\n- Vectorize\n- Hyperdrive\n- Workers AI\n- Containers\n- Queues\n- Workflows\n- Pipelines\n- Secrets Store\n\n## When to load\n\nLoad before running wrangler commands to ensure correct syntax and adherence to best practices.\n\n## Knowledge preference\n\nPrefers retrieving Cloudflare docs over relying on pre-trained knowledge.",
      "url": "https://zhanglu.net/en/skills/wrangler"
    },
    {
      "type": "skill",
      "slug": "zhanglu",
      "title": "zhanglu",
      "text": "zhanglu\nLook up Zhang Lu's projects, presentations, article entry points, public weeklies and local Claude Skill index\non zhanglu.net — no scraping; go through the static JSON API (/api/*.json) generated at build time,\nzero SDK and zero tokens on the agent side. Bilingual: Chinese under /api/*, English under /en/api/*.\n\nWhen to use:\n- user asks \"what skills does Zhang Lu have\" / \"how do I use the boss skill on zhanglu\" / \"what projects is Zhang Lu working on\"\n- user wants to cite content on zhanglu.net (article entries, project intros, skill descriptions, weeklies)\n- an agent (Claude Code / Codex / Hermes / OpenClaw) needs zhanglu's structured data\n\nActions (highest priority first):\n1) curl the site's `/api/*.json` directly — endpoints listed at https://zhanglu.net/llms.txt (most reliable, always available)\n2) use the CLI `npx zhanglu-net <cmd>` — package name zhanglu-net, zero dependencies\n   (the npm name zhanglu was already taken, so the package matches the domain instead)\n\nCommon calls:\n- `npx zhanglu-net list skills [--featured] [--source local|plugin|custom]`\n- `npx zhanglu-net get skill <slug> [--md]` — a single skill's description + body\n- `npx zhanglu-net list projects [--featured] [--status live|beta|wip|archived]`\n- `npx zhanglu-net get project <slug>`\n- `npx zhanglu-net list articles [--source wechat|blog|...] [--since YYYY-MM-DD]`\n- `npx zhanglu-net list presentations` / `list weekly` / `get weekly <slug>`\n- `npx zhanglu-net search \"<keyword>\" [--type skill|project|article|presentation|weekly]`\n- `npx zhanglu-net about` / `social` / `endpoints` / `version`\n- add `--lang en` for English data (or `ZHANGLU_LANG=en`); add `--base http://localhost:4321` for local dev\n\nEndpoints (plain curl works; prefix the path with /en for English):\n- GET /api/index.json   — manifest with counts, every endpoint, and cross-language links\n- GET /api/skills.json  — full skill index (description / source / featured / handwritten)\n- GET /api/skills/{slug}.json  — one skill in full (includes body_md and a ready-to-write skill_md)\n- GET /api/projects.json / /api/projects/{slug}.json\n- GET /api/articles.json / /api/presentations.json\n- GET /api/weekly.json / /api/weekly/{slug}.json\n- GET /api/about.json / /api/social.json\n- GET /api/search.json  — flat corpus [{type, slug, title, text, url}] for local substring search\n\nOutput is human-readable by default; add `--json` when an agent wants raw JSON.\n\nNot for:\n- general web scraping (use WebFetch)\n- WeChat Official Account article bodies (zhanglu.net only stores entry links; the body lives on\n  mp.weixin.qq.com, which blocks crawlers — WebFetch can't get it either)\n- real file paths under Zhang Lu's local ~/.claude/skills/ (this skill only sees what zhanglu.net publishes)\n\nExplicit triggers: \"look up Zhang Lu's skills\", \"the X on zhanglu\", \"show me what's on zhanglu.net\",\n\"npx zhanglu-net\", \"what projects is Zhang Lu working on\".\n\n## What it's for\n\nRead zhanglu.net as a **structured data source** rather than scraping it as a web page. At build time the\nsite renders every markdown file into both an HTML page and a JSON endpoint, so an agent always gets clean\nfields — no DOM parsing, and no breakage when the design changes.\n\n## When to use it\n\n- You need to cite anything on zhanglu.net (project / article / presentation / weekly / skill)\n- You want to know which Claude Skills Zhang Lu runs locally, or how a given skill's description is written\n- You need the English data (`--lang en`, or read `/en/api/*.json` directly)\n\n## How to use it\n\nEasiest path:\n\n```bash\nnpx zhanglu-net list skills --featured\nnpx zhanglu-net get project boss --json\nnpx zhanglu-net --lang en search \"brand judgment\"\n```\n\nNothing to install — just curl:\n\n```bash\ncurl -s https://zhanglu.net/api/index.json      # manifest; follow it to the next hop\ncurl -s https://zhanglu.net/api/search.json     # whole-site corpus for local substring search\n```\n\nInstall this skill on your own machine (the `skill_md` field is a complete SKILL.md with frontmatter already assembled):\n\n```bash\nmkdir -p ~/.claude/skills/zhanglu\ncurl -s https://zhanglu.net/api/skills/zhanglu.json | jq -r .skill_md > ~/.claude/skills/zhanglu/SKILL.md\n```\n\n## Not for\n\n- Fetching WeChat article bodies — the site only holds entry links; the body lives on mp.weixin.qq.com, which blocks crawlers\n- Using as a general-purpose web scraper — that's WebFetch's job\n- Expecting it to mirror the live state of the local `~/.claude/skills/` — the site is a snapshot of the last `pnpm run sync:skills`",
      "url": "https://zhanglu.net/en/skills/zhanglu"
    },
    {
      "type": "weekly",
      "slug": "2026-w29",
      "title": "What I Shipped This Week",
      "text": "What I Shipped This Week\n2026-W29\n2026-07-13 → 07-19\nThree decision-agent products each shipped a major release (MBA v0.6 / Boss v1.18 / OAF v0.43), and the personal site stood up its core narrative — \"designed for AI-native organizations.\"\n## Three products, three major releases in one week\n\n### 🎯 MBA · A brand-influence audit for CMOs (mbabrand.com) — v0.6\n\n- **Grew from \"brand monitoring\" into a \"relationship universe\"**: brand + founder + industry + portfolio. In one week it took in NVIDIA / Apple / Google / Microsoft / Amazon / Huawei / DeepSeek / Tesla / Palantir (each with a full audit report + founder dossier).\n- **Founder Dinner**: seat two founders at one table and play out a collaboration through 5 lenses (e.g. Liang Wenfeng × Jensen Huang, \"chips and models\"; an AI-generated scenario, not a real partnership).\n- **Sentiment monitoring turned into a fully automated loop**: discover candidate events daily → LLM pre-classification → one-click adoption into the store → trigger a brand re-audit.\n- Companion pieces: a full-dimension knowledge star map, a sentiment cockpit, and tiered Feishu alerts.\n\n### 🧭 Boss · A decision agent for CEOs → a strategy OS (bossagent.cc) — v1.18\n\n- **Upgraded from \"reviewing one topic\" into a \"strategy OS\"**: instead of just scoring a single judgment, it strings judgments into an **organizational loop** — decision capture → action ledger → due-date follow-up (T+7 / T+30) → retrospective. For the first time, judgment becomes an asset that accumulates and can be reviewed.\n- **The judge system opened up**: a public \"Judges Panorama\" page where each judge's doctrine can be inspected; a dedicated strategy-OS methodology page went live.\n- **Public case library**: topics submitted by visitors and their judgment reports are kept public for a period, for later readers to browse.\n\n### 📊 OAF · An AI research workbench for CFOs (oaf.world) — v0.43 (about 14 releases in a week)\n\n- **The dashboard went from read-only to an \"explorable cockpit\"**: global slicing, cross-panel linkage, drill-down, deep links, ⌘K search, custom watchlists, and comparison mode.\n- **Conversational research got real**: ask anything casually, and the LLM only does intent routing — data retrieval is handed to deterministic tools, so it never fabricates a number.\n- **Satellite-internet topic cluster**: four deep dashboards for SpaceX / GalaxySpace·Qianfan / China SatNet / the constellation race, plus real-time alerts on industry moves.\n- **A live homepage**: connected to a real-time backend + live candlestick quotes (US stocks / A-shares / satellite internet, with \"since IPO\" long series).\n\n## One through-line: designed for AI-native organizations\n\nThe three products serve different functions (CMO / CEO / CFO), but underneath they share one skeleton: **multiple judges deliberating independently → scorable and falsifiable → versioned + attribution-checked → anti-fabrication**. As an organization hands more and more execution to agents, top-level judgment should also grow on the same traceable foundation, rather than continuing to run on \"gut feel.\"\n\nMBA automates brand judgment, Boss distills decisions into an organizational loop, and OAF makes research judgment real-time — **three seats, one skeleton**.\n\n## Along the way: articulating this through-line (zhanglu.net)\n\n- Launched a new **C-suite feature** (including the logo \"three arcs and a dot, one seal,\" a brand page, and a long essay on the design philosophy), putting the shared philosophy of the trio side by side.\n- Gave each project a **website screenshot + source line count + target audience** annotation; also dug up **past work** from 20-plus years ago — a few Chinese personal websites made in 1999–2007, rebuilt as static sites and preserved for good.\n\n> This week in one line: the products keep making \"judgment\" more automated and more traceable; and for the first time I put \"why I'm building these three\" into a single sentence.",
      "url": "https://zhanglu.net/en/weekly/2026-w29"
    },
    {
      "type": "weekly",
      "slug": "2026-w30",
      "title": "What I Shipped This Week",
      "text": "What I Shipped This Week\n2026-W30\n2026-07-20 → 07-26\nThe personal site moved from a Chinese portfolio into a bilingual, machine-readable, explainable, and partly automated web system: English pages, agent APIs, architecture docs, skills sync, and v0.3.0 all landed this week.\n## The through-line: turning the site into a system for both people and agents\n\nThis week was not just about adding pages. It moved zhanglu.net from a personal project collection toward a more complete web system: Chinese by default, English in parallel, HTML for people, JSON / CLI for agents, architecture explained with diagrams, and a first automation path for keeping local content snapshots current.\n\n## The full English site shipped\n\nThe largest engineering change was the full English version. Chinese stays at `/`; English lives under `/en/`. First-time visitors can be routed by browser language, and the header keeps a manual language switch.\n\nThis was not a homepage translation. The projects, articles, presentations, skills, and weekly collections all gained English parallel collections, with mirrored pages, hreflang links, language-specific RSS, and sitemap support. In content terms, 48 English content files were added; in page terms, the site built 53 pages per language.\n\nThe tradeoff is clear: every future content change needs a Chinese and English counterpart. In exchange, the structure stays explicit, and the Chinese pages do not need scattered filters to avoid mixing languages.\n\n## The agent access layer became real\n\nThe machine-readable layer also filled out this week:\n\n- `/api/weekly.json` and bilingual weekly detail APIs were added, so weekly notes enter the search corpus too.\n- The agent CLI was published to npm, letting agents use `npx zhanglu-net` to list and fetch projects, articles, skills, weekly notes, and more.\n- `/agents` and `/en/agents` gained access and permission guidance: bots may read and cite the site, but should not use it for training.\n- README and `llms.txt` were aligned with the real endpoint set instead of only serving browser readers.\n\nThe point is that site content no longer has to be scraped from HTML. People get pages; agents get structured JSON or a zero-dependency CLI. The field shape lives in `src/lib/api.ts`, which keeps pages, RSS, CLI output, and search from drifting into separate truths.\n\n## Architecture became part of the site\n\nWhen the user asked how the whole website works, the answer became both documentation and a page: `docs/architecture.md`, `/how-it-works`, and `/en/how-it-works`.\n\nThe page explains the flow from content files to Zod schemas, Astro build output, pages, JSON endpoints, RSS, sitemap, and CLI consumption. More importantly, many of its counts are computed during build, such as collection counts, endpoint types, and generated JSON files, so the documentation does not go stale the moment the site changes.\n\nThe page also gained homepage and navigation entries, making the operating model visible to future maintainers instead of hiding it in repository memory.\n\n## Skills sync got its first automation loop\n\nThe week also clarified a hidden truth about `/skills`: Cloudflare Pages cannot see the user's local `~/.claude/skills/`, so the public page is only the last manually synced and pushed snapshot.\n\nTo make that manageable, the repo gained:\n\n- `pnpm run sync:check`: a read-only drift check between local skills and the repository snapshot.\n- `pnpm run sync:auto`: sync, validate, build, commit, and push in one flow.\n- `scripts/auto-sync-skills.sh`: a launchd / cron-friendly entrypoint.\n- Detailed notes in `AGENTS.md` about launchd setup, the zsh inline-comment trap, and stdout / stderr debugging.\n\nThis mechanism later exposed deeper safety issues, but the W30 milestone was important: the site now had its first path from a local source of truth to repository snapshot to public deployment.\n\n## Release and documentation cleanup\n\nThe site version moved to v0.3.0. `CHANGELOG.md` now records the bilingual site, C-suite feature, agent access layer, CLI, real 404 behavior, Content-Signal stance, and development-discipline work. README, AGENTS, and `/agents` were brought into line with the current site.\n\nThis week in one line: zhanglu.net stopped being only a portfolio page and became a small, explainable, agent-readable web infrastructure.",
      "url": "https://zhanglu.net/en/weekly/2026-w30"
    },
    {
      "type": "weekly",
      "slug": "2026-w31",
      "title": "What I Shipped This Week",
      "text": "What I Shipped This Week\n2026-W31\n2026-07-27 → 08-02\nThis week first tightened the safety and consistency boundaries around skills sync, then added four new projects, four long-form essays, and an MDX-based writing path to the personal site.\n## The through-line: tighten the boundary, then grow the content\n\nW31 had two halves. The first half fixed incidents exposed by automated skills sync. The second half expanded the site with new projects and essays. One side was about safety; the other was about growth. Together, they kept the public site richer without letting it drift out of control.\n\n## Skills sync incident fixes\n\nThe July 26 and July 27 automatic runs proved that the sync mechanism worked, but they also exposed three problems.\n\nFirst, the old `--prune` path treated \"the directory exists but cannot be read\" as \"this skill was deleted locally.\" That caused broken symlinks or missing SKILL.md files to be pruned, including the site's own `zhanglu` skill. The fix added a `present` set: if a directory exists, it is never automatically pruned; unreadable entries are reported separately.\n\nSecond, 17 internal-service `aic-*` skills were synced to the public site, and their descriptions contained internal service responsibilities and module boundaries. The fix added `EXCLUDE = ['aic-*']` to `sync-skills.mjs`, matching both directory slugs and frontmatter `name`; excluded entries are not written, and any repository remnants are removed.\n\nThird, Chinese skills grew while the English side lacked matching files, and the build still passed. That made `/skills` and `/en/skills` silently inconsistent. After the fix, `sync:auto` exits with failure when Chinese and English collections are not aligned. A warning that can still deploy is not a real guardrail.\n\nThe cleanup also restored `/skills/zhanglu`, added a `skill_md` field to skill detail APIs so the README installer can generate a valid `SKILL.md`, and replaced stale `mba` examples with the still-present `boss` skill.\n\n## The rules for removing public content became explicit\n\nAfter the skills cleanup, production verification found a subtler issue: URLs deleted from the repository could still return old 200 pages. Further checks traced this to Cloudflare serving old copies, not to a failed build.\n\nThat rule is now documented in `AGENTS.md`: for any takedown or content-removal change, verification must include the old URLs, and Cloudflare purge may be required. Additions and edits usually deploy cleanly; deletions have an extra acceptance step.\n\n## The auto-sync script learned how to update itself\n\nThe July 28 automatic sync exposed a lower-level bug. `auto-sync-skills.sh` begins by fast-forwarding to the latest remote code. If that merge replaces the script file itself, bash can continue reading the new file from the old byte offset, causing later logic to misfire.\n\nThe fix compares the script's md5 before and after the merge. If the file changed, it re-execs itself once with `ZHANGLU_REEXEC=1`. That makes future changes to the automation script take effect on the next run instead of getting caught between the old process and the new file.\n\n## Four new projects entered the site\n\nThe second half of the week added four projects, each with Chinese and English content, detail pages, JSON endpoints, and covers:\n\n- SiliconForge: requirements in, software out; turn business intent into a machine-readable PRD, then let an AI team implement and verify it.\n- excel-ai-analyst: treat complex spreadsheets as undocumented legacy systems, starting with a browser-local structural analysis.\n- AI Achievement Interview: use a 1-2 minute voice interview, adaptive follow-ups, and one scoring ruler to reduce review distortion.\n- BRAIN / 27 Opportunity Radar: a PhD / joint-program / research-assistant / campus-hiring radar for brain science x AI candidates graduating in 2027.\n\nThe project entries kept each site's stated boundaries instead of pretending demos are production systems: two-stage delivery labels, browser-local analysis limits, static snapshots, and \"official announcements first\" all stayed in the copy.\n\n## Four essays and the MDX writing path\n\nEach of the four new sites then got a bilingual long-form essay, and new essays moved to MDX.\n\nOlder long posts were hand-written `.astro` files with lots of HTML. The new path adds `src/layouts/Post.astro`, while each article uses `.mdx` with markdown body text and frontmatter pointing to the layout. Going forward, an on-site essay needs one `.mdx` page plus one articles index entry; `/posts` is derived from the articles collection instead of a hand-maintained array.\n\nThe four essays each start from a concrete problem:\n\n- SiliconForge: why \"AI writes code\" should not only serve developers.\n- excel-ai-analyst: why a years-old spreadsheet is really an undocumented legacy codebase.\n- AI Achievement Interview: how to make people who do not present well visible.\n- BRAIN Radar: why the scarce thing is not a list of opportunities, but their ordering.\n\nThis week in one line: the public site can keep growing, but every growth step has to preserve boundaries, bilingual alignment, machine-readable APIs, and verifiable deployment.",
      "url": "https://zhanglu.net/en/weekly/2026-w31"
    }
  ]
}