LLM Wiki
lewislulu/llm-wiki-skill
Build and maintain a Karpathy-style LLM knowledge base — a self-compiling Obsidian markdown wiki where an Agent ingests raw sources, compiles cross-linked concept/entity/summary pages, answers…
Reads yesterday's AI conversations, identifies one thinking blind spot, picks a WeRead book chapter to address it and writes an analysis note.
SKILL.md written in Chinese; this summary is our English description.
$ npx skills add lijigang/ljg-skills --skill ljg-blind -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install lijigang/ljg-skills ljg-blind --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/lijigang/ljg-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ljg-blind .claude/skills/ljg-blind && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ljg-blind" agent skill from https://github.com/lijigang/ljg-skills/tree/master/skills/ljg-blind into .claude/skills/ljg-blind/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ljg-blind", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/lijigang/ljg-skills/tree/master/skills/ljg-blindType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add lijigang/ljg-skills --skill ljg-blind -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install lijigang/ljg-skills ljg-blind --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lijigang/ljg-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/ljg-blind .agents/skills/ljg-blind && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ljg-blind" agent skill from https://github.com/lijigang/ljg-skills/tree/master/skills/ljg-blind into .agents/skills/ljg-blind/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ljg-blind", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add lijigang/ljg-skills --skill ljg-blind -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install lijigang/ljg-skills ljg-blind --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lijigang/ljg-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/ljg-blind .cursor/skills/ljg-blind && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ljg-blind" agent skill from https://github.com/lijigang/ljg-skills/tree/master/skills/ljg-blind into .cursor/skills/ljg-blind/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ljg-blind", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/lijigang/ljg-skills.git --path skills/ljg-blind--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add lijigang/ljg-skills --skill ljg-blind -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install lijigang/ljg-skills ljg-blind --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lijigang/ljg-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/ljg-blind .gemini/skills/ljg-blind && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ljg-blind" agent skill from https://github.com/lijigang/ljg-skills/tree/master/skills/ljg-blind into .gemini/skills/ljg-blind/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ljg-blind", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install lijigang/ljg-skills ljg-blindInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add lijigang/ljg-skills --skill ljg-blind -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/lijigang/ljg-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/ljg-blind .github/skills/ljg-blind && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ljg-blind" agent skill from https://github.com/lijigang/ljg-skills/tree/master/skills/ljg-blind into .github/skills/ljg-blind/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ljg-blind", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add lijigang/ljg-skills --skill ljg-blind -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install lijigang/ljg-skills ljg-blind --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lijigang/ljg-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/ljg-blind .opencode/skills/ljg-blind && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ljg-blind" agent skill from https://github.com/lijigang/ljg-skills/tree/master/skills/ljg-blind into .opencode/skills/ljg-blind/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ljg-blind", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ljg-blindReads yesterday's AI conversations, identifies one thinking blind spot, picks a WeRead book chapter to address it and writes an analysis note.
The skill treats a blind spot as a structural thinking habit that keeps a kind of truth invisible, not as a knowledge gap. It scans the previous day's conversation files, or a date you pass as YYYY-MM-DD, for five signals: avoided problems, framework-hopping with no conclusion, a single default lens, unchecked premises and adjacent questions never asked. It selects one blind spot, judged by payoff, whether it is truly unseen and how well it fits the user's main line.
It then calls the WeRead agent gateway, using a `WEREAD_API_KEY` from the environment, to search for a book matching key terms, read its chapter list and choose the single most relevant chapter. The result is a complete analysis note. If the day's human input is thin or absent, the skill says so instead of inventing a blind spot. It is not meant for deep dives on one idea, domain reduction, reading a text together or finding constraints.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9e75497. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (TypeScript), which the agent can run.
Shell commands in SKILL.md call:
jqcurlbunFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
weread.qq.comi.weread.qq.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
WEREAD_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Blind Spot Scan loads about 1.7k tokens when it runs. Until then it costs about 111 tokens; SKILL.md has 225 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from lijigang/ljg-skills at commit 9e75497, republished under its MIT licence (© lijigang). 225 words, ~1,743 tokens.
.claude/skills/ljg-blind/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.读你昨天跟 AI 的全部对话,照出那个你自己看不见的思维盲区,从微信读书点亮补它的一章。
盲区不是知识缺口。不是"没读过某本书""不知道某个事实"——那种缺口,查一下就补上了。
盲区是一种结构性的思维习惯,它让某一类真相对你系统性地不可见。你不是想不到,是这个习惯让你压根没往那个方向看。它藏在你怎么想事情的方式里,不藏在你想的内容里。
所以证据不在"他说错了什么"。在——他没往哪看,他在哪绕了,他默认了什么却从没检。
从昨天的对话里找这五种。每一种都要落到具体的话上,不能凭感觉。
从信号里挑 1 个作为今天的盲区。宁可一个说透,不要五个都点一遍——盲区的密度低于精度。判据三条:
${LIFEOS_DIR:-$HOME/.codex/LIFEOS}/USER/TELOS/PRINCIPAL_TELOS.md 确认主线。# 默认昨天;用户传了 YYYY-MM-DD 就用那天(macOS BSD date)
target=${1:-$(date -v-1d +%Y-%m-%d)}会话文件在 $HOME/.codex/sessions/YYYY/MM/DD/*.jsonl。目录日期按本机时间记录 session 的开始日,行内 timestamp 是 UTC;因此同时扫目标日与前一日目录,再按本机日期过滤消息。只读取顶层 task 的 response_item / message / user / input_text,排除 session_meta.payload.source.subagent 存在的子 agent 会话,以及 harness 包装和本次调用自身:
target=<上一步的日期>
out=/tmp/ljg-blind-${target}.txt
: > "$out"
previous_dir=$(date -j -v-1d -f '%Y-%m-%d' "$target" '+%Y/%m/%d')
target_dir=$(date -j -f '%Y-%m-%d' "$target" '+%Y/%m/%d')
for day_dir in "$previous_dir" "$target_dir"; do
session_dir="$HOME/.codex/sessions/$day_dir"
[ -d "$session_dir" ] || continue
find "$session_dir" -type f -name '*.jsonl' -print0
done | while IFS= read -r -d '' session_file; do
# Codex 将子 agent 与顶层 task 放在同一日期目录;从 session_meta 排除它们。
if jq -e 'select(.type=="session_meta") |
(.payload.source | type == "object" and has("subagent"))' \
"$session_file" >/dev/null 2>&1; then
continue
fi
jq -r --arg target "$target" '
def local_epoch:
sub("\\.[0-9]+Z$"; "Z") | fromdateiso8601;
select(.type=="response_item"
and .payload.type=="message"
and .payload.role=="user")
| (.timestamp | local_epoch) as $epoch
| select(($epoch | strflocaltime("%Y-%m-%d")) == $target)
| ([.payload.content[]?
| select(.type=="input_text")
| .text] | join("\n")) as $text
| select($text | length > 0)
| select(($text | test("^(<recommended_plugins>|<environment_context>|<task-notification>)")) | not)
| select(($text | test("(?i)(ljg-blind|扫盲区)")) | not)
| "[" + ($epoch | strflocaltime("%H:%M")) + "] " + $text
' "$session_file" 2>/dev/null >> "$out"
done
wc -m "$out"材料若 >50KB,按对话分段读,先识别每段在讨论什么主题,再往下看。可辅助看几条相邻的 assistant 回复定上下文。
数据稀薄兜底:当天真人输入 <200 字或没有对话——直接在输出里写明「当天对话稀薄 / 无」,不强造盲区。宁可交白卷,不许编。
按上面「五种盲区信号」过一遍,每命中一处都记下证据(哪几句话、什么转折让你看出来的)。然后按「选哪一个」的三条判据,选出 1 个最要紧的盲区。
调 weread skill(WEREAD_API_KEY 在环境变量里,格式 wrk-xxxx;若没有,提示 export WEREAD_API_KEY=<key>)。三步:
curl -s -X POST https://i.weread.qq.com/api/agent/gateway \
-H "Authorization: Bearer $WEREAD_API_KEY" -H "Content-Type: application/json" \
-d '{"api_name":"/store/search","keyword":"<核心词>","count":8,"skill_version":"1.0.3"}' \
| jq -r '.results[].books[]?.bookInfo | "\(.bookId)\t\(.title)\t\(.author)\t评分\(.newRating)"'从返回里挑评分尽量 ≥750(新版评分是 ×100,即 7.5)、且最贴盲区的 1 本,记 bookId。评分不是唯一标准——对症 > 高分,一本 7.4 但正打在盲区上,胜过一本 8.5 但擦边的。
curl -s -X POST https://i.weread.qq.com/api/agent/gateway \
-H "Authorization: Bearer $WEREAD_API_KEY" -H "Content-Type: application/json" \
-d '{"api_name":"/book/chapterinfo","bookId":"<bookId>","skill_version":"1.0.3"}' \
| jq -r '.chapters[] | select(.level<=2) | "\(.chapterUid)\t[\(.level)] \(.title)\t\(.wordCount)字"'记 chapterUid、章节标题、wordCount。
估时长——wordCount / 280(中文阅读速度)向上圆到 5 的倍数。无 wordCount 就按目录感觉在 15-45 分钟之间估一个;标题带「上篇/下篇」「卷一」这类宏观词,时长再 ×1.5。
构造网页版链接——微信读书网页阅读器不接受裸 bookId / chapterUid,必须先编码。用技能自带工具生成:
bun "${HOME}/.agents/skills/ljg-blind/Tools/WeReadWebUrl.ts" "<bookId>" "<chapterUid>"工具输出形如:
https://weread.qq.com/web/reader/{encodedBookId}k{encodedChapterUid}把输出的完整 URL 写进笔记。不要手拼编码值,也不要把裸 ID 直接塞进 /web/reader/。
兜底:搜索全空 / 没对症章节 → 选整本相关书,只传 bookId 生成网页版书籍入口:
bun "${HOME}/.agents/skills/ljg-blind/Tools/WeReadWebUrl.ts" "<bookId>"文里说明为什么没能精准到章。
获取时间戳:date +%Y%m%dT%H%M%S 和 date "+%Y-%m-%d %a %H:%M"(时间用当前,不是 target)。
写入 ~/Context/{时间戳}--盲区-{主题}__blind.org。org-mode 格式,禁止 markdown 语法。
正文模板:
#+title: 盲区扫描 · {一句话点出这个盲区}
#+date: [YYYY-MM-DD Weekday HH:MM]
#+filetags: :blind:weread:topology:
* 昨天你在想什么
<1-2 段。当天对话的思维地形——哪几件事、绕着哪个核心在转。给证据:哪几句话看出来的。不流水账,抓主线。>
* 照出来的盲区
<挑出的那 1 个盲区。先一句话点破它是哪种(绕开点 / 空转框架 / 单一取景框 / 未检前提 / 相邻空缺)。再 2-3 段说清:它具体长什么样、昨天哪几处暴露了它、为什么你自己看不见。要点到杠杆——补上之后会打开什么。>
* 这一章给你
- 书:《书名》 — 作者
- 章节:<章节标题>
- 时长:约 N 分钟
- 链接:[[https://weread.qq.com/web/reader/ENCODED_BOOKkENCODED_CHAPTER][在微信读书网页版阅读本章]]
- 为什么是它:<3-4 句。把盲区和这一章对上——这章具体讲什么、怎么补这个盲区。不要泛泛说"开阔视野",要说清这一章的哪个东西正对这个盲区的哪个缺口。>报告文件路径给用户。
这篇笔记是写给一个跟你长期一起思考的人的,不是报告,不是陌生读者。
* / ** / ***,不要 #*字*,斜体 /字/,等宽 ~code~-,不要 *(* 在 org 是标题)[[url][text]],不要 [text](url)-----,不要 ---;不要 markdown 的 > 引用https://weread.qq.com/web/reader/ 开头,并由工具用非空 bookId、chapterUid 生成?https://weread.qq.com/web/reader/573976?chapterUid=13 会返回 404;必须用 Tools/WeReadWebUrl.ts 分别编码 bookId 与 chapterUid,再用 k 连接。/web/reader/{encodedBookId}k{encodedChapterUid};省掉章节编码只会打开整本书入口。Pulse 每天早上有个自动早信(陈平安思维拓扑.org),是陈平安的口气、每天一封、挑一个洞。ljg-blind 是随手调的分析版——同一套「读昨天 → 看盲区 → weread 选章」的底子,但更系统、专照盲区、分析写得更足,而且能扫任意一天(传日期参数)。想要一封信,等早信;想主动查某天的盲区、要一篇能存档的分析,用 ljg-blind。
© lijigang, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in skills/ljg-blind of lijigang/ljg-skills.
Open the folder on GitHubat commit 9e75497
Blind Spot Scan next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Blind Spot Scan this skilllijigang/ljg-skills | 7.5k | — | ~1.7k | Automated safety check: Pass | MIT | |
| LLM Wikilewislulu/llm-wiki-skill | 655 | — | ~3.7k | Automated safety check: Pass | None | |
| Self Skill Creatornotdog1998/yourself-skill | 3.4k | — | ~2.5k | Automated safety check: Notes | MIT | |
| Morning Journal and Planningdavidhariri/life-system | 844 | — | ~1.7k | Automated safety check: Notes | None | |
| Munger Perspectivealchaincyf/munger-skill | 379 | 1 repos | ~3.7k | Automated safety check: Pass | MIT | |
| Daily Notes Workflowballred/obsidian-claude-pkm | 1.9k | — | ~2k | Automated safety check: Pass | MIT |
lewislulu/llm-wiki-skill
Build and maintain a Karpathy-style LLM knowledge base — a self-compiling Obsidian markdown wiki where an Agent ingests raw sources, compiles cross-linked concept/entity/summary pages, answers…
notdog1998/yourself-skill
Builds a personal self skill from your chat logs, diaries and photos, then lets you extend or correct it, working in English or Chinese.
davidhariri/life-system
Reviews yesterday's journal, checks today's to-dos against your inbox and active decisions, and asks pointed questions to keep daily actions aligned with your annual goals.
alchaincyf/munger-skill
查理·芒格的思维框架与表达方式。基于《穷查理宝典》、伯克希尔/Daily Journal股东会、 USC/哈佛演讲、访谈记录、外部批评等50+来源的深度调研, 提炼5个核心心智模型、8条决策启发式和完整的表达DNA。
ballred/obsidian-claude-pkm
Creates today's daily note in an Obsidian vault and guides morning, midday and evening routines for planning, task review and reflection.
huytieu/COG-second-brain
A passive daily work journal that Claude keeps FOR you so you never have to write it yourself.
lijigang/ljg-skills
Explains a whole book to someone who has not read it, keeping its specific content and showing how its threads connect, and saves the result as an Org note.
lijigang/ljg-skills
Explain research papers to readers without a specialist background: what the paper studies, what the authors contribute, how the findings follow, and what the evidence does not establish.
lijigang/ljg-skills
Turns text, URLs or local files into tall PNG cards through HTML typography, with four modes: long reading card, full-text layout, comic and whiteboard.
lijigang/ljg-skills
Turns a named classical Chinese chapter, such as one from the Tao Te Ching or the Analects, into a single annotated PNG image with notes and commentary.
lijigang/ljg-skills
Finds the handful of constraints that truly define a domain, role, product or debate, grades each by hardness, and explains the behavior those constraints produce.
lijigang/ljg-skills
Builds single-file offline HTML talk decks from Org or Markdown outlines, with faithful layout or editorial condensing and keyboard navigation.
Categories
Reads yesterday's AI conversations, identifies one thinking blind spot, picks a WeRead book chapter to address it and writes an analysis note. The skill treats a blind spot as a structural thinking habit that keeps a kind of truth invisible, not as a knowledge gap. It scans the previous day's conversation files, or a date you pass as YYYY-MM-DD, for five signals: avoided problems, framework-hopping with no conclusion, a single default lens, unchecked premises and adjacent questions never asked.
Blind Spot Scan fits situations like: asking what thinking blind spots showed up in yesterday's AI conversations; wanting a targeted book chapter to correct a recurring thinking habit; scanning a specific past date for blind spots.
Run `npx skills add lijigang/ljg-skills --skill ljg-blind -a claude-code`. Or copy the skill folder (skills/ljg-blind in lijigang/ljg-skills) into .claude/skills/ljg-blind in your project. Claude Code loads it when a task matches its description.
Run `npx skills add lijigang/ljg-skills --skill ljg-blind -a codex`. Or copy the skill folder (skills/ljg-blind in lijigang/ljg-skills) into .agents/skills/ljg-blind in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add lijigang/ljg-skills --skill ljg-blind -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ljg-blind, .gemini/skills/ljg-blind, .github/skills/ljg-blind and .opencode/skills/ljg-blind in your project.
Going by SKILL.md and its folder, Blind Spot Scan needs TypeScript for the scripts in its folder, the command-line tools its instructions call (jq, curl and bun) and credentials named WEREAD_API_KEY. Our summary lists: A WeRead API key in `WEREAD_API_KEY`; Local session files of the previous day's AI conversations; Network access to the WeRead API.
SKILL.md names 2 domains. In commands or code: weread.qq.com and i.weread.qq.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Blind Spot Scan is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Blind Spot Scan: LLM Wiki (lewislulu/llm-wiki-skill, 655 stars), Self Skill Creator (notdog1998/yourself-skill, 3.4k stars), Morning Journal and Planning (davidhariri/life-system, 844 stars) and Munger Perspective (alchaincyf/munger-skill, 379 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
lijigang (a GitHub user) maintains it in lijigang/ljg-skills, which has 7,481 GitHub stars. The repository holds 26 skills in this directory. The repository was last updated on October 8, 2026.
Source: lijigang/ljg-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.