Turn "bookmarks" into "viewpoints". This is the PKM closed loop 收→整理→点→写→发 from input to output, thelifeline link (point)—specifically curing "bookmark a ton, nothing settles in your head,我的看法the section stays empty forever".
Client-readable description
What this skill can do
Refine bookmarked articles in an Obsidian vault into your own viewpoints. Read the original text → ask one Socratic question at a time → you answer verbally → the AI organizes your answers into a "My View" section (the content is yours; the AI only helps put it into words, never thinks or writes for you), and gives you a receipt when done. Also supports topic aggregation: distill the viewpoints of multiple articles under one MOC into a single overview
| What the client wants | What the skill will do | What the client can see |
|---|---|---|
| Complete the work covered by this skill | Read the user request, necessary context, and this skill's main workflow, and execute the minimal reliable steps | The client will see Obsidian/vault file changes, terminal logs, generated artifact paths, and the final receipt. |
| Missing dependencies, permissions, configuration, or key | Stop actions that require external state, and clearly state what is missing | Install commands, application addresses, configuration paths, or questions requiring client confirmation |
| Execution complete | Summarize successes, skips, failures, file changes, and verification results | A completion receipt that can be copied into a ticket/log |
How the client uses it
- State the goal in natural language and provide the necessary inputs: files, URLs, repos, workspaces, proposals, vaults, or platform account status.
- For actions that can be dry-run or previewed, give a preview first; for anything involving deletion, overwriting, sending, publishing, or writing remote state, ask the client for confirmation first.
Dependencies and installation
Installation (recommended: install the entire domain plugin, setting up all skills in this repo at once):
claude plugin marketplace add soia-team/soia-open-skills
claude plugin install soia-pkm-vault@soia
If you only want this one skill, you can use the npx route. Note that the skill will land in the shared source of truth ~/.agents/skills; if you also install the plugin, the same skill will appear as two indexes and each will drift, so it is recommended to choose one of the two:
npx skills add soia-team/soia-open-pkm-vault-skills -g -a '*' -s soia-pkm-distill-article-opinion -y
Configuration conventions:
~/.config/soia-skills/soia-pkm-distill-article-opinion/config.yml
SOIA_PKM_DISTILL_ARTICLE_OPINION_CONFIG_FILE=<custom-config-path>
- If this skill does not need private configuration, you can skip creating
config.yml。 - If it needs an API key, cookie, session, provider home, or local path, it can only go into private
config.yml, the process environment, or the provider's own login state; it must not be written into the repo, vault body, or logs. - Third-party skills can only declare dependencies and installation methods; do not directly modify third-party skill files.
WorkBuddy The loading unit ofnpx skills add -a '*' cannot cover it; it needs to be installed separately, see docs/install/workbuddy.md。
Logs and completion receipt
Every execution must let the client see the process and results. Minimum receipt format:
完成:<一句话说明本次完成了什么>。
日志摘要:
- started: <检查到的输入/配置/依赖,不打印秘密值>
- processed: <数量或范围>
- created/updated: <数量或路径>
- skipped/failed: <数量和原因>
文件变化:
- <绝对路径或“未改动文件”>
验证:
- <运行过的检查、命令或人工核对点>
问题与下一步:
- <缺 key / 缺依赖 / 需要客户确认 / 建议下一条命令;没有则写“无”>
Core principles (non-negotiable)
The content belongs to the user; the AI only helps ask it out and put it into words—never thinks or writes for them.
- The AI's responsibility: understand the original text, ask good questions, and organize the user's spoken answers into fluent first-person text.
- AI does not: fabricate opinions, speak for the user, or add judgments the user did not say.
- User did not answer → do not write. Better to leave it blank than to make it up.
Mode A: Single-article distillation (default)
Trigger: "add my views to this article", "how do I see this article", "distill this article"
Process:
- Locate the article. When the user says "this article" = the article involved in the current conversation; otherwise use the filename / title under
<vault-articles-dir>/and find it via Glob/Grep. - Read the original text(read
## 原文/ body paragraphs). - Align on the skeleton: restate the article's core argument in 1–2 sentences and have the user confirm that you understood it (also gives him a starting point for thinking).
- Throw out only one question at a time(go through the "three angles" below one by one, and only throw the next one after getting an answer): target this article's specific arguments, useplain language, and givea one-sentence example answerto lower the threshold.
- ⚠️ Practical lessons (must be followed):Never throw out 3 questions + a table at once—it will directly overwhelm the user, and he won't know where to start answering. One at a time, with examples, is the only way the user can answer.
- Stop and wait for the user's answer. The user may be colloquial, answer only one or two sentences, or say "no thoughts" and skip; all are fine.
- After asking the three angles (or the user indicates it's enough),organize it into text: organize the user's answers into a smooth first-person "My Views". Keep his opinions, judgments, and tone, and only polish and structure,do not add material。
- Write to: Edit the article's
## 我的看法section. Empty section / placeholder comment → fill directly; existing content → do not overwrite, ask "append or replace". - Give a receipt(see §A receipt must be given to the user after execution).
Three-angle questioning method (ask one at a time)
| Angle | What to ask | Purpose |
|---|---|---|
| ① Stance | Do youbuy intothe author's core argument? Does it get to the essence, or is it overstated for traffic? | Force out an explicit attitude |
| ② Experience test | Which onematches your experience/observations? Which one is exaggerated or inconsistent? | Test with personal experience |
| ③ Meaning to you | This articlechanged what judgment of yours, or made you want to do what? | Move from "read it" to "how do I use it" |
Mode B: Topic aggregation
Trigger: "distill topic X into a viewpoint", "how do I see the Agent development area overall"
- Read
_MOC/<分类>/<主题>.mdto get the article list. - Read each article's
## 我的看法(already distilled single-article viewpoints). - Most are empty → prompt: "Of the N articles in this topic, only M have distilled viewpoints. It is suggested to run Mode A on a few first." Let him choose which few to distill first.
- Once there is material, synthesize it intoone overall judgment(your core view + each article as evidence).
- Place in
<vault-drafts-dir>/YYYY-MM-DD-<主题>-观点综述.md,tags:[草稿]。 - This draft is the input to
soia-pkm-compose-article-draft.
Write boundaries
- only touch
## 我的看法(Mode A) orcreate newdraft (Mode B). Never touch## 原文/## 摘要/ frontmatter。 - contentmust come from the user's answer, the AI does not fabricate.
## 我的看法is normally left blank for the user; distill isthe user actively requestshelp putting it into words, and what is written is still the user's own words.
After execution, a receipt must be given to the user
Writing is not the endpoint. After writing, be sure to output the result to the user; do not complete it silently:
- Where it was written: which article's
## 我的看法(give the file name / path). - Opinion summary: restate the view just written in 1–2 sentences so the user can confirm at a glance.
- Invite fine-tuning: prompt "This is your view; tell me which sentence you want changed."
The topic aggregation mode is the same: tell where the draft was placed and what the core argument is.
Position in the closed loop
clip-*(收) → organize(整理) → ★distill(点:收藏→观点) → compose(写) → publish(发)
- Upstream:
soia-pkm-clip-*archives the article in. - Downstream:
soia-pkm-compose-article-draftturns the views produced by distill into finished writing. - Methodologyreference
huashu-weread-advisor's alchemy (the reading line's highlighting → note distillation)—distill is its counterpart in thearticle line. Only borrow the method; do not modify its files (third-party skill).
Third-party skill relationships
| Third-party skill | relationship to soia-pkm-distill-article-opinion relationship with |
|---|---|
huashu-weread-advisor (alchaincyf/huashu-weread) |
Method reference: borrow alchemy's questioning and distillation approach, but this skill does not call it or require it to be installed |
weread-skills (Tencent/WeChatReading) |
Non-dependency: this skill handles vault articles and does not directly read the WeChat Reading API |
book-to-skill |
Non-dependency |
find-skills |
Non-dependency |