用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/QianJinGuo/wiki --skill wiki-frontmatter-fence-repair命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
精选高价值 RSS feeds 扫描,输出到 raw/rss-inbox/ 暂存区。只保留有独立知识深度的 feed(非 digest 类),不再自动入库。包含 rss-inbox-curl-recovery.py 绕过 blogwatcher read-state 漏抓的兜底。
Meta-orchestrator that wires web-content-reviewer, llm-wiki, and wiki-evolver into a single four-phase knowledge pipeline (Triage → Gate → Store → Evolve). Use as the single entry point for all knowledge base operations. Includes a 6-URL-validated user-pasted WeChat URL fast path, three-axis dedup decision matrix (NEW/MERGE/DEDUP), orphan-raw detection protocol, and sibling-subagent race V7 evidence, and a two-variant V6 mid-write fix for matching vs different-slug duplicates.
从 Gmail 中提取 TLDR AI 等 newsletter 的链接,写入 raw/email-inbox/candidates.md,供后续 inbox-screener 评分。只做链接不做评分,与 inbox-screener 配合使用。
基于 SOC 职业分类
正在显示 SKILL.md
| name | wiki-frontmatter-fence-repair |
| description | Restore YAML frontmatter fences stripped by bulk wiki edits. |
| category | wiki |
Lint jumps from 0 to dozens/hundreds of NO FRONTMATTER: entities/... errors (and
NO FRONTMATTER on raw article: ... warnings) after a bulk write operation (a backfill
script, batch ingest, source_url rewrite). The YAML frontmatter CONTENT is intact but
the --- delimiters are gone.
scripts/wiki-lint.mjs uses:
const FM_RE = /^---\n([\s\S]*?)\n---/;
readFrontmatter() does content.match(FM_RE). The ^ anchor means a file MUST start
with the opening --- on line 1. If a bulk script strips BOTH the opening AND closing
--- fences (e.g. re-emits the YAML block without delimiters), the file starts with
source_url:/title:/type: directly → regex fails → readFrontmatter returns null
→ NO FRONTMATTER.
---; first line is a YAML key.--- delimiters are gone.git diff typically shows BOTH a value backfill (e.g. empty source_url: " → real URL)
AND the --- lines removed.Do NOT blanket-rewrite all modified files. Operate only on files lint flags, so legitimate fence-free files (Dashboard.md, hot-context.md cache, etc.) stay untouched.
Handles two boundary shapes a naive "insert at first blank line" misses:
# heading / text).lines = content.split('\n')
if lines[0] === '---': already has opening fence → skip
skip leading blank lines
start = first non-blank line; require it matches /^[A-Za-z_][\w-]*:/ (YAML key)
end = run of lines matching KEY_RE OR list-item /^\s*- /
FM block = lines[start..end]
rebuild = ['---', ...FM, '---', ...body(lines[end..])]
Key REs:
KEY_RE = /^[A-Za-z_][\w-]*:/LIST_RE = /^\s*- / (for sources: list items)process.exit(ec>0 ? 1:0) when errors exist. Wrap in try/catch and read e.stdout:
try { out = execSync("node scripts/wiki-lint.mjs . 2>&1", {maxBuffer:1e8}).toString(); }
catch (e) { out = e.stdout ? e.stdout.toString() : ''; }
entities/antidoom,
raw/articles/foo). Build the path as ${slug}.md — do NOT prepend the dir again
(entities/${slug}.md double-prefixes and fixes 0 files).git diff <file> should show ONLY the
intended backfill plus restored fences — no content corruption. Lint must return to 0.git checkout.218 files (114 entity errors + 104 raw warnings) all from one source_url backfill that stripped fences. Restored all 218 → lint back to 0 errors. Warning count also dropped (320 → 209) because the 114 raw NO FRONTMATTER warnings resolved too.
obsidian-wiki-lint and wiki-maintenance cover other lint repair patterns
(broken wikilinks, missing CLOSING ---, tag corruption). This skill is the specific
"both fences stripped at scale" recovery. Prefer patching those if they become
curator-managed.