add-feishu
Add Feishu (飞书/Lark) as a channel. Uses WebSocket long connection mode — no public URL needed. Bot responds to all messages (no…
Publish Markdown articles to Zsxq (知识星球) as drafts. Use when user wants to publish a Markdown file to Zsxq, or mentions "发布到知识星球", "星球文章", "zsxq article". Handles Markdown content input and saves as draft (never auto-publish).
$ npx -y skills add sugarforever/01coder-agent-skills --skill publish-zsxq-article --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/publish-zsxq-articleContext preview
The summary Claude sees to decide when to auto-load this skill.
Publish Markdown articles to Zsxq (知识星球) as drafts. Use when user wants to publish a Markdown file to Zsxq, or mentions "发布到知识星球", "星球文章", "zsxq article". Handles Markdown content input and saves as draft (never auto-publish).
name: publish-zsxq-article description: Publish Markdown articles to Zsxq (知识星球) as drafts. Use when user wants to publish a Markdown file to Zsxq, or mentions "发布到知识星球", "星球文章", "zsxq article". Handles Markdown content input and saves as draft (never auto-publish).
Publish Markdown content to Zsxq (知识星球) article editor in Markdown mode, saving as draft for user review before publishing.
This skill works with both Chrome DevTools MCP and Playwright MCP:
| Action | Chrome DevTools MCP | Playwright MCP | |--------|---------------------|----------------| | Navigate | `navigate_page` | `browser_navigate` | | Take snapshot | `take_snapshot` | `browser_snapshot` | | Take screenshot | `take_screenshot` | `browser_take_screenshot` | | Click element | `click` | `browser_click` | | Fill text | `fill` | `browser_type` | | Upload file | `upload_file` | `browser_file_upload` | | Press key | `press_key` | `browser_press_key` | | Evaluate JS | `evaluate_script` | `browser_evaluate` |
**Priority**: Default to **Playwright MCP**. Use Chrome DevTools MCP only when Playwright MCP is unavailable.
**Detection**: At runtime, prefer `mcp__playwright__browser_navigate`. Fall back to `mcp__chrome-devtools__navigate_page` only if Playwright tools are not available.
The Zsxq group ID is required to navigate to the article editor (the `groupId=` URL parameter). **Do not hardcode a default.**
Before any navigation, resolve the group ID in this order:
1. **Skill argument** — if the user invoked the skill with a group ID, use it. 2. **Environment variable** — check `ZSXQ_GROUP_ID` (optional, for users who publish repeatedly to the same group). 3. **Prompt the user** if neither is available: > 请提供知识星球的 group ID(在星球 URL 里 `groupId=` 之后那串数字)。
Do not proceed to Step 2 (Navigate) without a resolved group ID.
The Zsxq article editor has two modes:
**IMPORTANT: Content Insertion Method** The Milkdown editor requires content to be inserted via **paste event**, NOT direct fill:
Read the Markdown file and extract:
# Read the markdown file cat /path/to/article.md
# Navigate to the article editor with the resolved group ID (see Group ID Resolution above)
navigate_page: https://wx.zsxq.com/article?groupId={groupId}If not logged in, the page will redirect to login. Prompt user to log in manually:
请先登录知识星球,登录完成后告诉我。 Login URL: https://wx.zsxq.com/login
After page loads, check if already in Markdown mode by looking for "切换到富文本模式" text.
If in Rich Text mode (shows "切换到 Markdown 模式"): 1. Click "切换到 Markdown 模式 (内测)" 2. Confirm the dialog by clicking "确定"
// Check current mode
const switchBtn = document.querySelector('[class*="switch"]');
if (switchBtn && switchBtn.innerText.includes('切换到 Markdown')) {
// Need to switch to Markdown mode
}1. Find the title textbox with placeholder "请在这里输入标题" 2. Click to focus 3. Type the title
click: title textbox fill: title textbox with article title
**CRITICAL: Do NOT use `fill` tool** - it inserts plain text without Markdown rendering.
Instead, use `evaluate_script` to simulate a paste event:
// Simulate paste event to trigger Milkdown's Markdown parsing
() => {
const markdownContent = `YOUR_MARKDOWN_CONTENT_HERE`;
const editorEl = document.querySelector('.ProseMirror');
if (!editorEl) return { error: 'Editor not found' };
// Focus the editor
editorEl.focus();
// Create and dispatch paste event
const clipboardData = new DataTransfer();
clipboardData.setData('text/plain', markdownContent);
const pasteEvent = new ClipboardEvent('paste', {
bubbles: true,
cancelable: true,
clipboardData: clipboardData
});
editorEl.dispatchEvent(pasteEvent);
return { success: true, charCount: markdownContent.length };
}This method: 1. Creates a ClipboardEvent with the Markdown content 2. Dispatches it to the ProseMirror editor 3. Milkdown's paste handler parses and renders the Markdown
1. Click "添加标签" 2. Enter tag text 3. Confirm
**IMPORTANT: Always save as draft, NEVER click "发布" (Publish)**
1. Click "
A marketplace of agent skills by VerySmallWoods — content creation, publishing, analytics, and security scanning. Works with Claude Code, Codex, Cursor, Windsurf, and any other coding agent that supports the skills.sh format.
Add Feishu (飞书/Lark) as a channel. Uses WebSocket long connection mode — no public URL needed. Bot responds to all messages (no…
Manage Claude Code session transcripts from local JSONL storage, including listing candidate sessions, exporting full or selected…
Use when an agent needs to delegate a task to the OpenAI Codex CLI from another agent environment such as Claude Code, OpenClaw,…
Manage local Codex session transcripts, including listing candidate sessions, exporting full or selected sessions to organized…
Design typography-driven video cover images using HTML/CSS + Chrome DevTools screenshot. Generates covers in all needed aspect…
Generate elegant cover images for articles. Analyzes content and creates eye-catching hand-drawn style cover images with multiple…