oh-my-wiki 2.7.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. oh_my_wiki-2.7.0/.claude-plugin/marketplace.json +10 -0
  2. oh_my_wiki-2.7.0/.claude-plugin/plugin.json +58 -0
  3. oh_my_wiki-2.7.0/LICENSE +21 -0
  4. oh_my_wiki-2.7.0/MANIFEST.in +21 -0
  5. oh_my_wiki-2.7.0/PKG-INFO +261 -0
  6. oh_my_wiki-2.7.0/README.md +238 -0
  7. oh_my_wiki-2.7.0/SKILL.md +181 -0
  8. oh_my_wiki-2.7.0/backends/claude.json +17 -0
  9. oh_my_wiki-2.7.0/backends/codex.json +17 -0
  10. oh_my_wiki-2.7.0/backends/gemini.json +12 -0
  11. oh_my_wiki-2.7.0/backends/opencode.json +17 -0
  12. oh_my_wiki-2.7.0/commands/autoresearch.md +154 -0
  13. oh_my_wiki-2.7.0/commands/connections.md +17 -0
  14. oh_my_wiki-2.7.0/commands/create.md +77 -0
  15. oh_my_wiki-2.7.0/commands/delete.md +38 -0
  16. oh_my_wiki-2.7.0/commands/edit.md +74 -0
  17. oh_my_wiki-2.7.0/commands/find.md +44 -0
  18. oh_my_wiki-2.7.0/commands/hot-cache.md +49 -0
  19. oh_my_wiki-2.7.0/commands/import.md +26 -0
  20. oh_my_wiki-2.7.0/commands/inbox.md +22 -0
  21. oh_my_wiki-2.7.0/commands/ingest.md +167 -0
  22. oh_my_wiki-2.7.0/commands/lint.md +96 -0
  23. oh_my_wiki-2.7.0/commands/menu.md +16 -0
  24. oh_my_wiki-2.7.0/commands/migrate.md +31 -0
  25. oh_my_wiki-2.7.0/commands/move.md +37 -0
  26. oh_my_wiki-2.7.0/commands/open.md +35 -0
  27. oh_my_wiki-2.7.0/commands/persona-consistency.md +66 -0
  28. oh_my_wiki-2.7.0/commands/persona-curate-index.md +38 -0
  29. oh_my_wiki-2.7.0/commands/persona-factcheck.md +72 -0
  30. oh_my_wiki-2.7.0/commands/persona-librarian.md +36 -0
  31. oh_my_wiki-2.7.0/commands/persona-terminology.md +86 -0
  32. oh_my_wiki-2.7.0/commands/query.md +87 -0
  33. oh_my_wiki-2.7.0/commands/recall-llm.md +30 -0
  34. oh_my_wiki-2.7.0/commands/review.md +23 -0
  35. oh_my_wiki-2.7.0/commands/vault-forget.md +31 -0
  36. oh_my_wiki-2.7.0/commands/vault-import-memo.md +79 -0
  37. oh_my_wiki-2.7.0/commands/vault-list.md +34 -0
  38. oh_my_wiki-2.7.0/commands/vault-setup.md +68 -0
  39. oh_my_wiki-2.7.0/commands/vault-use.md +25 -0
  40. oh_my_wiki-2.7.0/hooks/hooks.json +20 -0
  41. oh_my_wiki-2.7.0/oh_my_wiki.egg-info/PKG-INFO +261 -0
  42. oh_my_wiki-2.7.0/oh_my_wiki.egg-info/SOURCES.txt +221 -0
  43. oh_my_wiki-2.7.0/oh_my_wiki.egg-info/dependency_links.txt +1 -0
  44. oh_my_wiki-2.7.0/oh_my_wiki.egg-info/entry_points.txt +2 -0
  45. oh_my_wiki-2.7.0/oh_my_wiki.egg-info/requires.txt +14 -0
  46. oh_my_wiki-2.7.0/oh_my_wiki.egg-info/top_level.txt +1 -0
  47. oh_my_wiki-2.7.0/omw/SKILL.md +36 -0
  48. oh_my_wiki-2.7.0/personas/consistency-checker.md +72 -0
  49. oh_my_wiki-2.7.0/personas/curator.md +40 -0
  50. oh_my_wiki-2.7.0/personas/fact-checker.md +110 -0
  51. oh_my_wiki-2.7.0/personas/terminology-manager.md +123 -0
  52. oh_my_wiki-2.7.0/personas/wiki-librarian.md +46 -0
  53. oh_my_wiki-2.7.0/pyproject.toml +51 -0
  54. oh_my_wiki-2.7.0/references/adapter-spec.md +35 -0
  55. oh_my_wiki-2.7.0/references/architecture.md +36 -0
  56. oh_my_wiki-2.7.0/references/auto-recall-hook-design.md +202 -0
  57. oh_my_wiki-2.7.0/references/frontmatter.md +27 -0
  58. oh_my_wiki-2.7.0/references/messenger-api.md +101 -0
  59. oh_my_wiki-2.7.0/references/schema-sqlite.md +44 -0
  60. oh_my_wiki-2.7.0/references/socratic-dialog.md +39 -0
  61. oh_my_wiki-2.7.0/references/vault-modes.md +13 -0
  62. oh_my_wiki-2.7.0/references/wizard-flow.md +43 -0
  63. oh_my_wiki-2.7.0/schemas/article.yml +1 -0
  64. oh_my_wiki-2.7.0/schemas/base.yml +13 -0
  65. oh_my_wiki-2.7.0/schemas/book.yml +1 -0
  66. oh_my_wiki-2.7.0/schemas/comparison.yml +1 -0
  67. oh_my_wiki-2.7.0/schemas/concept.yml +1 -0
  68. oh_my_wiki-2.7.0/schemas/doc.yml +1 -0
  69. oh_my_wiki-2.7.0/schemas/entity.yml +3 -0
  70. oh_my_wiki-2.7.0/schemas/link.yml +1 -0
  71. oh_my_wiki-2.7.0/schemas/meta.yml +3 -0
  72. oh_my_wiki-2.7.0/schemas/note.yml +1 -0
  73. oh_my_wiki-2.7.0/schemas/paper.yml +1 -0
  74. oh_my_wiki-2.7.0/schemas/summary.yml +1 -0
  75. oh_my_wiki-2.7.0/schemas/synthesis.yml +1 -0
  76. oh_my_wiki-2.7.0/schemas/video.yml +1 -0
  77. oh_my_wiki-2.7.0/scripts/__init__.py +0 -0
  78. oh_my_wiki-2.7.0/scripts/adapters.py +268 -0
  79. oh_my_wiki-2.7.0/scripts/agent_skills.py +121 -0
  80. oh_my_wiki-2.7.0/scripts/autoresearch.py +322 -0
  81. oh_my_wiki-2.7.0/scripts/backends.py +244 -0
  82. oh_my_wiki-2.7.0/scripts/banner.py +109 -0
  83. oh_my_wiki-2.7.0/scripts/community.py +168 -0
  84. oh_my_wiki-2.7.0/scripts/config.py +74 -0
  85. oh_my_wiki-2.7.0/scripts/db/__init__.py +0 -0
  86. oh_my_wiki-2.7.0/scripts/db/schema.sql +79 -0
  87. oh_my_wiki-2.7.0/scripts/embed.py +68 -0
  88. oh_my_wiki-2.7.0/scripts/entity_link.py +105 -0
  89. oh_my_wiki-2.7.0/scripts/fetch.py +100 -0
  90. oh_my_wiki-2.7.0/scripts/fetch_chromium.py +36 -0
  91. oh_my_wiki-2.7.0/scripts/fetch_errors.py +18 -0
  92. oh_my_wiki-2.7.0/scripts/fetch_youtube.py +64 -0
  93. oh_my_wiki-2.7.0/scripts/frontmatter.py +45 -0
  94. oh_my_wiki-2.7.0/scripts/fts.py +118 -0
  95. oh_my_wiki-2.7.0/scripts/glossary.py +272 -0
  96. oh_my_wiki-2.7.0/scripts/hot_cache.py +202 -0
  97. oh_my_wiki-2.7.0/scripts/import_memo.py +110 -0
  98. oh_my_wiki-2.7.0/scripts/import_source.py +180 -0
  99. oh_my_wiki-2.7.0/scripts/inbox.py +128 -0
  100. oh_my_wiki-2.7.0/scripts/ingest.py +184 -0
  101. oh_my_wiki-2.7.0/scripts/inline_fields.py +36 -0
  102. oh_my_wiki-2.7.0/scripts/links.py +293 -0
  103. oh_my_wiki-2.7.0/scripts/lint.py +155 -0
  104. oh_my_wiki-2.7.0/scripts/maint.py +47 -0
  105. oh_my_wiki-2.7.0/scripts/memo_ops.py +177 -0
  106. oh_my_wiki-2.7.0/scripts/omw_cli.py +809 -0
  107. oh_my_wiki-2.7.0/scripts/paths.py +88 -0
  108. oh_my_wiki-2.7.0/scripts/persona_export.py +74 -0
  109. oh_my_wiki-2.7.0/scripts/personas.py +325 -0
  110. oh_my_wiki-2.7.0/scripts/query.py +42 -0
  111. oh_my_wiki-2.7.0/scripts/recall.py +464 -0
  112. oh_my_wiki-2.7.0/scripts/registry.py +304 -0
  113. oh_my_wiki-2.7.0/scripts/reindex.py +210 -0
  114. oh_my_wiki-2.7.0/scripts/review.py +239 -0
  115. oh_my_wiki-2.7.0/scripts/schema.py +151 -0
  116. oh_my_wiki-2.7.0/scripts/search/__init__.py +58 -0
  117. oh_my_wiki-2.7.0/scripts/search/base.py +43 -0
  118. oh_my_wiki-2.7.0/scripts/search/providers/__init__.py +0 -0
  119. oh_my_wiki-2.7.0/scripts/search/providers/brave.py +26 -0
  120. oh_my_wiki-2.7.0/scripts/search/providers/brightdata.py +45 -0
  121. oh_my_wiki-2.7.0/scripts/search/providers/exa.py +24 -0
  122. oh_my_wiki-2.7.0/scripts/search/providers/firecrawl.py +35 -0
  123. oh_my_wiki-2.7.0/scripts/search/providers/tavily.py +20 -0
  124. oh_my_wiki-2.7.0/scripts/search_index.py +197 -0
  125. oh_my_wiki-2.7.0/scripts/server.py +187 -0
  126. oh_my_wiki-2.7.0/scripts/setup_wizard.py +533 -0
  127. oh_my_wiki-2.7.0/scripts/slugify.py +22 -0
  128. oh_my_wiki-2.7.0/scripts/supersede.py +24 -0
  129. oh_my_wiki-2.7.0/scripts/text_match.py +36 -0
  130. oh_my_wiki-2.7.0/scripts/urls.py +72 -0
  131. oh_my_wiki-2.7.0/scripts/usage.py +52 -0
  132. oh_my_wiki-2.7.0/scripts/vector_index.py +77 -0
  133. oh_my_wiki-2.7.0/scripts/view.py +106 -0
  134. oh_my_wiki-2.7.0/scripts/viewers/__init__.py +21 -0
  135. oh_my_wiki-2.7.0/scripts/viewers/base.py +61 -0
  136. oh_my_wiki-2.7.0/scripts/viewers/logseq.py +42 -0
  137. oh_my_wiki-2.7.0/scripts/viewers/obsidian.py +136 -0
  138. oh_my_wiki-2.7.0/scripts/wiki_lint.py +354 -0
  139. oh_my_wiki-2.7.0/scripts/wizard.py +126 -0
  140. oh_my_wiki-2.7.0/setup.cfg +4 -0
  141. oh_my_wiki-2.7.0/setup.py +65 -0
  142. oh_my_wiki-2.7.0/tests/test_adapters.py +109 -0
  143. oh_my_wiki-2.7.0/tests/test_agent_skills.py +96 -0
  144. oh_my_wiki-2.7.0/tests/test_autoresearch.py +413 -0
  145. oh_my_wiki-2.7.0/tests/test_backends.py +370 -0
  146. oh_my_wiki-2.7.0/tests/test_banner.py +141 -0
  147. oh_my_wiki-2.7.0/tests/test_command_db_paths.py +27 -0
  148. oh_my_wiki-2.7.0/tests/test_community.py +171 -0
  149. oh_my_wiki-2.7.0/tests/test_confidence_freshness.py +199 -0
  150. oh_my_wiki-2.7.0/tests/test_config.py +38 -0
  151. oh_my_wiki-2.7.0/tests/test_db_default_resolution.py +43 -0
  152. oh_my_wiki-2.7.0/tests/test_doctor_fetch_deps.py +11 -0
  153. oh_my_wiki-2.7.0/tests/test_embed.py +15 -0
  154. oh_my_wiki-2.7.0/tests/test_entity_link.py +105 -0
  155. oh_my_wiki-2.7.0/tests/test_fetch.py +75 -0
  156. oh_my_wiki-2.7.0/tests/test_fetch_chromium.py +25 -0
  157. oh_my_wiki-2.7.0/tests/test_fetch_youtube.py +59 -0
  158. oh_my_wiki-2.7.0/tests/test_frontmatter.py +49 -0
  159. oh_my_wiki-2.7.0/tests/test_fts.py +63 -0
  160. oh_my_wiki-2.7.0/tests/test_fts_visibility.py +70 -0
  161. oh_my_wiki-2.7.0/tests/test_glossary.py +271 -0
  162. oh_my_wiki-2.7.0/tests/test_hot_cache.py +146 -0
  163. oh_my_wiki-2.7.0/tests/test_hybrid_fusion.py +44 -0
  164. oh_my_wiki-2.7.0/tests/test_import_memo.py +83 -0
  165. oh_my_wiki-2.7.0/tests/test_import_source.py +156 -0
  166. oh_my_wiki-2.7.0/tests/test_inbox_crud.py +40 -0
  167. oh_my_wiki-2.7.0/tests/test_inbox_run.py +39 -0
  168. oh_my_wiki-2.7.0/tests/test_inbox_schema.py +45 -0
  169. oh_my_wiki-2.7.0/tests/test_ingest.py +153 -0
  170. oh_my_wiki-2.7.0/tests/test_inline_fields.py +37 -0
  171. oh_my_wiki-2.7.0/tests/test_install_sh_pep668.py +4 -0
  172. oh_my_wiki-2.7.0/tests/test_integration_plan_b.py +94 -0
  173. oh_my_wiki-2.7.0/tests/test_integration_plan_c.py +119 -0
  174. oh_my_wiki-2.7.0/tests/test_integration_v2_0.py +64 -0
  175. oh_my_wiki-2.7.0/tests/test_integration_v2_2b.py +115 -0
  176. oh_my_wiki-2.7.0/tests/test_links.py +362 -0
  177. oh_my_wiki-2.7.0/tests/test_lint.py +241 -0
  178. oh_my_wiki-2.7.0/tests/test_maint.py +40 -0
  179. oh_my_wiki-2.7.0/tests/test_memo_ops.py +117 -0
  180. oh_my_wiki-2.7.0/tests/test_memo_ops_cli.py +48 -0
  181. oh_my_wiki-2.7.0/tests/test_migrate.py +90 -0
  182. oh_my_wiki-2.7.0/tests/test_omw_cli.py +517 -0
  183. oh_my_wiki-2.7.0/tests/test_omw_cli_inbox.py +79 -0
  184. oh_my_wiki-2.7.0/tests/test_omw_cli_setup_agents.py +13 -0
  185. oh_my_wiki-2.7.0/tests/test_omw_cli_visibility.py +59 -0
  186. oh_my_wiki-2.7.0/tests/test_omw_improvements.py +256 -0
  187. oh_my_wiki-2.7.0/tests/test_packaging.py +67 -0
  188. oh_my_wiki-2.7.0/tests/test_paths.py +75 -0
  189. oh_my_wiki-2.7.0/tests/test_persona_export.py +58 -0
  190. oh_my_wiki-2.7.0/tests/test_personas.py +448 -0
  191. oh_my_wiki-2.7.0/tests/test_personas_v2_2b.py +137 -0
  192. oh_my_wiki-2.7.0/tests/test_plugin_manifest.py +221 -0
  193. oh_my_wiki-2.7.0/tests/test_query.py +50 -0
  194. oh_my_wiki-2.7.0/tests/test_recall.py +8 -0
  195. oh_my_wiki-2.7.0/tests/test_recall_llm.py +96 -0
  196. oh_my_wiki-2.7.0/tests/test_recall_pretool.py +31 -0
  197. oh_my_wiki-2.7.0/tests/test_registry.py +204 -0
  198. oh_my_wiki-2.7.0/tests/test_registry_cli.py +46 -0
  199. oh_my_wiki-2.7.0/tests/test_registry_visibility.py +98 -0
  200. oh_my_wiki-2.7.0/tests/test_reindex.py +327 -0
  201. oh_my_wiki-2.7.0/tests/test_reindex_visibility.py +32 -0
  202. oh_my_wiki-2.7.0/tests/test_review.py +97 -0
  203. oh_my_wiki-2.7.0/tests/test_schema.py +233 -0
  204. oh_my_wiki-2.7.0/tests/test_schema_visibility.py +8 -0
  205. oh_my_wiki-2.7.0/tests/test_scrape_providers.py +28 -0
  206. oh_my_wiki-2.7.0/tests/test_search.py +45 -0
  207. oh_my_wiki-2.7.0/tests/test_search_index.py +217 -0
  208. oh_my_wiki-2.7.0/tests/test_search_index_visibility.py +37 -0
  209. oh_my_wiki-2.7.0/tests/test_search_providers.py +102 -0
  210. oh_my_wiki-2.7.0/tests/test_search_resolve.py +44 -0
  211. oh_my_wiki-2.7.0/tests/test_server.py +257 -0
  212. oh_my_wiki-2.7.0/tests/test_server_visibility.py +26 -0
  213. oh_my_wiki-2.7.0/tests/test_setup_wizard.py +301 -0
  214. oh_my_wiki-2.7.0/tests/test_slugify.py +26 -0
  215. oh_my_wiki-2.7.0/tests/test_supersede.py +48 -0
  216. oh_my_wiki-2.7.0/tests/test_text_match.py +49 -0
  217. oh_my_wiki-2.7.0/tests/test_urls.py +47 -0
  218. oh_my_wiki-2.7.0/tests/test_vault_mode_scaffolds.py +59 -0
  219. oh_my_wiki-2.7.0/tests/test_vector_index.py +26 -0
  220. oh_my_wiki-2.7.0/tests/test_viewers.py +245 -0
  221. oh_my_wiki-2.7.0/tests/test_wiki_lint.py +75 -0
  222. oh_my_wiki-2.7.0/tests/test_wiki_lint_v2.py +125 -0
  223. oh_my_wiki-2.7.0/tests/test_wizard.py +73 -0
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "oh-my-wiki-marketplace",
3
+ "description": "oh-my-wiki — the Karpathy LLM Wiki skill, distributed as its own marketplace. After `/plugin marketplace add dandacompany/oh-my-wiki`, install with `/plugin install oh-my-wiki@oh-my-wiki-marketplace`.",
4
+ "plugins": [
5
+ {
6
+ "name": "oh-my-wiki",
7
+ "manifest": "./.claude-plugin/plugin.json"
8
+ }
9
+ ]
10
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "oh-my-wiki",
3
+ "version": "2.7.0",
4
+ "description": "Karpathy-style LLM Wiki skill with multi-vault sqlite registry. Capture sources, build a structured wiki, query it with cited answers. Also addressable as 'omw'.",
5
+ "author": "dandacompany",
6
+ "license": "MIT",
7
+ "homepage": "https://github.com/dandacompany/oh-my-wiki",
8
+ "repository": "https://github.com/dandacompany/oh-my-wiki",
9
+ "trigger_keywords": [
10
+ "open my wiki",
11
+ "ingest this",
12
+ "find a note about X",
13
+ "what does my wiki say about X",
14
+ "omw",
15
+ "use omw",
16
+ "/omw",
17
+ "위키 열어줘",
18
+ "이거 정리해줘",
19
+ "X 관련 노트 찾아줘",
20
+ "위키에 물어봐",
21
+ "오엠더블유",
22
+ "autoresearch this",
23
+ "research this for me",
24
+ "이거 리서치해줘",
25
+ "이거 조사해줘",
26
+ "fact-check this",
27
+ "verify the claims",
28
+ "check this for contradictions",
29
+ "build a glossary",
30
+ "팩트체크해줘",
31
+ "모순 있는지 봐줘",
32
+ "용어집 만들어줘"
33
+ ],
34
+ "ops": [
35
+ "vault-setup",
36
+ "vault-use",
37
+ "vault-list",
38
+ "vault-forget",
39
+ "vault-import-memo",
40
+ "create",
41
+ "find",
42
+ "open",
43
+ "edit",
44
+ "move",
45
+ "delete",
46
+ "ingest",
47
+ "query",
48
+ "autoresearch",
49
+ "persona-factcheck",
50
+ "persona-consistency",
51
+ "persona-terminology",
52
+ "lint",
53
+ "hot-cache"
54
+ ],
55
+ "skill_path": "./SKILL.md",
56
+ "commands_path": "./commands",
57
+ "scripts_path": "./scripts"
58
+ }
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Dante (datapod.k@gmail.com)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,21 @@
1
+ # Include the repo-root bundle dirs in the sdist so a wheel built FROM the sdist
2
+ # (e.g. `pip install --no-binary oh-my-wiki`) can still run setup.py's build_py
3
+ # bundle copy. A directly-built wheel doesn't need these (build_py reads them
4
+ # from the working tree), but an sdist must carry the source to stay buildable.
5
+ graft schemas
6
+ graft personas
7
+ graft backends
8
+ graft commands
9
+ graft omw
10
+ graft references
11
+ graft hooks
12
+ graft .claude-plugin
13
+
14
+ # Root files the build-time bundle copy needs in the sdist (README is also the
15
+ # PyPI long-description source; SKILL.md is the skill entry point).
16
+ include README.md
17
+ include SKILL.md
18
+
19
+ global-exclude __pycache__ *.pyc *.pyo
20
+ global-exclude *.egg-info
21
+ prune scripts/_bundle
@@ -0,0 +1,261 @@
1
+ Metadata-Version: 2.4
2
+ Name: oh-my-wiki
3
+ Version: 2.7.0
4
+ Summary: Karpathy-style LLM Wiki skill with multi-vault sqlite registry and Socratic wizard
5
+ Author: dandacompany
6
+ License-Expression: MIT
7
+ Keywords: wiki,llm,rag,sqlite,knowledge-base,claude,agent
8
+ Requires-Python: >=3.10
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE
11
+ Requires-Dist: pyyaml>=6.0
12
+ Requires-Dist: pypdf>=4.0
13
+ Provides-Extra: dev
14
+ Requires-Dist: pytest>=8.0; extra == "dev"
15
+ Requires-Dist: pytest-rerunfailures>=14; extra == "dev"
16
+ Requires-Dist: ruff>=0.6; extra == "dev"
17
+ Provides-Extra: wizard
18
+ Requires-Dist: questionary>=2.0; extra == "wizard"
19
+ Provides-Extra: embedding
20
+ Requires-Dist: sqlite-vec>=0.1; extra == "embedding"
21
+ Requires-Dist: openai>=1.0; extra == "embedding"
22
+ Dynamic: license-file
23
+
24
+ # oh-my-wiki (OMW)
25
+
26
+ [![CI](https://github.com/dandacompany/oh-my-wiki/actions/workflows/ci.yml/badge.svg)](https://github.com/dandacompany/oh-my-wiki/actions/workflows/ci.yml)
27
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
28
+ [![Claude Code Plugin](https://img.shields.io/badge/Claude%20Code-Plugin-6C5CE7)](https://github.com/dandacompany/oh-my-wiki#install)
29
+ [![skillsmp](https://img.shields.io/badge/skills.sh-oh--my--wiki-1abc9c)](https://skills.sh/)
30
+
31
+ A host-universal LLM-wiki you drive from your AI coding agent (Claude Code / Codex / Gemini).
32
+
33
+ oh-my-wiki exposes exactly two surfaces. The **`omw` CLI** handles deterministic ops — `omw setup`, `omw vault create`, `omw lint`, `omw schema list`, `omw supersede`, `omw review`, `omw links`, `omw fields`, `omw view`, `omw doctor` — with no LLM required. The **`omw` skill** brings natural-language reasoning inside your AI session: ingest, query, autoresearch, and a small set of wiki-maintenance personas (librarian, curator, fact-checker, consistency-checker, terminology-manager). The model is _personas propose → you confirm → deterministic ops execute_, so every file change is auditable. omw stays focused on the wiki — multi-step orchestration is left to your host AI agent (Claude Code / Codex / Gemini), not reimplemented here.
34
+
35
+ **Short alias:** `OMW` (lowercase `omw`). Both `oh-my-wiki` and `omw` register as skills and respond to the same trigger phrases.
36
+
37
+ **Tutorial:** Walk through real dialogs and verified CLI examples in [TUTORIAL.md](./TUTORIAL.md) (English) or [TUTORIAL.ko.md](./TUTORIAL.ko.md) (한국어).
38
+
39
+ ---
40
+
41
+ ## What's new in v3
42
+
43
+ - **Schemas** — 13 built-in page types (`omw schema list/show`), with per-vault overrides in `<vault>/schemas/`
44
+ - **Confidence + supersede** — `confidence` frontmatter field; `omw supersede` retires old pages cleanly
45
+ - **Review queue (SR)** — spaced-repetition via `omw review due` / `omw review done`
46
+ - **Web search** — `omw search` queries an external provider (brave/tavily/exa/…); `omw serve` exposes vault FTS5 as a local retrieve-only HTTP API on port 8765
47
+ - **Entity-linking** — `omw links suggest` / `omw links link` auto-inserts `[[slug|Name]]` references
48
+ - **Inline fields** — `omw fields` reads `key::` inline syntax alongside frontmatter
49
+ - **Korean matching** — Korean entity names with josa (`카르파시가`) are suggested and linked correctly
50
+ - **Note viewers** — `omw view` opens the active vault, a page, or a search in Obsidian or Logseq (URI schemes, no plugin needed); `omw setup viewer` scaffolds the viewer config
51
+ - **Visibility (secure-by-default)** — `omw visibility get/set` marks pages `public`/`private`; `omw serve` exposes only public pages
52
+ - **URL inbox + fetch** — `omw fetch <url>` saves a web page or YouTube transcript to `raw/` (tiered urllib → chromium → cloud, SSRF-guarded); `omw inbox add/list/run/remove` queues URLs for batch fetch
53
+
54
+ ---
55
+
56
+ ## Install
57
+
58
+ Choose whichever path fits your environment. After any path, run `omw doctor` to confirm everything is wired correctly.
59
+
60
+ ### Path A — Skills CLI (recommended for Claude Code users)
61
+
62
+ ```bash
63
+ skills add dandacompany/oh-my-wiki@oh-my-wiki -g -y --copy -a claude-code
64
+ ```
65
+
66
+ This installs the skill into `~/.claude/skills/` and registers both the `oh-my-wiki` and `omw` short-alias skill names.
67
+
68
+ ### Path B — Claude Code plugin marketplace
69
+
70
+ In any Claude Code session:
71
+
72
+ ```
73
+ /plugin marketplace add dandacompany/oh-my-wiki
74
+ /plugin install oh-my-wiki@oh-my-wiki-marketplace
75
+ ```
76
+
77
+ Update later with `/plugin marketplace update oh-my-wiki-marketplace`.
78
+
79
+ ### Path C — git clone + install script (developers, Codex CLI users)
80
+
81
+ ```bash
82
+ git clone https://github.com/dandacompany/oh-my-wiki
83
+ cd oh-my-wiki
84
+ bash bin/install.sh
85
+ ```
86
+
87
+ The installer checks for Python 3.10+, pip-installs the package editable, creates `~/.claude/skills/oh-my-wiki` and `~/.claude/skills/omw` symlinks (idempotent), runs `pytest -q` to verify, and prints next steps. Add `--dev` to include pytest/ruff extras. Use `--force` to replace existing symlinks without a prompt; `--no-test` to skip the test step. Run `bash bin/install.sh --help` for all flags.
88
+
89
+ ### Verify the install
90
+
91
+ ```
92
+ omw doctor
93
+ ```
94
+
95
+ ```
96
+ omw home: /Users/you/.omw ok
97
+ registry: /Users/you/.omw/registry.db ok
98
+ * demo (wiki/markdown) /Users/you/.omw/vaults/demo
99
+ ```
100
+
101
+ ---
102
+
103
+ ## Quickstart (~60 seconds)
104
+
105
+ **Step 1 — Run the setup wizard**
106
+
107
+ ```
108
+ omw setup
109
+ ```
110
+
111
+ Follow the prompts to configure your first vault, search provider, and persona preferences. Accept the defaults for a fast start.
112
+
113
+ **Step 2 — Check status**
114
+
115
+ ```
116
+ omw status
117
+ ```
118
+
119
+ ```json
120
+ {
121
+ "vault_count": 0,
122
+ "active": null,
123
+ "needs": "setup",
124
+ "vaults": []
125
+ }
126
+ ```
127
+
128
+ **Step 3 — Create your first vault**
129
+
130
+ ```
131
+ omw vault create demo --mode wiki
132
+ ```
133
+
134
+ ```json
135
+ {
136
+ "created": "demo",
137
+ "path": "~/.omw/vaults/demo",
138
+ "mode": "wiki",
139
+ "type": "markdown"
140
+ }
141
+ ```
142
+
143
+ ```
144
+ omw vault list
145
+ ```
146
+
147
+ ```json
148
+ [
149
+ {
150
+ "name": "demo",
151
+ "path": "~/.omw/vaults/demo",
152
+ "mode": "wiki",
153
+ "type": "markdown",
154
+ "is_active": true
155
+ }
156
+ ]
157
+ ```
158
+
159
+ **Step 4 — Add a note (in your AI session)**
160
+
161
+ Open Claude Code (or Codex / Gemini) and say:
162
+
163
+ ```
164
+ ingest this
165
+
166
+ Andrej Karpathy calls the LLM Wiki a "compounding knowledge artifact". Every
167
+ source gets saved verbatim to raw/, a summary lands at wiki/summaries/, and
168
+ the entities and concepts that appeared get their own pages. 10–15 page touches
169
+ per ingest is normal.
170
+ ```
171
+
172
+ **Step 5 — Run a lint check**
173
+
174
+ ```
175
+ omw lint
176
+ ```
177
+
178
+ ```json
179
+ {
180
+ "vault_id": 1,
181
+ "vault_path": "~/.omw/vaults/demo",
182
+ "frontmatter_issues": [],
183
+ "drift": { "missing_files": [], "mtime_drift": [] },
184
+ "links": {
185
+ "broken": [],
186
+ "orphans": [],
187
+ "index_drift": { "missing_from_index": [], "dangling_in_index": [] },
188
+ "contradictions": [],
189
+ "supersedes": [],
190
+ "superseded_unmarked": [],
191
+ "link_suggestions": []
192
+ },
193
+ "auto_fix_hints": []
194
+ }
195
+ ```
196
+
197
+ → Full tutorial: [TUTORIAL.md](TUTORIAL.md) · [한국어](TUTORIAL.ko.md)
198
+
199
+ ---
200
+
201
+ ## Architecture
202
+
203
+ ```
204
+ SKILL.md dispatcher → commands/<op>.md (LLM procedure) → scripts/<op>.py (deterministic I/O)
205
+ └─ registry.py → ~/.omw/registry.db (sqlite)
206
+ └─ adapters.py → filesystem (markdown / obsidian)
207
+ ```
208
+
209
+ The 17 CLI subcommands:
210
+
211
+ | Subcommand | Purpose |
212
+ | ------------ | -------------------------------------------------------------------- |
213
+ | `status` | Show active vault and registry state |
214
+ | `vault` | Create, list, use, forget vaults |
215
+ | `lint` | Structural health check (frontmatter + links) |
216
+ | `search` | Web search via the configured external provider (brave/tavily/exa/…) |
217
+ | `serve` | Local retrieve-only HTTP query API (port 8765) — public pages only |
218
+ | `view` | Open the vault / a page / a search in Obsidian or Logseq |
219
+ | `visibility` | Get / set a page's public/private visibility (`get` / `set`) |
220
+ | `schema` | List / inspect page-type schemas |
221
+ | `supersede` | Mark a page superseded by a newer one |
222
+ | `review` | Spaced-repetition review queue (due / done) |
223
+ | `links` | Suggest and insert `[[slug]]` entity links |
224
+ | `fields` | Read frontmatter + inline `key::` fields |
225
+ | `import` | Import an existing folder as a vault |
226
+ | `fetch` | Fetch one URL (web page / YouTube transcript) into `raw/` |
227
+ | `inbox` | Queue URLs and batch-fetch them into `raw/` (add/list/run/remove) |
228
+ | `setup` | Interactive setup wizard |
229
+ | `doctor` | Verify install health |
230
+
231
+ > **Visibility (secure-by-default):** `omw serve` returns only pages with
232
+ > `visibility: public` in their frontmatter. Pages without the field are treated as
233
+ > private and never served. Publish pages explicitly with
234
+ > `omw visibility set <relpath...> public`.
235
+
236
+ The skill also exposes natural-language ops via your AI session: `ingest`, `query`, `autoresearch`, `find`, `edit`, `move`, `delete`, and wiki-maintenance persona invocations (`fact-check`, `consistency-check`, `build glossary`).
237
+
238
+ ---
239
+
240
+ ## Storage
241
+
242
+ - The vault registry lives at `~/.omw/registry.db` (override with `OMW_HOME`) as a per-user sqlite database.
243
+ - The note index is regenerated by `scripts/reindex.py` after every mutation.
244
+ - Your files stay in the vault path you chose. oh-my-wiki never touches them outside the op you explicitly invoked.
245
+
246
+ ---
247
+
248
+ ## Development
249
+
250
+ - `pytest -v` runs all tests.
251
+ - `ruff check scripts/ tests/` runs the linter.
252
+ - `omw status` inspects the registry/vault state.
253
+ - `python3 -m scripts.lint --vault-id N` runs the health check on a specific vault.
254
+
255
+ Continuous integration runs on GitHub Actions, across a matrix of Python 3.10, 3.11, and 3.12 on both ubuntu-latest and macos-latest.
256
+
257
+ ---
258
+
259
+ ## License
260
+
261
+ Released under the MIT License. See [LICENSE](./LICENSE) for the full text.
@@ -0,0 +1,238 @@
1
+ # oh-my-wiki (OMW)
2
+
3
+ [![CI](https://github.com/dandacompany/oh-my-wiki/actions/workflows/ci.yml/badge.svg)](https://github.com/dandacompany/oh-my-wiki/actions/workflows/ci.yml)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![Claude Code Plugin](https://img.shields.io/badge/Claude%20Code-Plugin-6C5CE7)](https://github.com/dandacompany/oh-my-wiki#install)
6
+ [![skillsmp](https://img.shields.io/badge/skills.sh-oh--my--wiki-1abc9c)](https://skills.sh/)
7
+
8
+ A host-universal LLM-wiki you drive from your AI coding agent (Claude Code / Codex / Gemini).
9
+
10
+ oh-my-wiki exposes exactly two surfaces. The **`omw` CLI** handles deterministic ops — `omw setup`, `omw vault create`, `omw lint`, `omw schema list`, `omw supersede`, `omw review`, `omw links`, `omw fields`, `omw view`, `omw doctor` — with no LLM required. The **`omw` skill** brings natural-language reasoning inside your AI session: ingest, query, autoresearch, and a small set of wiki-maintenance personas (librarian, curator, fact-checker, consistency-checker, terminology-manager). The model is _personas propose → you confirm → deterministic ops execute_, so every file change is auditable. omw stays focused on the wiki — multi-step orchestration is left to your host AI agent (Claude Code / Codex / Gemini), not reimplemented here.
11
+
12
+ **Short alias:** `OMW` (lowercase `omw`). Both `oh-my-wiki` and `omw` register as skills and respond to the same trigger phrases.
13
+
14
+ **Tutorial:** Walk through real dialogs and verified CLI examples in [TUTORIAL.md](./TUTORIAL.md) (English) or [TUTORIAL.ko.md](./TUTORIAL.ko.md) (한국어).
15
+
16
+ ---
17
+
18
+ ## What's new in v3
19
+
20
+ - **Schemas** — 13 built-in page types (`omw schema list/show`), with per-vault overrides in `<vault>/schemas/`
21
+ - **Confidence + supersede** — `confidence` frontmatter field; `omw supersede` retires old pages cleanly
22
+ - **Review queue (SR)** — spaced-repetition via `omw review due` / `omw review done`
23
+ - **Web search** — `omw search` queries an external provider (brave/tavily/exa/…); `omw serve` exposes vault FTS5 as a local retrieve-only HTTP API on port 8765
24
+ - **Entity-linking** — `omw links suggest` / `omw links link` auto-inserts `[[slug|Name]]` references
25
+ - **Inline fields** — `omw fields` reads `key::` inline syntax alongside frontmatter
26
+ - **Korean matching** — Korean entity names with josa (`카르파시가`) are suggested and linked correctly
27
+ - **Note viewers** — `omw view` opens the active vault, a page, or a search in Obsidian or Logseq (URI schemes, no plugin needed); `omw setup viewer` scaffolds the viewer config
28
+ - **Visibility (secure-by-default)** — `omw visibility get/set` marks pages `public`/`private`; `omw serve` exposes only public pages
29
+ - **URL inbox + fetch** — `omw fetch <url>` saves a web page or YouTube transcript to `raw/` (tiered urllib → chromium → cloud, SSRF-guarded); `omw inbox add/list/run/remove` queues URLs for batch fetch
30
+
31
+ ---
32
+
33
+ ## Install
34
+
35
+ Choose whichever path fits your environment. After any path, run `omw doctor` to confirm everything is wired correctly.
36
+
37
+ ### Path A — Skills CLI (recommended for Claude Code users)
38
+
39
+ ```bash
40
+ skills add dandacompany/oh-my-wiki@oh-my-wiki -g -y --copy -a claude-code
41
+ ```
42
+
43
+ This installs the skill into `~/.claude/skills/` and registers both the `oh-my-wiki` and `omw` short-alias skill names.
44
+
45
+ ### Path B — Claude Code plugin marketplace
46
+
47
+ In any Claude Code session:
48
+
49
+ ```
50
+ /plugin marketplace add dandacompany/oh-my-wiki
51
+ /plugin install oh-my-wiki@oh-my-wiki-marketplace
52
+ ```
53
+
54
+ Update later with `/plugin marketplace update oh-my-wiki-marketplace`.
55
+
56
+ ### Path C — git clone + install script (developers, Codex CLI users)
57
+
58
+ ```bash
59
+ git clone https://github.com/dandacompany/oh-my-wiki
60
+ cd oh-my-wiki
61
+ bash bin/install.sh
62
+ ```
63
+
64
+ The installer checks for Python 3.10+, pip-installs the package editable, creates `~/.claude/skills/oh-my-wiki` and `~/.claude/skills/omw` symlinks (idempotent), runs `pytest -q` to verify, and prints next steps. Add `--dev` to include pytest/ruff extras. Use `--force` to replace existing symlinks without a prompt; `--no-test` to skip the test step. Run `bash bin/install.sh --help` for all flags.
65
+
66
+ ### Verify the install
67
+
68
+ ```
69
+ omw doctor
70
+ ```
71
+
72
+ ```
73
+ omw home: /Users/you/.omw ok
74
+ registry: /Users/you/.omw/registry.db ok
75
+ * demo (wiki/markdown) /Users/you/.omw/vaults/demo
76
+ ```
77
+
78
+ ---
79
+
80
+ ## Quickstart (~60 seconds)
81
+
82
+ **Step 1 — Run the setup wizard**
83
+
84
+ ```
85
+ omw setup
86
+ ```
87
+
88
+ Follow the prompts to configure your first vault, search provider, and persona preferences. Accept the defaults for a fast start.
89
+
90
+ **Step 2 — Check status**
91
+
92
+ ```
93
+ omw status
94
+ ```
95
+
96
+ ```json
97
+ {
98
+ "vault_count": 0,
99
+ "active": null,
100
+ "needs": "setup",
101
+ "vaults": []
102
+ }
103
+ ```
104
+
105
+ **Step 3 — Create your first vault**
106
+
107
+ ```
108
+ omw vault create demo --mode wiki
109
+ ```
110
+
111
+ ```json
112
+ {
113
+ "created": "demo",
114
+ "path": "~/.omw/vaults/demo",
115
+ "mode": "wiki",
116
+ "type": "markdown"
117
+ }
118
+ ```
119
+
120
+ ```
121
+ omw vault list
122
+ ```
123
+
124
+ ```json
125
+ [
126
+ {
127
+ "name": "demo",
128
+ "path": "~/.omw/vaults/demo",
129
+ "mode": "wiki",
130
+ "type": "markdown",
131
+ "is_active": true
132
+ }
133
+ ]
134
+ ```
135
+
136
+ **Step 4 — Add a note (in your AI session)**
137
+
138
+ Open Claude Code (or Codex / Gemini) and say:
139
+
140
+ ```
141
+ ingest this
142
+
143
+ Andrej Karpathy calls the LLM Wiki a "compounding knowledge artifact". Every
144
+ source gets saved verbatim to raw/, a summary lands at wiki/summaries/, and
145
+ the entities and concepts that appeared get their own pages. 10–15 page touches
146
+ per ingest is normal.
147
+ ```
148
+
149
+ **Step 5 — Run a lint check**
150
+
151
+ ```
152
+ omw lint
153
+ ```
154
+
155
+ ```json
156
+ {
157
+ "vault_id": 1,
158
+ "vault_path": "~/.omw/vaults/demo",
159
+ "frontmatter_issues": [],
160
+ "drift": { "missing_files": [], "mtime_drift": [] },
161
+ "links": {
162
+ "broken": [],
163
+ "orphans": [],
164
+ "index_drift": { "missing_from_index": [], "dangling_in_index": [] },
165
+ "contradictions": [],
166
+ "supersedes": [],
167
+ "superseded_unmarked": [],
168
+ "link_suggestions": []
169
+ },
170
+ "auto_fix_hints": []
171
+ }
172
+ ```
173
+
174
+ → Full tutorial: [TUTORIAL.md](TUTORIAL.md) · [한국어](TUTORIAL.ko.md)
175
+
176
+ ---
177
+
178
+ ## Architecture
179
+
180
+ ```
181
+ SKILL.md dispatcher → commands/<op>.md (LLM procedure) → scripts/<op>.py (deterministic I/O)
182
+ └─ registry.py → ~/.omw/registry.db (sqlite)
183
+ └─ adapters.py → filesystem (markdown / obsidian)
184
+ ```
185
+
186
+ The 17 CLI subcommands:
187
+
188
+ | Subcommand | Purpose |
189
+ | ------------ | -------------------------------------------------------------------- |
190
+ | `status` | Show active vault and registry state |
191
+ | `vault` | Create, list, use, forget vaults |
192
+ | `lint` | Structural health check (frontmatter + links) |
193
+ | `search` | Web search via the configured external provider (brave/tavily/exa/…) |
194
+ | `serve` | Local retrieve-only HTTP query API (port 8765) — public pages only |
195
+ | `view` | Open the vault / a page / a search in Obsidian or Logseq |
196
+ | `visibility` | Get / set a page's public/private visibility (`get` / `set`) |
197
+ | `schema` | List / inspect page-type schemas |
198
+ | `supersede` | Mark a page superseded by a newer one |
199
+ | `review` | Spaced-repetition review queue (due / done) |
200
+ | `links` | Suggest and insert `[[slug]]` entity links |
201
+ | `fields` | Read frontmatter + inline `key::` fields |
202
+ | `import` | Import an existing folder as a vault |
203
+ | `fetch` | Fetch one URL (web page / YouTube transcript) into `raw/` |
204
+ | `inbox` | Queue URLs and batch-fetch them into `raw/` (add/list/run/remove) |
205
+ | `setup` | Interactive setup wizard |
206
+ | `doctor` | Verify install health |
207
+
208
+ > **Visibility (secure-by-default):** `omw serve` returns only pages with
209
+ > `visibility: public` in their frontmatter. Pages without the field are treated as
210
+ > private and never served. Publish pages explicitly with
211
+ > `omw visibility set <relpath...> public`.
212
+
213
+ The skill also exposes natural-language ops via your AI session: `ingest`, `query`, `autoresearch`, `find`, `edit`, `move`, `delete`, and wiki-maintenance persona invocations (`fact-check`, `consistency-check`, `build glossary`).
214
+
215
+ ---
216
+
217
+ ## Storage
218
+
219
+ - The vault registry lives at `~/.omw/registry.db` (override with `OMW_HOME`) as a per-user sqlite database.
220
+ - The note index is regenerated by `scripts/reindex.py` after every mutation.
221
+ - Your files stay in the vault path you chose. oh-my-wiki never touches them outside the op you explicitly invoked.
222
+
223
+ ---
224
+
225
+ ## Development
226
+
227
+ - `pytest -v` runs all tests.
228
+ - `ruff check scripts/ tests/` runs the linter.
229
+ - `omw status` inspects the registry/vault state.
230
+ - `python3 -m scripts.lint --vault-id N` runs the health check on a specific vault.
231
+
232
+ Continuous integration runs on GitHub Actions, across a matrix of Python 3.10, 3.11, and 3.12 on both ubuntu-latest and macos-latest.
233
+
234
+ ---
235
+
236
+ ## License
237
+
238
+ Released under the MIT License. See [LICENSE](./LICENSE) for the full text.