Skip to content
Documentation
Skill

/pages

Browse, open, or print distilled pages, reusing the `wenlan pages` CLI for the actual open (one implementation on your PATH, no setup). `/wenlan pages <query>` opens the page when one matches, or shows a small native picker when 2-4 match. `/wenlan pages <query> --print` reads

From plugin
wenlan
9421 skills3 agents1 MCP

Claude Code

$ npx -y skills add wenlan-app/wenlan --skill pages --agent claude-code

SKILL.md

pages.SKILL.md
name: pages
description: >
  Browse, open, or print distilled pages, reusing the `wenlan pages` CLI for the
  actual open (one implementation on your PATH, no setup). `/wenlan pages <query>` opens
  the page when one matches, or shows a small native picker when 2-4 match.
  `/wenlan pages <query> --print` reads the page here instead of opening an editor.
  `/wenlan pages` lists recent pages. Invoked as `/wenlan pages [query] [--print]`.
argument-hint: "[query] [--print]"
allowed-tools: ["Bash", "AskUserQuestion", "mcp__plugin_wenlan_wenlan__get_page_revisions"]
user-invocable: false

/wenlan pages

Open a distilled page fast. The **`wenlan pages`** CLI does the open (one local command on your PATH — nothing to register, source, or install). This skill only adds a small native picker for the ambiguous case.

**Do not read a page body unless the user asks to see it here. Never render a metadata card.** By default resolve by title / filename only — the file opens in your editor, which renders and searches it better than chat. Keeping bodies out is what keeps this cheap. The one exception is `--print` below.

Resolve the binary once (the agent shell's PATH may omit `~/.wenlan/bin`):

W="$(command -v wenlan || echo "$HOME/.wenlan/bin/wenlan")"

`/wenlan pages <query>` — open, or pick when ambiguous

Run ONE Bash block **with the command sandbox DISABLED** (opening calls the OS launcher `open`/`xdg-open`, which a sandboxed shell can't reach, and would else fail with `kLSUnknownErr`):

W="$(command -v wenlan || echo "$HOME/.wenlan/bin/wenlan")"
"$W" pages "<query>"

Act on its output — do NOT re-fetch, list again, or read bodies:

  • **`Opened <path>`** → one page matched and is now open. Print that line. Done.
  • **`no page matches: …`** → print it; suggest `/wenlan steep <query>`.
  • **`N matches for … `** followed by `title · filename` lines → several matched:
  • **2-4 matches** → present them with `AskUserQuestion`, one option each:

**label** = title, **description** = filename (titles can repeat, so the filename is the real handle). On pick, open it:

    "$W" pages "<picked-filename>"

Print the `Opened` line it returns.

  • **more than 4 matches** → print the list verbatim and ask the user to narrow

the query or pass one of the filenames. No picker — it can't show more than 4.

The picker stays small by construction: ≤4 short options, no page bodies, and the open is a single CLI call that prints one line.

`/wenlan pages <query> --print` — read it here

When the user passes `--print`, or asks to see the page in chat because there is no editor or GUI at hand, print instead of opening. Sandbox can stay on; nothing launches:

W="$(command -v wenlan || echo "$HOME/.wenlan/bin/wenlan")"
"$W" pages "<query>" --print

It prints the matched page's text followed by its sources. Show that output. The `N matches` and `no page matches` cases work exactly as above; once one filename is chosen, rerun with it and `--print`.

`/wenlan pages` — list recent

W="$(command -v wenlan || echo "$HOME/.wenlan/bin/wenlan")"
"$W" --format table pages

Prints the newest ~20 titles (CLI-capped; `--limit 0` for all). Show them and tell the user to `/wenlan pages <query>` to open one. No picker over the whole set — that's the lossy, 4-cap case the CLI list avoids.

If `wenlan` is not found, tell the user to run `/wenlan`; the CLI is not installed.

Explicit changelog lookup

Only when the user explicitly asks for a page's changelog or version history, resolve its stable id without reading the page body. Resolve the page ID first with `wenlan pages "<query-or-filename>" --resolve-id`.

"$W" pages "<query-or-filename>" --resolve-id

If several pages match, use the same picker/narrowing flow above and rerun with the selected filename. Then call `get_page_revisions(page_id="<resolved-id>")`. Do not fetch changelogs during ordinary `/wenlan pages` list/open flows.

When NOT to use

  • Organizing existing pages, folders, or navigation → use `/wenlan steep`

with the complete goal and constraints.

  • Raw memory lookups → `/recall`.
  • Synthesize a new page → `/wenlan steep`.
Read more
@7xuanlu
Ships withwenlan

Open-source Obsidian alternative that works with your existing vault. The knowledge base you don't have to maintain: your AI tools keep it organized and up to date, with no API keys or plugins to set up. For you and your team.

9421 skills3 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
94
Star history of 7xuanlu/wenlan on GitHub, a chart by star-history.com

Other skills on wenlan.

prove

prove

Per-surface verification loops for wenlan — daemon, cli, mcp, plugin, suite strength (mutation), behavior trace, weekly sweep.…

@7xuanlu@7xuanluInstall Skill
run-wenlan-app

run-wenlan-app

Build, launch, screenshot, and drive the wenlan-app Tauri desktop app in dev mode on macOS (WKWebView) or Windows (WebView2). Use…

@7xuanlu@7xuanluInstall Skill
run-wenlan

run-wenlan

Build, launch, and stop the wenlan daemon (wenlan-server) for local dev and verification. Use when asked to run or restart the…

@7xuanlu@7xuanluInstall Skill
verify

verify

Drive/evidence recipe for verifying wenlan changes at their real surfaces (daemon HTTP, CLI, MCP stdio). The handle file the…

@7xuanlu@7xuanluInstall Skill
wenlan-brief

wenlan-brief

Read the current Space-owned project Brief from Wenlan. With an optional topic, appends separately labeled related context from…

@7xuanlu@7xuanluInstall Skill
wenlan-capture

wenlan-capture

Save a memory to Wenlan in flow, or save something from this conversation as one note when the user asks for a note. Use…

@7xuanlu@7xuanluInstall Skill

More skills from other plugins.

context7-cli

context7-cli

Use the ctx7 CLI to fetch library documentation and configure Context7 MCP. Activate when the user mentions "ctx7" or "context7",…

context712d64k
@upstash@upstashInstall Skill
docs-components

docs-components

Comprehensive MDX component patterns (Note, Pitfall, DeepDive, Recipes, etc.) for all documentation types. Authoritative source…

@reactjs@reactjsInstall Skill
codebase-wiki

codebase-wiki

How to work in a Codebase Wiki project (the `codebase-wiki` starter pack): an agent-authored, source-grounded wiki of the…

@inkeep@inkeepInstall Skill

Questions about pages.

Which coding agents can use pages?
pages installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.