of the PKM closed looporganizing step: turn messy collections into structured, searchable, aggregatable knowledge. Specifically addresses "a large pile of archives lying in a black hole that has never been activated."
Client-readable description
What this skill can do
Organize the Obsidian article library—fill in frontmatter (topics/captured_at/author), categorize by topic with bidirectional links, create/update two-level MOCs, file by month, add bidirectional links. The underlying layer calls scripts such as rebuild_moc.py / backfill, while the upper layer uses an LLM to determine classification. Used to activate existing collections and organize new archives
| 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 minimum 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 | Installation commands, application addresses, configuration paths, or questions requiring client confirmation |
| Execution completed | 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, URL, repo, workspace, proposal, vault, or platform account status.
- The Agent first determines whether this skill is triggered, then checks dependencies, configuration, permissions, and risky actions.
- For actions that can be dry-run or previewed, provide a preview first; when deletion, overwriting, sending, publishing, or writing remote state is involved, seek client confirmation first.
- After execution, verify the real output; do not substitute "looks successful" for evidence.
- The final reply must give the client a visible summary: what was done, log summary, file changes, issues, and next steps.
Dependencies and installation
Install this skill (single skill):
npx skills add soia-team/soia-open-skills -g -a '*' -s soia-pkm-organize -y
Configuration conventions:
~/.config/soia-skills/soia-open-skills/soia-pkm/soia-pkm-organize/config.yml
SOIA_PKM_ORGANIZE_CONFIG_FILE=<custom-config-path>
- If this skill does not require private configuration, you may skip creating
config.yml。 - If an API key, cookie, session, provider home, or local path is required, it can only be placed in private
config.yml, the process environment, or the provider's own login state; it must not be written into the repository, vault body, or logs. - Strong dependencies, optional dependencies, and third-party skill relationships must be based on this
SKILL.mdand the subsequent "dependencies / prerequisites / resources / boundaries" description; if it is not clearly written, first supplement the description or ask the client, and do not guess. - Third-party skills may only declare dependencies and installation methods; do not directly modify third-party skill files.
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 / 缺依赖 / 需要客户确认 / 建议下一条命令;没有则写“无”>
⚠️ Pre-organizing protocol (required reading, external configuration)
Any task of "organizing / restructuring a certain part of the knowledge base" (not limited to the article library),before starting work, first load and strictly follow references/知识库整理规程.yml:First investigate the current state (read-only; understand the user's existing structures/conventions/templates, and when you find similar ones, merge into them rather than starting a new one) → then propose a minimal plan for the user to decide on → only execute in bulk after confirmation.。
The rules areexternally configured and decoupled from this skill—to change the rules, change that yml; do not hardcode them in this document. Core red lines: acting before investigating will definitely cause rework; starting a separate system when a mature structure already exists is reinventing the wheel; empty templates/guessed categories/one-off bulk generation and then having the user pick out mistakes are all wasteful.
What to do
- Fill in frontmatter: add what is missing
topics/captured_at/author. - Topic categorization: read the article content and determine which ones it should be attached to
topics(bidirectional links);prioritize reusing existing topics(check_MOC/), and avoid creating duplicate topics. - Create / update MOC: run
rebuild_moc.pyto rebuild the two-level topic map (first-level category → second-level topic). - File by month:
clipnatively falls into<年>/, filing articles by filename date into<年>/<月>/。 - Add bidirectional links: associations between articles, and between articles ↔ books ↔ logs.
Underlying scripts (mechanical layer, called by organize)
scripts/rebuild_moc.py: scan topics of all articles and rebuild the_MOC/two-level map. Supports--vault/OBSIDIAN_VAULTto specify the vault path; the category table can use_MOC/.categories.jsonto override defaults per vault (see script--help)。backfill_reading_records.py: book library → reading records completion (reading line).- File by month:
mv <年>/*.md <年>/<月>/(by filename date).
organize = LLM determines categorization / summarization + mechanical-layer scripts execute in bulk. Scripts handle deterministic bulk operations; the LLM handles "what topic does this belong to" and "what is the core judgment of this MOC".
Categorization principles
- Prefer reusing existing topics (check
_MOC/), and do not create new topics lightly. - Mappings are hardcoded in the category table of
rebuild_moc.py(do not rely on AI guessing every time)—to change categorization, change the table and rerun.
Receipt
After organizing, report: how many articles were processed, which topics were added, the MOC update status, and how many files were filed.
Closed-loop position
clip(收) → ★organize(整理) → distill(点) → compose(写) → publish(发)
Upstream clip takes things in (possibly messy, landing in year root directories);organize tidies them up; downstream distill distills from the tidied vault.
Receipt after completion
After executionmustoutput to the user (do not silently finish):
- What was done — summarize the completed work in one sentence.
- File changes — list the files created / modified / moved (full paths); if no files were changed, state "no files changed".
- Next steps — optional follow-up suggestions (such as the next skill to connect to).