agent-wiki-cli 1.2.0__tar.gz → 1.3.1__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 (206) hide show
  1. {agent_wiki_cli-1.2.0/src/agent_wiki_cli.egg-info → agent_wiki_cli-1.3.1}/PKG-INFO +79 -13
  2. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/README.md +77 -12
  3. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/pyproject.toml +4 -1
  4. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1/src/agent_wiki_cli.egg-info}/PKG-INFO +79 -13
  5. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/agent_wiki_cli.egg-info/SOURCES.txt +12 -0
  6. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/agent_wiki_cli.egg-info/requires.txt +1 -0
  7. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/api.py +2 -1
  8. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/cli.py +144 -6
  9. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/bootstrap_cmd.py +531 -57
  10. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/extract_cmd.py +32 -3
  11. agent_wiki_cli-1.3.1/src/llm_wiki_cli/commands/init_cmd.py +162 -0
  12. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/migrate_cmd.py +10 -6
  13. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/review_cmd.py +6 -1
  14. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/skills_cmd.py +19 -2
  15. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/status_cmd.py +26 -2
  16. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/sync_cmd.py +1094 -76
  17. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/uninstall_cmd.py +60 -1
  18. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/upgrade_cmd.py +79 -6
  19. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/config.py +52 -1
  20. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/__init__.py +9 -0
  21. agent_wiki_cli-1.3.1/src/llm_wiki_cli/extractors/fastapi_contracts.py +495 -0
  22. agent_wiki_cli-1.3.1/src/llm_wiki_cli/extractors/python_contracts.py +798 -0
  23. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/python_extractor.py +135 -97
  24. agent_wiki_cli-1.3.1/src/llm_wiki_cli/services/api_contracts.py +2110 -0
  25. agent_wiki_cli-1.3.1/src/llm_wiki_cli/services/contracts.py +71 -0
  26. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/inventory_cache.py +3 -0
  27. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/mcp_server.py +2 -1
  28. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/obsidian.py +1 -0
  29. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/paths.py +30 -1
  30. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/schema.py +89 -172
  31. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/site_export.py +1 -0
  32. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/skills.py +91 -0
  33. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/team.py +101 -13
  34. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/wiki_surface.py +9 -0
  35. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/wiki-bootstrap/SKILL.md +5 -1
  36. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/wiki-bootstrap/reference.md +4 -3
  37. agent_wiki_cli-1.3.1/src/llm_wiki_cli/skills/wiki-reference/SKILL.md +25 -0
  38. agent_wiki_cli-1.3.1/src/llm_wiki_cli/skills/wiki-reference/reference.md +169 -0
  39. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/wiki-sync/SKILL.md +16 -1
  40. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/wiki-sync/reference.md +9 -0
  41. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_api.py +24 -0
  42. agent_wiki_cli-1.3.1/tests/test_api_contracts.py +755 -0
  43. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_bootstrap.py +198 -0
  44. agent_wiki_cli-1.3.1/tests/test_bootstrap_api_contracts.py +271 -0
  45. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_cli.py +99 -0
  46. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_config.py +81 -1
  47. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_extract.py +320 -2
  48. agent_wiki_cli-1.3.1/tests/test_extract_api_contracts.py +241 -0
  49. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_extractor_inventory_contracts.py +34 -1
  50. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_init.py +132 -1
  51. agent_wiki_cli-1.3.1/tests/test_install.py +170 -0
  52. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_mcp.py +33 -0
  53. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_migrate.py +10 -0
  54. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_navigation_layouts.py +1 -0
  55. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_obsidian.py +13 -0
  56. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_package_metadata.py +1 -1
  57. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_phase4_quality.py +1 -0
  58. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_schema.py +36 -50
  59. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_site_export.py +20 -0
  60. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_source_snapshot.py +16 -0
  61. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_status.py +51 -1
  62. agent_wiki_cli-1.3.1/tests/test_surface_initialization.py +625 -0
  63. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_sync.py +47 -0
  64. agent_wiki_cli-1.3.1/tests/test_sync_api_contracts.py +411 -0
  65. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_uninstall.py +40 -0
  66. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_upgrade.py +169 -2
  67. agent_wiki_cli-1.3.1/tests/test_wiki_reference_skill.py +171 -0
  68. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_wiki_surface.py +12 -0
  69. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_wiki_surface_index.py +4 -3
  70. agent_wiki_cli-1.2.0/src/llm_wiki_cli/commands/init_cmd.py +0 -97
  71. agent_wiki_cli-1.2.0/src/llm_wiki_cli/services/contracts.py +0 -33
  72. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/LICENSE +0 -0
  73. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/MANIFEST.in +0 -0
  74. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/examples/plugins/m4-documentation-hooks/detectors.py +0 -0
  75. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/examples/plugins/m4-documentation-hooks/llm-wiki-plugin.json +0 -0
  76. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/examples/plugins/m4-documentation-hooks/styles.py +0 -0
  77. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/setup.cfg +0 -0
  78. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/agent_wiki_cli.egg-info/dependency_links.txt +0 -0
  79. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/agent_wiki_cli.egg-info/entry_points.txt +0 -0
  80. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/agent_wiki_cli.egg-info/top_level.txt +0 -0
  81. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/__init__.py +0 -0
  82. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/__init__.py +0 -0
  83. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/bump_cmd.py +0 -0
  84. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/ci_check_cmd.py +0 -0
  85. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/context_cmd.py +0 -0
  86. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/generate_prompt_cmd.py +0 -0
  87. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/hook_cmd.py +0 -0
  88. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/install_cmd.py +0 -0
  89. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/lint_cmd.py +0 -0
  90. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/mcp_cmd.py +0 -0
  91. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/metrics_cmd.py +0 -0
  92. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/obsidian_cmd.py +0 -0
  93. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/plugins_cmd.py +0 -0
  94. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/prepare_extractors_cmd.py +0 -0
  95. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/release_cmd.py +0 -0
  96. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/site_cmd.py +0 -0
  97. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/team_cmd.py +0 -0
  98. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/commands/trigger_cmd.py +0 -0
  99. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/examples/plugins/m4-documentation-hooks/detectors.py +0 -0
  100. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/examples/plugins/m4-documentation-hooks/llm-wiki-plugin.json +0 -0
  101. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/examples/plugins/m4-documentation-hooks/styles.py +0 -0
  102. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/common.py +0 -0
  103. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/go_extractor.py +0 -0
  104. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/go_scripts/go.mod +0 -0
  105. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/go_scripts/main.go +0 -0
  106. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/haskell_extractor.py +0 -0
  107. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/haskell_scripts/Inventory.hs +0 -0
  108. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/haskell_scripts/Json.hs +0 -0
  109. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/haskell_scripts/Main.hs +0 -0
  110. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/haskell_scripts/Parser.hs +0 -0
  111. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/haskell_scripts/Paths.hs +0 -0
  112. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/rust_extractor.py +0 -0
  113. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/rust_scripts/Cargo.lock +0 -0
  114. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/rust_scripts/Cargo.toml +0 -0
  115. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/rust_scripts/src/main.rs +0 -0
  116. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/ts_extractor.py +0 -0
  117. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/ts_scripts/extract.js +0 -0
  118. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/extractors/ts_scripts/package.json +0 -0
  119. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/__init__.py +0 -0
  120. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/circuit_breaker.py +0 -0
  121. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/data_flow.py +0 -0
  122. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/dependencies.py +0 -0
  123. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/diagrams.py +0 -0
  124. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/documentation_queries.py +0 -0
  125. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/entrypoints.py +0 -0
  126. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/extractor_helpers.py +0 -0
  127. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/imports.py +0 -0
  128. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/infrastructure_inventory.py +0 -0
  129. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/io.py +0 -0
  130. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/lockfile.py +0 -0
  131. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/metrics.py +0 -0
  132. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/module_maps.py +0 -0
  133. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/packages.py +0 -0
  134. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/plugin_samples.py +0 -0
  135. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/plugins.py +0 -0
  136. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/relationships.py +0 -0
  137. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/secure_file.py +0 -0
  138. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/site_html_check.py +0 -0
  139. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/source_snapshot.py +0 -0
  140. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/versioning.py +0 -0
  141. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/wiki_media.py +0 -0
  142. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/services/wiki_surface_index.py +0 -0
  143. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/attack-surface/SKILL.md +0 -0
  144. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/attack-surface/reference.md +0 -0
  145. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/dep-audit/SKILL.md +0 -0
  146. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/dep-audit/reference.md +0 -0
  147. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/dep-vuln-triage/SKILL.md +0 -0
  148. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/dep-vuln-triage/reference.md +0 -0
  149. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/doc-hub/SKILL.md +0 -0
  150. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/doc-hub/reference.md +0 -0
  151. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/doc-review/SKILL.md +0 -0
  152. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/doc-review/reference.md +0 -0
  153. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/impact-analysis/SKILL.md +0 -0
  154. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/impact-analysis/reference.md +0 -0
  155. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/infra-review/SKILL.md +0 -0
  156. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/infra-review/reference.md +0 -0
  157. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/onboarding-guide/SKILL.md +0 -0
  158. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/onboarding-guide/reference.md +0 -0
  159. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/publish-docs/SKILL.md +0 -0
  160. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/publish-docs/reference.md +0 -0
  161. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/usage-examples/SKILL.md +0 -0
  162. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/usage-examples/reference.md +0 -0
  163. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/user-docs-author/SKILL.md +0 -0
  164. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/src/llm_wiki_cli/skills/user-docs-author/reference.md +0 -0
  165. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_bump.py +0 -0
  166. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_ci_check.py +0 -0
  167. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_circuit_breaker.py +0 -0
  168. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_context.py +0 -0
  169. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_data_flow.py +0 -0
  170. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_dependencies.py +0 -0
  171. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_dependencies_external.py +0 -0
  172. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_diagrams.py +0 -0
  173. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_docker_bootstrap.py +0 -0
  174. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_docker_extract.py +0 -0
  175. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_docker_lint.py +0 -0
  176. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_documentation_queries.py +0 -0
  177. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_e2e.py +0 -0
  178. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_entrypoints.py +0 -0
  179. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_extractor_helpers.py +0 -0
  180. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_generate_prompt.py +0 -0
  181. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_go_extract.py +0 -0
  182. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_haskell_extract.py +0 -0
  183. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_hook.py +0 -0
  184. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_imports.py +0 -0
  185. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_infrastructure_inventory.py +0 -0
  186. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_inventory_cache.py +0 -0
  187. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_io.py +0 -0
  188. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_lint.py +0 -0
  189. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_lockfile.py +0 -0
  190. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_m4_dogfood.py +0 -0
  191. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_m4_plugin_sample.py +0 -0
  192. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_metrics.py +0 -0
  193. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_module_maps.py +0 -0
  194. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_multilanguage_wiki.py +0 -0
  195. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_packages.py +0 -0
  196. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_paths.py +0 -0
  197. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_plugins.py +0 -0
  198. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_relationships.py +0 -0
  199. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_release.py +0 -0
  200. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_rust_extract.py +0 -0
  201. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_secure_file.py +0 -0
  202. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_skills.py +0 -0
  203. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_team.py +0 -0
  204. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_trigger.py +0 -0
  205. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_ts_extract.py +0 -0
  206. {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.1}/tests/test_versioning.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-wiki-cli
3
- Version: 1.2.0
3
+ Version: 1.3.1
4
4
  Summary: CLI tool to maintain hybrid LLM Wikis for multi-language projects.
5
5
  Author-email: Denis Sivagin <denissvgn@gmail.com>
6
6
  License: MIT
@@ -17,6 +17,7 @@ Classifier: Topic :: Software Development :: Documentation
17
17
  Requires-Python: >=3.10
18
18
  Description-Content-Type: text/markdown
19
19
  License-File: LICENSE
20
+ Requires-Dist: PyYAML>=6
20
21
  Requires-Dist: tomli>=2; python_version < "3.11"
21
22
  Provides-Extra: dev
22
23
  Requires-Dist: pytest>=7.0; extra == "dev"
@@ -53,6 +54,7 @@ canonical wiki surface registry:
53
54
  | `guides/` | semantic | Agent-authored onboarding, operator, and contributor guides. |
54
55
  | `flows/` | mixed | User-flow pages, one per detected entry point, with bounded generated Mermaid call and data-flow diagrams. |
55
56
  | `infrastructure/` | mixed | Dockerfile, Compose, GitHub Actions, Kubernetes, and targeted runtime/config YAML pages. |
57
+ | `api-contracts.md` | mixed | Optional production HTTP contract inventory generated from static FastAPI declarations or an exported OpenAPI document; `## Notes` is semantic. |
56
58
  | `dependencies.md` | mixed | Optional internal and external dependency architecture page. |
57
59
  | `load-order.md` | mixed | Optional load-order, cycle, and startup-caveat architecture page. |
58
60
 
@@ -88,8 +90,11 @@ plain, MkDocs-compatible, or Docusaurus-compatible Markdown output without
88
90
  invoking external builders. Static-site output is a derived artifact; it must
89
91
  not become a second editable source of truth.
90
92
 
91
- The package has no required Python runtime dependencies. Optional features use
92
- external tools when they are available on `PATH`.
93
+ The package has a small required Python runtime footprint. `PyYAML>=6` parses
94
+ user-supplied OpenAPI YAML, and Python versions older than 3.11 use `tomli` for
95
+ TOML. FastAPI, Pydantic, and the target application are not runtime
96
+ dependencies and are never imported for contract extraction. Optional language
97
+ features use external tools when they are available on `PATH`.
93
98
 
94
99
  ## Supported Inputs
95
100
 
@@ -102,6 +107,7 @@ external tools when they are available on `PATH`.
102
107
  | Haskell | bundled GHC parser helper for syntax-only inventory | prepared helper binary |
103
108
  | Docker / Compose | built-in parsers | none |
104
109
  | Runtime/config YAML | targeted built-in parsers | none |
110
+ | OpenAPI 3.0/3.1 JSON / YAML | stdlib `json` / PyYAML safe loader | `PyYAML>=6` (installed with the package) |
105
111
  | MCP server | official Python MCP SDK | `agent-wiki-cli[mcp]`, Python 3.10+ |
106
112
 
107
113
  TypeScript/JavaScript, Go, Rust, and Haskell helper setup is explicit; prepare
@@ -109,11 +115,13 @@ helper dependencies and binaries with `llm-wiki prepare-extractors`. Lint, CI,
109
115
  and extract never run `npm install`, `go build`, `go run`, `cargo build`,
110
116
  `cargo run`, or `ghc` automatically.
111
117
 
112
- Source discovery honors `.gitignore` before extractors run. A root, unanchored
113
- `lib/` rule is treated as a generic build-output pattern for TypeScript
114
- projects, so `.ts`, `.tsx`, `.js`, and `.jsx` files under `src/lib/` remain
115
- first-party source; top-level `lib/`, excluded dependency/build directories,
116
- and explicit nested `.gitignore` rules still stay excluded. Generated agent
118
+ Source discovery honors `.gitignore` before extractors run. Unescaped trailing
119
+ ASCII spaces in ignore entries are ignored, while `\ ` preserves a literal
120
+ final space. A root, unanchored `lib/` rule is treated as a generic build-output
121
+ pattern for TypeScript projects, so `.ts`, `.tsx`, `.js`, and `.jsx` files under
122
+ `src/lib/` remain first-party source; top-level `lib/`, excluded
123
+ dependency/build directories, and explicit nested `.gitignore` rules still stay
124
+ excluded. Generated agent
117
125
  worktree copies such as `.claude/worktrees/**` are excluded from default
118
126
  snapshots; pass an exact `--paths` entry if you intentionally want to inspect
119
127
  one file there.
@@ -234,9 +242,17 @@ Install a post-commit hook:
234
242
  llm-wiki install-hook
235
243
  ```
236
244
 
237
- `init` writes the selected agent and quality-hint setting to
245
+ `init` writes the selected agent and instruction preferences to
238
246
  `.git/.llm-wiki-agent` when the project is a Git repo. Outside Git, it falls
239
- back to `<wiki-dir>/.llm-wiki-agent`.
247
+ back to `<wiki-dir>/.llm-wiki-agent`. Tool-issue reporting guidance is omitted
248
+ by default; opt in when you want agents to create local bug-report files:
249
+
250
+ ```bash
251
+ llm-wiki init --agent claude --issue-reporting
252
+ ```
253
+
254
+ This only adds guidance to the generated agent instruction block. It does not
255
+ upload reports, submit issues, or enable telemetry.
240
256
 
241
257
  ## Automation
242
258
 
@@ -293,10 +309,16 @@ Scaffold the wiki structure and agent constraint file.
293
309
  llm-wiki init --agent claude
294
310
  llm-wiki init --agent copilot --wiki-dir .wiki
295
311
  llm-wiki init --agent cursor --no-quality-hints
312
+ llm-wiki init --agent generic --issue-reporting
296
313
  ```
297
314
 
298
315
  Supported agents are `claude`, `aider`, `opencode`, `copilot`, `cursor`, and
299
- `generic`.
316
+ `generic`. `--issue-reporting` includes instructions that ask agents to record
317
+ `llm-wiki` tool failures under the local `llm-wiki-issues/` directory. The
318
+ instructions are off by default; use `--no-issue-reporting` to explicitly omit
319
+ them when refreshing an existing initialization. On a refresh, omitting
320
+ `--agent` reuses the stored agent; a project with no stored selection defaults
321
+ to `generic`.
300
322
 
301
323
  ### `bootstrap`
302
324
 
@@ -310,6 +332,8 @@ llm-wiki bootstrap --skip-workflows
310
332
  llm-wiki bootstrap --skip-flows
311
333
  llm-wiki bootstrap --skip-data-flow
312
334
  llm-wiki bootstrap --skip-dependencies
335
+ llm-wiki bootstrap --api-contracts
336
+ llm-wiki bootstrap --api-contracts --openapi-file openapi.yaml
313
337
  llm-wiki bootstrap --include-tests go
314
338
  llm-wiki bootstrap --helper-cache-dir .cache/llm-wiki-helpers
315
339
  llm-wiki bootstrap --format json --source-adapter
@@ -328,6 +352,12 @@ Dependency architecture pages are generated as `dependencies.md` and
328
352
  pages or lint diagnostics. Generated `index.md` is a registry-backed landing
329
353
  page with a surface overview table, per-surface counts, grouped user-flow
330
354
  entries, optional dependency architecture links, and a direct log link.
355
+ `--api-contracts` adds the optional `api-contracts.md` production HTTP
356
+ inventory and generated API-contract sections on matching HTTP flow pages.
357
+ Passing `--openapi-file` implies `--api-contracts`; the supplied OpenAPI 3.0 or
358
+ 3.1 JSON/YAML document is authoritative for wire fields, while syntax-only
359
+ source analysis contributes handler, module, entity, and flow links. The target
360
+ application is never imported or executed.
331
361
  `--depth full` is the default and includes
332
362
  docstrings, imports, attributes, method signatures, generated relationship
333
363
  sections, bounded per-module dependency mini-map summaries, and diagram data
@@ -356,6 +386,8 @@ llm-wiki sync --src-dir . --wiki-dir docs/llm_wiki
356
386
  llm-wiki sync --jobs auto --cache-stats --src-dir . --wiki-dir docs/llm_wiki
357
387
  llm-wiki sync --cache-dir .cache/llm-wiki-inventory --helper-cache-dir .cache/llm-wiki-helpers
358
388
  llm-wiki sync --include-tests go --src-dir . --wiki-dir docs/llm_wiki
389
+ llm-wiki sync --initialize-surfaces flows,dependencies --flow-category http --exclude-tests --dry-run
390
+ llm-wiki sync --initialize-surfaces api-contracts --openapi-file openapi.yaml --dry-run
359
391
  llm-wiki sync --src-dir /path/to/repo --wiki-dir docs/llm_wiki --allow-external-src
360
392
  ```
361
393
 
@@ -371,6 +403,14 @@ languages and plugin extractors whose manifests set `"parallel_safe": true`.
371
403
  Sync repairs
372
404
  manifests with invalid source hashes without touching pages, and stops unusually
373
405
  broad diffs unless `--force` is used.
406
+ `--initialize-surfaces` enters a surface-only backfill mode for `flows`,
407
+ `dependencies`, and/or `api-contracts`: ordinary entity/module source changes
408
+ are reported but deferred. `--flow-category` is repeatable, `--exclude-tests`
409
+ uses a cross-platform test-path classifier for the selected flow/dependency
410
+ analysis, and `--dry-run` previews exact page counts and safety-guard results
411
+ without writing the wiki, manifest, log, index, surface index, or cache.
412
+ Selected flow categories and test filtering are persisted in manifest v4 so a
413
+ later ordinary sync cannot silently expand an HTTP-only backfill to every flow.
374
414
  Pass `--include-tests go` to include Go `_test.go` files in the synced
375
415
  inventory and generated module pages; the default remains production Go source
376
416
  only.
@@ -404,6 +444,13 @@ When flow pages already exist, `sync` also refreshes generated call-sequence and
404
444
  `## Data flow` content from the current inventory while preserving the
405
445
  human-authored `## Behavior` section by default.
406
446
 
447
+ When `api-contracts.md` exists, sync refreshes its generated operation inventory
448
+ and matching flow-page contract sections while preserving `## Notes` and
449
+ `## Behavior`. A bootstrap/sync OpenAPI input is stored as a source-relative
450
+ path and hash; a specification-only change refreshes contracts even when source
451
+ files are unchanged. Use `--clear-openapi-file` to return deliberately to
452
+ static contract authority.
453
+
407
454
  When `sync` rebuilds `index.md`, the generated landing-page overview and
408
455
  per-surface link sections are replaced from the live registry and inventory.
409
456
  With semantic preservation enabled, old custom top-level index sections are
@@ -421,6 +468,7 @@ llm-wiki extract --src-dir .
421
468
  llm-wiki extract --src-dir . --changed
422
469
  llm-wiki extract --src-dir . --summary
423
470
  llm-wiki extract --src-dir . --deep
471
+ llm-wiki extract --src-dir . --deep --openapi-file openapi.json
424
472
  llm-wiki extract --src-dir . --paths src/foo.py src/bar.ts
425
473
  llm-wiki extract --src-dir . --package llm_wiki_cli
426
474
  llm-wiki extract --src-dir . --include-empty
@@ -473,7 +521,13 @@ With `--deep`, Python function entries may carry optional `data_effects` blocks
473
521
  (inputs, selected global/attribute reads, writes, returns, and boundary effects
474
522
  such as filesystem, environment, process, network, output, and logging calls)
475
523
  and optional `calls` lists (in-body call targets, optionally with compact `args`
476
- and `kwargs` expression summaries). The payload also gains an optional top-level
524
+ and `kwargs` expression summaries). Function `params` include reconstructable
525
+ parameter kinds for positional-only, positional-or-keyword, variadic,
526
+ keyword-only, and variadic-keyword declarations. Python model/type inventory
527
+ also carries optional required/nullable/default/factory, alias, constraint,
528
+ description/example, `Annotated`, validator/config, enum-member, literal, and
529
+ type-alias metadata without importing Pydantic or application modules.
530
+ The payload also gains an optional top-level
477
531
  `entrypoints` array (detected user-reachable entry points: `{id, category, file,
478
532
  symbol, label}`), a `data_flows` list for detected user flows, plus a top-level
479
533
  `dependencies` object with internal `edges`, `cycles`, per-language external
@@ -489,6 +543,13 @@ keys are POSIX paths relative to `--src-dir`, never absolute paths. The v1
489
543
  contract permits additive fields; incompatible shape changes require a new
490
544
  schema version. The M3 data-flow fields are therefore optional additions under
491
545
  `llm-wiki-extract/v1`, not a schema bump.
546
+ Deep Python extraction also emits optional per-file `frameworks.fastapi`
547
+ declarations and a top-level `api_contracts` object. Static uncertainty is
548
+ reported through `unknowns` and diagnostics; test-source and
549
+ `include_in_schema=False` operations are excluded from the production operation
550
+ inventory by default. With `--openapi-file`, OpenAPI defines the operation set
551
+ and wire contract, external references are never fetched, and unmatched or
552
+ conflicting static declarations remain visible as diagnostics.
492
553
  Installed `entrypoint_detector` plugin hooks also contribute to the same
493
554
  `entrypoints` array in deep output. Detector failures are isolated: built-in
494
555
  entry-point detection still runs, `extract` prints a warning to stderr, and the
@@ -1120,10 +1181,15 @@ llm-wiki upgrade --agent copilot
1120
1181
  llm-wiki upgrade --wiki-dir .wiki
1121
1182
  llm-wiki upgrade --force
1122
1183
  llm-wiki upgrade --no-quality-hints
1184
+ llm-wiki upgrade --issue-reporting
1185
+ llm-wiki upgrade --no-issue-reporting
1123
1186
  ```
1124
1187
 
1125
1188
  `upgrade` refreshes agent instruction blocks, wiki directories, hooks, plugin
1126
- skill blocks, and persisted local config. For older wiki layouts, it
1189
+ skill blocks, and persisted local config. The issue-reporting pair explicitly
1190
+ enables or disables the local agent guidance; without either flag, `upgrade`
1191
+ preserves the stored preference. Configurations created before this preference
1192
+ existed default to disabled. For older wiki layouts, `upgrade`
1127
1193
  idempotently adds registry-standard directories such as `flows/` and missing
1128
1194
  `.gitkeep` files without rewriting existing index, log, semantic pages, or
1129
1195
  optional `dependencies.md` / `load-order.md` pages. Run `bootstrap` or `sync`
@@ -23,6 +23,7 @@ canonical wiki surface registry:
23
23
  | `guides/` | semantic | Agent-authored onboarding, operator, and contributor guides. |
24
24
  | `flows/` | mixed | User-flow pages, one per detected entry point, with bounded generated Mermaid call and data-flow diagrams. |
25
25
  | `infrastructure/` | mixed | Dockerfile, Compose, GitHub Actions, Kubernetes, and targeted runtime/config YAML pages. |
26
+ | `api-contracts.md` | mixed | Optional production HTTP contract inventory generated from static FastAPI declarations or an exported OpenAPI document; `## Notes` is semantic. |
26
27
  | `dependencies.md` | mixed | Optional internal and external dependency architecture page. |
27
28
  | `load-order.md` | mixed | Optional load-order, cycle, and startup-caveat architecture page. |
28
29
 
@@ -58,8 +59,11 @@ plain, MkDocs-compatible, or Docusaurus-compatible Markdown output without
58
59
  invoking external builders. Static-site output is a derived artifact; it must
59
60
  not become a second editable source of truth.
60
61
 
61
- The package has no required Python runtime dependencies. Optional features use
62
- external tools when they are available on `PATH`.
62
+ The package has a small required Python runtime footprint. `PyYAML>=6` parses
63
+ user-supplied OpenAPI YAML, and Python versions older than 3.11 use `tomli` for
64
+ TOML. FastAPI, Pydantic, and the target application are not runtime
65
+ dependencies and are never imported for contract extraction. Optional language
66
+ features use external tools when they are available on `PATH`.
63
67
 
64
68
  ## Supported Inputs
65
69
 
@@ -72,6 +76,7 @@ external tools when they are available on `PATH`.
72
76
  | Haskell | bundled GHC parser helper for syntax-only inventory | prepared helper binary |
73
77
  | Docker / Compose | built-in parsers | none |
74
78
  | Runtime/config YAML | targeted built-in parsers | none |
79
+ | OpenAPI 3.0/3.1 JSON / YAML | stdlib `json` / PyYAML safe loader | `PyYAML>=6` (installed with the package) |
75
80
  | MCP server | official Python MCP SDK | `agent-wiki-cli[mcp]`, Python 3.10+ |
76
81
 
77
82
  TypeScript/JavaScript, Go, Rust, and Haskell helper setup is explicit; prepare
@@ -79,11 +84,13 @@ helper dependencies and binaries with `llm-wiki prepare-extractors`. Lint, CI,
79
84
  and extract never run `npm install`, `go build`, `go run`, `cargo build`,
80
85
  `cargo run`, or `ghc` automatically.
81
86
 
82
- Source discovery honors `.gitignore` before extractors run. A root, unanchored
83
- `lib/` rule is treated as a generic build-output pattern for TypeScript
84
- projects, so `.ts`, `.tsx`, `.js`, and `.jsx` files under `src/lib/` remain
85
- first-party source; top-level `lib/`, excluded dependency/build directories,
86
- and explicit nested `.gitignore` rules still stay excluded. Generated agent
87
+ Source discovery honors `.gitignore` before extractors run. Unescaped trailing
88
+ ASCII spaces in ignore entries are ignored, while `\ ` preserves a literal
89
+ final space. A root, unanchored `lib/` rule is treated as a generic build-output
90
+ pattern for TypeScript projects, so `.ts`, `.tsx`, `.js`, and `.jsx` files under
91
+ `src/lib/` remain first-party source; top-level `lib/`, excluded
92
+ dependency/build directories, and explicit nested `.gitignore` rules still stay
93
+ excluded. Generated agent
87
94
  worktree copies such as `.claude/worktrees/**` are excluded from default
88
95
  snapshots; pass an exact `--paths` entry if you intentionally want to inspect
89
96
  one file there.
@@ -204,9 +211,17 @@ Install a post-commit hook:
204
211
  llm-wiki install-hook
205
212
  ```
206
213
 
207
- `init` writes the selected agent and quality-hint setting to
214
+ `init` writes the selected agent and instruction preferences to
208
215
  `.git/.llm-wiki-agent` when the project is a Git repo. Outside Git, it falls
209
- back to `<wiki-dir>/.llm-wiki-agent`.
216
+ back to `<wiki-dir>/.llm-wiki-agent`. Tool-issue reporting guidance is omitted
217
+ by default; opt in when you want agents to create local bug-report files:
218
+
219
+ ```bash
220
+ llm-wiki init --agent claude --issue-reporting
221
+ ```
222
+
223
+ This only adds guidance to the generated agent instruction block. It does not
224
+ upload reports, submit issues, or enable telemetry.
210
225
 
211
226
  ## Automation
212
227
 
@@ -263,10 +278,16 @@ Scaffold the wiki structure and agent constraint file.
263
278
  llm-wiki init --agent claude
264
279
  llm-wiki init --agent copilot --wiki-dir .wiki
265
280
  llm-wiki init --agent cursor --no-quality-hints
281
+ llm-wiki init --agent generic --issue-reporting
266
282
  ```
267
283
 
268
284
  Supported agents are `claude`, `aider`, `opencode`, `copilot`, `cursor`, and
269
- `generic`.
285
+ `generic`. `--issue-reporting` includes instructions that ask agents to record
286
+ `llm-wiki` tool failures under the local `llm-wiki-issues/` directory. The
287
+ instructions are off by default; use `--no-issue-reporting` to explicitly omit
288
+ them when refreshing an existing initialization. On a refresh, omitting
289
+ `--agent` reuses the stored agent; a project with no stored selection defaults
290
+ to `generic`.
270
291
 
271
292
  ### `bootstrap`
272
293
 
@@ -280,6 +301,8 @@ llm-wiki bootstrap --skip-workflows
280
301
  llm-wiki bootstrap --skip-flows
281
302
  llm-wiki bootstrap --skip-data-flow
282
303
  llm-wiki bootstrap --skip-dependencies
304
+ llm-wiki bootstrap --api-contracts
305
+ llm-wiki bootstrap --api-contracts --openapi-file openapi.yaml
283
306
  llm-wiki bootstrap --include-tests go
284
307
  llm-wiki bootstrap --helper-cache-dir .cache/llm-wiki-helpers
285
308
  llm-wiki bootstrap --format json --source-adapter
@@ -298,6 +321,12 @@ Dependency architecture pages are generated as `dependencies.md` and
298
321
  pages or lint diagnostics. Generated `index.md` is a registry-backed landing
299
322
  page with a surface overview table, per-surface counts, grouped user-flow
300
323
  entries, optional dependency architecture links, and a direct log link.
324
+ `--api-contracts` adds the optional `api-contracts.md` production HTTP
325
+ inventory and generated API-contract sections on matching HTTP flow pages.
326
+ Passing `--openapi-file` implies `--api-contracts`; the supplied OpenAPI 3.0 or
327
+ 3.1 JSON/YAML document is authoritative for wire fields, while syntax-only
328
+ source analysis contributes handler, module, entity, and flow links. The target
329
+ application is never imported or executed.
301
330
  `--depth full` is the default and includes
302
331
  docstrings, imports, attributes, method signatures, generated relationship
303
332
  sections, bounded per-module dependency mini-map summaries, and diagram data
@@ -326,6 +355,8 @@ llm-wiki sync --src-dir . --wiki-dir docs/llm_wiki
326
355
  llm-wiki sync --jobs auto --cache-stats --src-dir . --wiki-dir docs/llm_wiki
327
356
  llm-wiki sync --cache-dir .cache/llm-wiki-inventory --helper-cache-dir .cache/llm-wiki-helpers
328
357
  llm-wiki sync --include-tests go --src-dir . --wiki-dir docs/llm_wiki
358
+ llm-wiki sync --initialize-surfaces flows,dependencies --flow-category http --exclude-tests --dry-run
359
+ llm-wiki sync --initialize-surfaces api-contracts --openapi-file openapi.yaml --dry-run
329
360
  llm-wiki sync --src-dir /path/to/repo --wiki-dir docs/llm_wiki --allow-external-src
330
361
  ```
331
362
 
@@ -341,6 +372,14 @@ languages and plugin extractors whose manifests set `"parallel_safe": true`.
341
372
  Sync repairs
342
373
  manifests with invalid source hashes without touching pages, and stops unusually
343
374
  broad diffs unless `--force` is used.
375
+ `--initialize-surfaces` enters a surface-only backfill mode for `flows`,
376
+ `dependencies`, and/or `api-contracts`: ordinary entity/module source changes
377
+ are reported but deferred. `--flow-category` is repeatable, `--exclude-tests`
378
+ uses a cross-platform test-path classifier for the selected flow/dependency
379
+ analysis, and `--dry-run` previews exact page counts and safety-guard results
380
+ without writing the wiki, manifest, log, index, surface index, or cache.
381
+ Selected flow categories and test filtering are persisted in manifest v4 so a
382
+ later ordinary sync cannot silently expand an HTTP-only backfill to every flow.
344
383
  Pass `--include-tests go` to include Go `_test.go` files in the synced
345
384
  inventory and generated module pages; the default remains production Go source
346
385
  only.
@@ -374,6 +413,13 @@ When flow pages already exist, `sync` also refreshes generated call-sequence and
374
413
  `## Data flow` content from the current inventory while preserving the
375
414
  human-authored `## Behavior` section by default.
376
415
 
416
+ When `api-contracts.md` exists, sync refreshes its generated operation inventory
417
+ and matching flow-page contract sections while preserving `## Notes` and
418
+ `## Behavior`. A bootstrap/sync OpenAPI input is stored as a source-relative
419
+ path and hash; a specification-only change refreshes contracts even when source
420
+ files are unchanged. Use `--clear-openapi-file` to return deliberately to
421
+ static contract authority.
422
+
377
423
  When `sync` rebuilds `index.md`, the generated landing-page overview and
378
424
  per-surface link sections are replaced from the live registry and inventory.
379
425
  With semantic preservation enabled, old custom top-level index sections are
@@ -391,6 +437,7 @@ llm-wiki extract --src-dir .
391
437
  llm-wiki extract --src-dir . --changed
392
438
  llm-wiki extract --src-dir . --summary
393
439
  llm-wiki extract --src-dir . --deep
440
+ llm-wiki extract --src-dir . --deep --openapi-file openapi.json
394
441
  llm-wiki extract --src-dir . --paths src/foo.py src/bar.ts
395
442
  llm-wiki extract --src-dir . --package llm_wiki_cli
396
443
  llm-wiki extract --src-dir . --include-empty
@@ -443,7 +490,13 @@ With `--deep`, Python function entries may carry optional `data_effects` blocks
443
490
  (inputs, selected global/attribute reads, writes, returns, and boundary effects
444
491
  such as filesystem, environment, process, network, output, and logging calls)
445
492
  and optional `calls` lists (in-body call targets, optionally with compact `args`
446
- and `kwargs` expression summaries). The payload also gains an optional top-level
493
+ and `kwargs` expression summaries). Function `params` include reconstructable
494
+ parameter kinds for positional-only, positional-or-keyword, variadic,
495
+ keyword-only, and variadic-keyword declarations. Python model/type inventory
496
+ also carries optional required/nullable/default/factory, alias, constraint,
497
+ description/example, `Annotated`, validator/config, enum-member, literal, and
498
+ type-alias metadata without importing Pydantic or application modules.
499
+ The payload also gains an optional top-level
447
500
  `entrypoints` array (detected user-reachable entry points: `{id, category, file,
448
501
  symbol, label}`), a `data_flows` list for detected user flows, plus a top-level
449
502
  `dependencies` object with internal `edges`, `cycles`, per-language external
@@ -459,6 +512,13 @@ keys are POSIX paths relative to `--src-dir`, never absolute paths. The v1
459
512
  contract permits additive fields; incompatible shape changes require a new
460
513
  schema version. The M3 data-flow fields are therefore optional additions under
461
514
  `llm-wiki-extract/v1`, not a schema bump.
515
+ Deep Python extraction also emits optional per-file `frameworks.fastapi`
516
+ declarations and a top-level `api_contracts` object. Static uncertainty is
517
+ reported through `unknowns` and diagnostics; test-source and
518
+ `include_in_schema=False` operations are excluded from the production operation
519
+ inventory by default. With `--openapi-file`, OpenAPI defines the operation set
520
+ and wire contract, external references are never fetched, and unmatched or
521
+ conflicting static declarations remain visible as diagnostics.
462
522
  Installed `entrypoint_detector` plugin hooks also contribute to the same
463
523
  `entrypoints` array in deep output. Detector failures are isolated: built-in
464
524
  entry-point detection still runs, `extract` prints a warning to stderr, and the
@@ -1090,10 +1150,15 @@ llm-wiki upgrade --agent copilot
1090
1150
  llm-wiki upgrade --wiki-dir .wiki
1091
1151
  llm-wiki upgrade --force
1092
1152
  llm-wiki upgrade --no-quality-hints
1153
+ llm-wiki upgrade --issue-reporting
1154
+ llm-wiki upgrade --no-issue-reporting
1093
1155
  ```
1094
1156
 
1095
1157
  `upgrade` refreshes agent instruction blocks, wiki directories, hooks, plugin
1096
- skill blocks, and persisted local config. For older wiki layouts, it
1158
+ skill blocks, and persisted local config. The issue-reporting pair explicitly
1159
+ enables or disables the local agent guidance; without either flag, `upgrade`
1160
+ preserves the stored preference. Configurations created before this preference
1161
+ existed default to disabled. For older wiki layouts, `upgrade`
1097
1162
  idempotently adds registry-standard directories such as `flows/` and missing
1098
1163
  `.gitkeep` files without rewriting existing index, log, semantic pages, or
1099
1164
  optional `dependencies.md` / `load-order.md` pages. Run `bootstrap` or `sync`
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agent-wiki-cli"
7
- version = "1.2.0"
7
+ version = "1.3.1"
8
8
  description = "CLI tool to maintain hybrid LLM Wikis for multi-language projects."
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -22,6 +22,7 @@ classifiers = [
22
22
  "Topic :: Software Development :: Documentation",
23
23
  ]
24
24
  dependencies = [
25
+ "PyYAML>=6",
25
26
  "tomli>=2; python_version < '3.11'",
26
27
  ]
27
28
 
@@ -89,6 +90,8 @@ where = ["src"]
89
90
  "skills/user-docs-author/reference.md",
90
91
  "skills/wiki-bootstrap/SKILL.md",
91
92
  "skills/wiki-bootstrap/reference.md",
93
+ "skills/wiki-reference/SKILL.md",
94
+ "skills/wiki-reference/reference.md",
92
95
  "skills/wiki-sync/SKILL.md",
93
96
  "skills/wiki-sync/reference.md",
94
97
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-wiki-cli
3
- Version: 1.2.0
3
+ Version: 1.3.1
4
4
  Summary: CLI tool to maintain hybrid LLM Wikis for multi-language projects.
5
5
  Author-email: Denis Sivagin <denissvgn@gmail.com>
6
6
  License: MIT
@@ -17,6 +17,7 @@ Classifier: Topic :: Software Development :: Documentation
17
17
  Requires-Python: >=3.10
18
18
  Description-Content-Type: text/markdown
19
19
  License-File: LICENSE
20
+ Requires-Dist: PyYAML>=6
20
21
  Requires-Dist: tomli>=2; python_version < "3.11"
21
22
  Provides-Extra: dev
22
23
  Requires-Dist: pytest>=7.0; extra == "dev"
@@ -53,6 +54,7 @@ canonical wiki surface registry:
53
54
  | `guides/` | semantic | Agent-authored onboarding, operator, and contributor guides. |
54
55
  | `flows/` | mixed | User-flow pages, one per detected entry point, with bounded generated Mermaid call and data-flow diagrams. |
55
56
  | `infrastructure/` | mixed | Dockerfile, Compose, GitHub Actions, Kubernetes, and targeted runtime/config YAML pages. |
57
+ | `api-contracts.md` | mixed | Optional production HTTP contract inventory generated from static FastAPI declarations or an exported OpenAPI document; `## Notes` is semantic. |
56
58
  | `dependencies.md` | mixed | Optional internal and external dependency architecture page. |
57
59
  | `load-order.md` | mixed | Optional load-order, cycle, and startup-caveat architecture page. |
58
60
 
@@ -88,8 +90,11 @@ plain, MkDocs-compatible, or Docusaurus-compatible Markdown output without
88
90
  invoking external builders. Static-site output is a derived artifact; it must
89
91
  not become a second editable source of truth.
90
92
 
91
- The package has no required Python runtime dependencies. Optional features use
92
- external tools when they are available on `PATH`.
93
+ The package has a small required Python runtime footprint. `PyYAML>=6` parses
94
+ user-supplied OpenAPI YAML, and Python versions older than 3.11 use `tomli` for
95
+ TOML. FastAPI, Pydantic, and the target application are not runtime
96
+ dependencies and are never imported for contract extraction. Optional language
97
+ features use external tools when they are available on `PATH`.
93
98
 
94
99
  ## Supported Inputs
95
100
 
@@ -102,6 +107,7 @@ external tools when they are available on `PATH`.
102
107
  | Haskell | bundled GHC parser helper for syntax-only inventory | prepared helper binary |
103
108
  | Docker / Compose | built-in parsers | none |
104
109
  | Runtime/config YAML | targeted built-in parsers | none |
110
+ | OpenAPI 3.0/3.1 JSON / YAML | stdlib `json` / PyYAML safe loader | `PyYAML>=6` (installed with the package) |
105
111
  | MCP server | official Python MCP SDK | `agent-wiki-cli[mcp]`, Python 3.10+ |
106
112
 
107
113
  TypeScript/JavaScript, Go, Rust, and Haskell helper setup is explicit; prepare
@@ -109,11 +115,13 @@ helper dependencies and binaries with `llm-wiki prepare-extractors`. Lint, CI,
109
115
  and extract never run `npm install`, `go build`, `go run`, `cargo build`,
110
116
  `cargo run`, or `ghc` automatically.
111
117
 
112
- Source discovery honors `.gitignore` before extractors run. A root, unanchored
113
- `lib/` rule is treated as a generic build-output pattern for TypeScript
114
- projects, so `.ts`, `.tsx`, `.js`, and `.jsx` files under `src/lib/` remain
115
- first-party source; top-level `lib/`, excluded dependency/build directories,
116
- and explicit nested `.gitignore` rules still stay excluded. Generated agent
118
+ Source discovery honors `.gitignore` before extractors run. Unescaped trailing
119
+ ASCII spaces in ignore entries are ignored, while `\ ` preserves a literal
120
+ final space. A root, unanchored `lib/` rule is treated as a generic build-output
121
+ pattern for TypeScript projects, so `.ts`, `.tsx`, `.js`, and `.jsx` files under
122
+ `src/lib/` remain first-party source; top-level `lib/`, excluded
123
+ dependency/build directories, and explicit nested `.gitignore` rules still stay
124
+ excluded. Generated agent
117
125
  worktree copies such as `.claude/worktrees/**` are excluded from default
118
126
  snapshots; pass an exact `--paths` entry if you intentionally want to inspect
119
127
  one file there.
@@ -234,9 +242,17 @@ Install a post-commit hook:
234
242
  llm-wiki install-hook
235
243
  ```
236
244
 
237
- `init` writes the selected agent and quality-hint setting to
245
+ `init` writes the selected agent and instruction preferences to
238
246
  `.git/.llm-wiki-agent` when the project is a Git repo. Outside Git, it falls
239
- back to `<wiki-dir>/.llm-wiki-agent`.
247
+ back to `<wiki-dir>/.llm-wiki-agent`. Tool-issue reporting guidance is omitted
248
+ by default; opt in when you want agents to create local bug-report files:
249
+
250
+ ```bash
251
+ llm-wiki init --agent claude --issue-reporting
252
+ ```
253
+
254
+ This only adds guidance to the generated agent instruction block. It does not
255
+ upload reports, submit issues, or enable telemetry.
240
256
 
241
257
  ## Automation
242
258
 
@@ -293,10 +309,16 @@ Scaffold the wiki structure and agent constraint file.
293
309
  llm-wiki init --agent claude
294
310
  llm-wiki init --agent copilot --wiki-dir .wiki
295
311
  llm-wiki init --agent cursor --no-quality-hints
312
+ llm-wiki init --agent generic --issue-reporting
296
313
  ```
297
314
 
298
315
  Supported agents are `claude`, `aider`, `opencode`, `copilot`, `cursor`, and
299
- `generic`.
316
+ `generic`. `--issue-reporting` includes instructions that ask agents to record
317
+ `llm-wiki` tool failures under the local `llm-wiki-issues/` directory. The
318
+ instructions are off by default; use `--no-issue-reporting` to explicitly omit
319
+ them when refreshing an existing initialization. On a refresh, omitting
320
+ `--agent` reuses the stored agent; a project with no stored selection defaults
321
+ to `generic`.
300
322
 
301
323
  ### `bootstrap`
302
324
 
@@ -310,6 +332,8 @@ llm-wiki bootstrap --skip-workflows
310
332
  llm-wiki bootstrap --skip-flows
311
333
  llm-wiki bootstrap --skip-data-flow
312
334
  llm-wiki bootstrap --skip-dependencies
335
+ llm-wiki bootstrap --api-contracts
336
+ llm-wiki bootstrap --api-contracts --openapi-file openapi.yaml
313
337
  llm-wiki bootstrap --include-tests go
314
338
  llm-wiki bootstrap --helper-cache-dir .cache/llm-wiki-helpers
315
339
  llm-wiki bootstrap --format json --source-adapter
@@ -328,6 +352,12 @@ Dependency architecture pages are generated as `dependencies.md` and
328
352
  pages or lint diagnostics. Generated `index.md` is a registry-backed landing
329
353
  page with a surface overview table, per-surface counts, grouped user-flow
330
354
  entries, optional dependency architecture links, and a direct log link.
355
+ `--api-contracts` adds the optional `api-contracts.md` production HTTP
356
+ inventory and generated API-contract sections on matching HTTP flow pages.
357
+ Passing `--openapi-file` implies `--api-contracts`; the supplied OpenAPI 3.0 or
358
+ 3.1 JSON/YAML document is authoritative for wire fields, while syntax-only
359
+ source analysis contributes handler, module, entity, and flow links. The target
360
+ application is never imported or executed.
331
361
  `--depth full` is the default and includes
332
362
  docstrings, imports, attributes, method signatures, generated relationship
333
363
  sections, bounded per-module dependency mini-map summaries, and diagram data
@@ -356,6 +386,8 @@ llm-wiki sync --src-dir . --wiki-dir docs/llm_wiki
356
386
  llm-wiki sync --jobs auto --cache-stats --src-dir . --wiki-dir docs/llm_wiki
357
387
  llm-wiki sync --cache-dir .cache/llm-wiki-inventory --helper-cache-dir .cache/llm-wiki-helpers
358
388
  llm-wiki sync --include-tests go --src-dir . --wiki-dir docs/llm_wiki
389
+ llm-wiki sync --initialize-surfaces flows,dependencies --flow-category http --exclude-tests --dry-run
390
+ llm-wiki sync --initialize-surfaces api-contracts --openapi-file openapi.yaml --dry-run
359
391
  llm-wiki sync --src-dir /path/to/repo --wiki-dir docs/llm_wiki --allow-external-src
360
392
  ```
361
393
 
@@ -371,6 +403,14 @@ languages and plugin extractors whose manifests set `"parallel_safe": true`.
371
403
  Sync repairs
372
404
  manifests with invalid source hashes without touching pages, and stops unusually
373
405
  broad diffs unless `--force` is used.
406
+ `--initialize-surfaces` enters a surface-only backfill mode for `flows`,
407
+ `dependencies`, and/or `api-contracts`: ordinary entity/module source changes
408
+ are reported but deferred. `--flow-category` is repeatable, `--exclude-tests`
409
+ uses a cross-platform test-path classifier for the selected flow/dependency
410
+ analysis, and `--dry-run` previews exact page counts and safety-guard results
411
+ without writing the wiki, manifest, log, index, surface index, or cache.
412
+ Selected flow categories and test filtering are persisted in manifest v4 so a
413
+ later ordinary sync cannot silently expand an HTTP-only backfill to every flow.
374
414
  Pass `--include-tests go` to include Go `_test.go` files in the synced
375
415
  inventory and generated module pages; the default remains production Go source
376
416
  only.
@@ -404,6 +444,13 @@ When flow pages already exist, `sync` also refreshes generated call-sequence and
404
444
  `## Data flow` content from the current inventory while preserving the
405
445
  human-authored `## Behavior` section by default.
406
446
 
447
+ When `api-contracts.md` exists, sync refreshes its generated operation inventory
448
+ and matching flow-page contract sections while preserving `## Notes` and
449
+ `## Behavior`. A bootstrap/sync OpenAPI input is stored as a source-relative
450
+ path and hash; a specification-only change refreshes contracts even when source
451
+ files are unchanged. Use `--clear-openapi-file` to return deliberately to
452
+ static contract authority.
453
+
407
454
  When `sync` rebuilds `index.md`, the generated landing-page overview and
408
455
  per-surface link sections are replaced from the live registry and inventory.
409
456
  With semantic preservation enabled, old custom top-level index sections are
@@ -421,6 +468,7 @@ llm-wiki extract --src-dir .
421
468
  llm-wiki extract --src-dir . --changed
422
469
  llm-wiki extract --src-dir . --summary
423
470
  llm-wiki extract --src-dir . --deep
471
+ llm-wiki extract --src-dir . --deep --openapi-file openapi.json
424
472
  llm-wiki extract --src-dir . --paths src/foo.py src/bar.ts
425
473
  llm-wiki extract --src-dir . --package llm_wiki_cli
426
474
  llm-wiki extract --src-dir . --include-empty
@@ -473,7 +521,13 @@ With `--deep`, Python function entries may carry optional `data_effects` blocks
473
521
  (inputs, selected global/attribute reads, writes, returns, and boundary effects
474
522
  such as filesystem, environment, process, network, output, and logging calls)
475
523
  and optional `calls` lists (in-body call targets, optionally with compact `args`
476
- and `kwargs` expression summaries). The payload also gains an optional top-level
524
+ and `kwargs` expression summaries). Function `params` include reconstructable
525
+ parameter kinds for positional-only, positional-or-keyword, variadic,
526
+ keyword-only, and variadic-keyword declarations. Python model/type inventory
527
+ also carries optional required/nullable/default/factory, alias, constraint,
528
+ description/example, `Annotated`, validator/config, enum-member, literal, and
529
+ type-alias metadata without importing Pydantic or application modules.
530
+ The payload also gains an optional top-level
477
531
  `entrypoints` array (detected user-reachable entry points: `{id, category, file,
478
532
  symbol, label}`), a `data_flows` list for detected user flows, plus a top-level
479
533
  `dependencies` object with internal `edges`, `cycles`, per-language external
@@ -489,6 +543,13 @@ keys are POSIX paths relative to `--src-dir`, never absolute paths. The v1
489
543
  contract permits additive fields; incompatible shape changes require a new
490
544
  schema version. The M3 data-flow fields are therefore optional additions under
491
545
  `llm-wiki-extract/v1`, not a schema bump.
546
+ Deep Python extraction also emits optional per-file `frameworks.fastapi`
547
+ declarations and a top-level `api_contracts` object. Static uncertainty is
548
+ reported through `unknowns` and diagnostics; test-source and
549
+ `include_in_schema=False` operations are excluded from the production operation
550
+ inventory by default. With `--openapi-file`, OpenAPI defines the operation set
551
+ and wire contract, external references are never fetched, and unmatched or
552
+ conflicting static declarations remain visible as diagnostics.
492
553
  Installed `entrypoint_detector` plugin hooks also contribute to the same
493
554
  `entrypoints` array in deep output. Detector failures are isolated: built-in
494
555
  entry-point detection still runs, `extract` prints a warning to stderr, and the
@@ -1120,10 +1181,15 @@ llm-wiki upgrade --agent copilot
1120
1181
  llm-wiki upgrade --wiki-dir .wiki
1121
1182
  llm-wiki upgrade --force
1122
1183
  llm-wiki upgrade --no-quality-hints
1184
+ llm-wiki upgrade --issue-reporting
1185
+ llm-wiki upgrade --no-issue-reporting
1123
1186
  ```
1124
1187
 
1125
1188
  `upgrade` refreshes agent instruction blocks, wiki directories, hooks, plugin
1126
- skill blocks, and persisted local config. For older wiki layouts, it
1189
+ skill blocks, and persisted local config. The issue-reporting pair explicitly
1190
+ enables or disables the local agent guidance; without either flag, `upgrade`
1191
+ preserves the stored preference. Configurations created before this preference
1192
+ existed default to disabled. For older wiki layouts, `upgrade`
1127
1193
  idempotently adds registry-standard directories such as `flows/` and missing
1128
1194
  `.gitkeep` files without rewriting existing index, log, semantic pages, or
1129
1195
  optional `dependencies.md` / `load-order.md` pages. Run `bootstrap` or `sync`