From pkos
Use when the user says 'pkos', 'knowledge base', '知识库', 'what's in my inbox', 'what do I know about', or wants to interact with their personal knowledge system. Unified entry point for status, query, ingest, and review.
npx claudepluginhub n0rvyn/indie-toolkit --plugin pkosThis skill uses the workspace's default tool permissions.
Unified human interface for PKOS. Routes user intent to the appropriate subsystem. This is the ONLY user-facing entry point — all other PKOS skills are internal (cron/event-triggered).
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Uses ctx7 CLI to fetch current library docs, manage AI coding skills (install/search/generate), and configure Context7 MCP for AI editors.
Unified human interface for PKOS. Routes user intent to the appropriate subsystem. This is the ONLY user-facing entry point — all other PKOS skills are internal (cron/event-triggered).
Parse from user input (natural language routing):
status → Status Dashboard<question or topic> → Knowledge Queryingest <url|text> → Manual Ingestingest-exchange [--producer NAME] [--intent INTENT] [--dry-run] → Producer Exchange Ingestreview → Today's Wiki Changeslint → Latest Health Reportintel [getnote] → Get笔记 Intelligence FeedShow PKOS system status. Collect data in parallel:
Inbox count:
bash ${CLAUDE_PLUGIN_ROOT}/scripts/collect-inbox.sh all
Recent vault activity (last 24h):
find ~/Obsidian/PKOS/{10-Knowledge,20-Ideas,50-References,80-MOCs} -name "*.md" -mtime -1 2>/dev/null | wc -l | tr -d '[:space:]'
Latest lint health score (if exists):
Glob(pattern="lint-*.md", path="~/Obsidian/PKOS/70-Reviews")
Read the most recent one, extract the Summary section.
Latest digest (if exists):
Glob(pattern="*.md", path="~/Obsidian/PKOS/60-Digests")
Read the most recent one's Quick Stats section.
Present:
PKOS Status
Inbox: {N} items pending
Last 24h: +{N} notes, +{N} MOC updates
Health: {score from latest lint, or "no lint data"}
Latest digest: {date}
When user provides a topic or question:
Search vault frontmatter for topic matches:
Grep(pattern="tags:.*{keyword}", path="~/Obsidian/PKOS", output_mode="files_with_matches", head_limit=10)
Search vault content:
Grep(pattern="{keyword1}|{keyword2}", path="~/Obsidian/PKOS/{10-Knowledge,20-Ideas,50-References,80-MOCs}", output_mode="files_with_matches", head_limit=10)
Check MOCs first — if an 80-MOCs/ file matches, read it (it contains synthesized knowledge):
Glob(pattern="**/*{keyword}*", path="~/Obsidian/PKOS/80-MOCs")
Read the top 5 most relevant files (MOCs first, then by match count).
Synthesize an answer citing specific notes. Format:
{Synthesized answer}
Sources:
- [[note-title]] (10-Knowledge/) — {key point}
- [[moc-title]] (80-MOCs/) — {overview}
If the answer is substantial and novel (user confirms), offer to save as a new note via vault write.
When user says ingest <url|text>:
pkos:inbox-processor agentpkos:ripple-compiler agentWhen user says ingest-exchange, exchange ingest, ingest product-lens exchange, or 导入 exchange:
Invoke the ingest-exchange skill.
Supported forms:
/pkos ingest-exchange/pkos ingest-exchange --producer product-lens/pkos ingest-exchange --producer product-lens --intent reprioritize/pkos ingest-exchange --dry-runUse this route when another plugin has already written structured artifacts into ~/Obsidian/PKOS/.exchange/ and PKOS now needs to convert them into canonical vault notes.
Show today's wiki changes:
Find all files modified today:
find ~/Obsidian/PKOS -name "*.md" -mtime -1 -newer ~/Obsidian/PKOS/.state/last-review-marker 2>/dev/null
Categorize changes:
For MOC updates, show a brief diff (what was added).
Update review marker:
touch ~/Obsidian/PKOS/.state/last-review-marker
Show the latest lint report:
Find the most recent lint report:
Glob(pattern="lint-*.md", path="~/Obsidian/PKOS/70-Reviews")
If found: read and display the summary + high-severity items.
If not found: report "No lint data. Lint runs automatically every Sunday, or invoke internally."
Trigger: user says "intel getnote", "getnote intel", "刷新博主"
Invoke getnote-intel skill with optional --source blogger|live.
Trigger: user says "harvest", "scan projects", "import knowledge", "收割"
Invoke the harvest skill:
--dry-run → preview only--project {name} → single project--force → re-import all--skip-ripple → skip MOC compilation (faster for bulk)Trigger: user says "migrate", "import vault", "迁移", "migrate --scan-only"
Invoke the migrate skill:
--scan-only (or --dry-run) → scan source vault and present migration report without writing files--source-name {name} → use a named source from migrate-sources.yaml--source-vault {path} → specify source vault path directly--force → re-migrate all files (skip state file check)--skip-ripple → skip ripple compilation after import--resume → resume from interruption pointTo add a new source vault, edit ~/Obsidian/PKOS/.state/migrate-sources.yaml.