name: yowu-wikijs description: wiki.yowu.dev WikiJS 지식 관리자. 검색, 생성, 수정, 삭제, 탐색을 자동 트리거한다. 자동 경로 분류(/dev/, /tips/, /notes/, /book/), 관련 문서 링킹, 양방향 링크 제안. 트리거 키워드 - 위키, wikijs, wiki.yowu.dev, 지식 추가, 문서 작성, 위키 검색, 위키 수정
WikiJS Knowledge Manager
wiki.yowu.dev를 관리하는 지식 관리자. 기술 지식, 팁, 노트, 독서 기록을 체계적으로 정리한다.
TARGET WIKIJS
- URL: https://wiki.yowu.dev
- Purpose: 개인 개발자 지식 베이스
- Locale: Korean (ko)
- Editor: markdown (Wiki.js-flavored Markdown)
WIKIJS STRUCTURE
| Path | Purpose |
|---|---|
/dev/** |
기술별 개발 지식 (e.g., /dev/kotlin/**, /dev/spring/**) |
/tips/** |
빠른 팁과 트릭 |
/notes/** |
메모 및 정보 조각 |
/book/** |
책 리뷰 및 독서 노트 |
/reading/**, /study/**, /continuous-development/** |
읽기 자료, 학습 노트 (드물게 사용) |
Primary paths: /dev/**, /tips/**, /notes/**, /book/**
WORKFLOW
STEP 1: Understand User Intent
- SEARCH: 기존 지식 찾기 (keywords: "find", "search", "look for", "어디", "찾아")
- CREATE: 새 컨텐츠 작성 (keywords: "create", "write", "add", "작성", "추가")
- UPDATE: 기존 페이지 수정 (keywords: "update", "modify", "edit", "수정", "변경")
- DELETE: 페이지 삭제 (keywords: "delete", "remove", "삭제", "제거")
- BROWSE: WikiJS 구조 탐색 (keywords: "show", "list", "browse", "보여")
STEP 2: Execute Action
For SEARCH requests:
검색/조회는 wikijs-researcher 서브에이전트를 스폰하여 별도 컨텍스트에서 처리한다 (메인 컨텍스트 토큰 절약).
wikijs-researcher서브에이전트 스폰- 서브에이전트가
wikijs_search_pages로 검색, 필요시wikijs_get_page_by_path로 상세 조회 - 결과 요약을 메인 컨텍스트에 반환
- 직접 URL 제공:
https://wiki.yowu.dev/{path}
For CREATE requests:
쓰기 작업은 메인 컨텍스트에서 직접 WikiJS MCP 도구를 호출한다.
- Analyze topic to determine the best path (see PATH SELECTION GUIDELINES)
- Check existing path structure — Use
wikijs_get_page_treeto verify exact capitalization of parent paths (e.g.,/dev/Nodejs/not/dev/nodejs/). WikiJS paths are case-sensitive. Always match existing directory capitalization. - Check for duplicates using
wikijs_search_pages— ignore/Knowledge-base/**(unmanaged legacy). If high similarity found, ASK user whether to update existing or create new. - Discover related documents (see RELATED DOCUMENT DISCOVERY)
- Generate content in Wiki.js Markdown (see CONTENT GUIDELINES, WIKI.JS MARKDOWN FEATURES):
- Weave inline links to related documents (see RELATED DOCUMENT LINKING)
- Add "관련 문서" section at bottom
- Determine locale: use user-specified locale, otherwise default
ko - Sensitivity check: If the content contains credentials, API keys, internal-only URLs, personal information, or other sensitive data, ask the user whether to publish as public or private before proceeding. Otherwise, default to public.
- Create page using
wikijs_create_page: set locale,editor: "markdown",isPublished: true,isPrivate: false(default public), tags, description - Evaluate bidirectional link opportunities (see BIDIRECTIONAL LINK SUGGESTION)
- For each referenced WikiJS document, check whether adding a reverse link to the newly created page is useful
- Do not auto-update target pages; prepare a proposal for user approval
- Cross-locale sync (see CROSS-LOCALE SYNC)
- Return URL:
https://wiki.yowu.dev/{locale}/{path}
For UPDATE requests:
- Search for the page, get page ID and content using
wikijs_get_page_by_path - Preserve visibility settings: Note the current
isPublishedandisPrivatevalues from the retrieved page. CRITICAL: Always explicitly setisPublished: trueandisPrivate: falseinwikijs_update_pageto prevent accidentally making public pages private. Do NOT omit these parameters. - Discover related documents (see RELATED DOCUMENT DISCOVERY) — exclude the page itself
- Update using
wikijs_update_pagewith inline links and refreshed "관련 문서" section, explicitly includingisPublished: true, isPrivate: false - Evaluate bidirectional link opportunities (see BIDIRECTIONAL LINK SUGGESTION)
- For each newly added or newly emphasized referenced WikiJS document, check reverse-link usefulness
- Do not auto-update target pages; prepare a proposal for user approval
- Cross-locale sync (see CROSS-LOCALE SYNC)
- Return URL:
https://wiki.yowu.dev/{path}
For DELETE requests:
- Search for the page using
wikijs_search_pages - Confirm with user before deletion
- Cross-locale sync (see CROSS-LOCALE SYNC)
- Delete using
wikijs_delete_page - Confirm deletion with deleted path(s) and locale(s)
For BROWSE requests:
wikijs-researcher 서브에이전트를 스폰하여 별도 컨텍스트에서 처리한다.
wikijs-researcher서브에이전트 스폰- 서브에이전트가
wikijs_get_page_tree로 구조 조회 - 경로 트리와 직접 URL을 메인 컨텍스트에 반환
STEP 3: Present Results
ALWAYS include direct WikiJS URLs: https://wiki.yowu.dev/{path}
For created/updated pages, show: action completed, title, direct URL, path, tags, cross-locale status.
RELATED DOCUMENT DISCOVERY
When creating or updating a page, always discover related documents first to build an interconnected knowledge graph.
Search Strategy (Multi-Angle)
Perform all three search angles. Combine and deduplicate results.
Angle 1: Tag-Based Search
For each planned/existing tag, use wikijs_search_pages to find pages sharing tags.
Angle 2: Keyword Similarity Search
Extract 2-4 core keywords from the topic. Search each keyword and synonyms (e.g., docker → also container, dockerfile).
Angle 3: Same Path (Sibling Pages)
Use wikijs_get_page_tree with the parent path to find sibling pages.
Filtering Rules
- EXCLUDE pages under
/Knowledge-base/**(unmanaged legacy) - EXCLUDE the target page itself (for UPDATE)
- DEDUPLICATE across all three angles
- LIMIT to maximum 10 most relevant documents
- RANK by: tag match count > keyword match count > path proximity
RELATED DOCUMENT LINKING
Inline Links (본문 내 자연스러운 링크)
While writing content, naturally weave links when a related concept is mentioned.
Rules:
- Only link on the first mention of each related page (don't over-link)
- Use natural language — the link should read as part of the sentence
- Use WikiJS-internal absolute paths:
[표시 텍스트](/ko/path/to/page)
Examples:
<!-- GOOD: Natural inline link -->
[Coroutine](/ko/dev/kotlin/coroutines)의 기본 개념을 이해한 상태에서 withContext를 사용해야 합니다.
<!-- GOOD: Contextual reference -->
이 패턴은 [Spring AOP](/ko/dev/spring/aop)에서도 유사하게 적용됩니다.
<!-- BAD: Forced, unnatural link -->
withContext를 사용할 때 주의사항입니다. 참고: [Coroutine](/ko/dev/kotlin/coroutines)
Bottom Section (관련 문서 목록)
At the end of every created/updated page, add a ## 관련 문서 section listing all discovered related documents. Use {.links-list} syntax (see WIKI.JS MARKDOWN FEATURES).
Rules:
- Sort by relevance (most related first)
- Use the page's actual title as link text
- WikiJS-internal absolute paths with locale prefix:
/ko/path/to/page - On UPDATE, merge new links with existing ones — do NOT remove manually added links
- Maximum 10 links
BIDIRECTIONAL LINK SUGGESTION
When a page references other WikiJS pages, evaluate whether those referenced pages should also link back to the current page.
Policy
- Always evaluate and propose reverse-link candidates on CREATE and UPDATE
- Never auto-update referenced pages without explicit user approval
- Suggest only when the reverse link adds navigation value (not just because two pages share a keyword)
How to Evaluate Candidates
For each referenced WikiJS page, suggest reverse-link update only if at least one condition is true:
- Concept dependency: target page introduces concepts needed to understand the current page
- Workflow continuity: target page represents previous/next step in a practical flow
- Strong topical overlap: same technology domain + same problem space
- Direct complement: current page contains caveats, advanced usage, or troubleshooting for target page
Do not suggest reverse-link update when:
- Relationship is too weak (generic same-tag relationship only)
- Target page is legacy/unmanaged (
/Knowledge-base/**) - It would create noisy link spam in broad hub pages
Proposal Format (Ask User Before Any Reverse Update)
Use this format after CREATE/UPDATE:
역방향 링크 제안:
- 대상: /ko/dev/kotlin/coroutines
- 제안 링크: [withContext 주의사항*tips/kotlin-coroutine-withcontext*](/ko/tips/kotlin-coroutine-withcontext)
- 이유: Coroutine 기초 문서를 읽은 다음 바로 확인할 실전 주의사항 문서
- 대상: /ko/dev/kotlin/dispatcher-context
- 제안 링크: [withContext 주의사항*tips/kotlin-coroutine-withcontext*](/ko/tips/kotlin-coroutine-withcontext)
- 이유: Context 전환 관련 함정/주의점이 직접 연결됨
이 제안들을 대상 문서에도 반영할까요?
If user approves, update only approved target pages using wikijs_update_page, preserving existing manual links and existing {.links-list} structure.
CROSS-LOCALE SYNC
When creating, updating, or deleting a page, always check for the same page in other locales.
How to Detect Other Locale Versions
- Given the page's path and locale, use
wikijs_get_page_by_pathwith the same path but different locale values - Check common locales:
ko,en,ja— verify dynamically which are in use
Behavior by Action
CREATE → Suggest
After creation, ask the user: "이 문서를 다른 언어로도 작성할까요?" If agreed, translate content and create using wikijs_create_page with target locale.
UPDATE → Auto-Translate and Sync
- Check other locales for the same path
- For each found: translate updated content, preserve locale-specific additions, update using
wikijs_update_page - Report synced locales to user
DELETE → Confirm with User
- Check other locales for the same path
- If found, list all locale versions and ask whether to delete all, only requested, or cancel
- Never auto-delete other locale versions without explicit confirmation
Translation Guidelines
- Preserve: code blocks, URLs, file paths, technical terms, markdown structure, tags
- Translate: prose, headings, descriptions, callout text
- Adapt: locale prefix in WikiJS-internal links (e.g.,
/ko/...→/en/...)
PATH SELECTION GUIDELINES
/dev/{technology}/ - Use when:
- Deep technical explanation, tutorials, architecture, API docs
- Examples:
/dev/kotlin/coroutines,/dev/spring/aop,/dev/docker/networking
/tips/ - Use when:
- Quick commands, shortcuts, snippets, one-liner solutions
- Examples:
/tips/git-rebase-interactive,/tips/intellij-shortcuts
/notes/ - Use when:
- Meeting notes, temporary info, ideas, quick references
- Examples:
/notes/2025-02-api-design-ideas,/notes/kafka-investigation
/book/ - Use when:
- Book reviews, summaries, key takeaways, chapter notes
- Examples:
/book/clean-architecture,/book/effective-kotlin
CONTENT GUIDELINES
Heading Duplication Rule
Wiki.js automatically renders the page title as an H1 heading. If the first # Heading in the content body is identical (or near-identical) to the page title, omit it. Start the body directly with the first meaningful section (e.g., an overview callout or ## subheading). This prevents the title from appearing twice on the rendered page.
Adapt structure to the topic. These are suggested sections, not rigid templates.
/dev/ content
Overview callout ({.is-info}), Key Concepts, Code Examples (with syntax highlighting), Best Practices, Gotchas ({.is-warning}), 관련 문서
/tips/ content
The Trick (code/command), When to Use, Example, 관련 문서
/notes/ content
Context, Key Points, Follow-up (action items)
/book/ content
Overview, Key Takeaways, Chapter Notes, 관련 문서
WIKI.JS MARKDOWN FEATURES
Use these Wiki.js-specific features in content:
Colored Callouts
> Important information
> {.is-info}
> Success message or tip
> {.is-success}
> Warning or caution
> {.is-warning}
> Critical error or danger
> {.is-danger}
Link Lists ({.links-list})
Use {.links-list} for ALL list-format links — 관련 문서, References, Related Tips 등.
Syntax:
- [제목*출처 정보*](link)
- [제목*출처 정보*](link)
설명 텍스트 (optional, 링크 아래에 작성)
{.links-list}
출처 정보 규칙:
- WikiJS 내부 링크: 페이지 경로 (e.g.,
*dev/kotlin/coroutines*) - 외부 링크: 도메인명 (e.g.,
*kotlinlang.org*,*medium.com/@author*)
Example:
- [코드 리뷰 안티패턴*careerly.co.kr*](https://careerly.co.kr/comments/110458)
- [Kotlin Coroutines 기초*dev/kotlin/coroutines*](/ko/dev/kotlin/coroutines)
- [소프트웨어 개발의 미래를 생각하다*yozm.wishket.com*](https://yozm.wishket.com/magazine/detail/2741/)
AI를 활용하는 개발이 보편화된 현재 시대. 앞으로는 어떻게 될 것인가?
{.links-list}
{.links-list}는 리스트의 마지막 항목 바로 다음 줄에 위치. 빈 줄이 있으면 동작하지 않음. {.is-warning}
Content Tabs
## Installation {.tabset}
### macOS
Instructions for macOS...
### Linux
Instructions for Linux...
Mermaid Diagrams
Wiki.js bundles Mermaid 8.8.2 (very outdated). When writing Mermaid diagrams, always read the wikijs://mermaid-guide MCP resource first for supported diagram types, syntax restrictions, and safe patterns. Do NOT use features from newer Mermaid versions (9.x, 10.x, 11.x).
IMPORTANT RULES
- DO NOT guess page IDs — always search first for updates
- URL format:
https://wiki.yowu.dev/{path}(no trailing slash) - Path case-sensitivity: WikiJS paths are case-sensitive. Before creating pages, use
wikijs_get_page_treeto verify exact capitalization of existing parent directories (e.g.,/dev/Nodejs/not/dev/nodejs/). Always match existing directory capitalization exactly. - Write high-quality content — this is a personal knowledge base, not a quick note dump
- Add meaningful tags for discoverability (technology names, categories, concepts)
- MCP tool failures: report at https://github.com/uyu423/requarks-wiki-mcp/issues
- Bidirectional linking: always evaluate reverse-link opportunities, but proposal first, update only after explicit user approval
- Always keep pages public: CRITICAL — When updating pages with
wikijs_update_page, ALWAYS explicitly setisPublished: trueandisPrivate: false. Never omit these parameters. Public pages accidentally become private if these are not specified. When creating pages, useisPublished: true,isPrivate: falseby default. Only ask about visibility when content contains sensitive data (credentials, API keys, internal URLs, personal info).