agent-notes 2.32.0__tar.gz → 2.33.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 (415) hide show
  1. {agent_notes-2.32.0 → agent_notes-2.33.1}/PKG-INFO +106 -14
  2. {agent_notes-2.32.0 → agent_notes-2.33.1}/README.md +102 -10
  3. agent_notes-2.33.1/agent_notes/VERSION +1 -0
  4. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/cli.py +56 -16
  5. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/_install_helpers.py +1 -1
  6. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/build.py +47 -20
  7. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/config.py +207 -25
  8. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/doctor.py +36 -4
  9. agent_notes-2.33.1/agent_notes/commands/hook/__init__.py +147 -0
  10. agent_notes-2.32.0/agent_notes/commands/hook.py → agent_notes-2.33.1/agent_notes/commands/hook/_guard.py +152 -213
  11. agent_notes-2.33.1/agent_notes/commands/hook/_memory.py +35 -0
  12. agent_notes-2.33.1/agent_notes/commands/hook/_session.py +30 -0
  13. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/install.py +17 -2
  14. agent_notes-2.33.1/agent_notes/commands/memory/__init__.py +15 -0
  15. agent_notes-2.33.1/agent_notes/commands/models.py +210 -0
  16. agent_notes-2.33.1/agent_notes/commands/plugins.py +66 -0
  17. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/regenerate.py +7 -4
  18. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/validate.py +13 -4
  19. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/wizard/__init__.py +213 -67
  20. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/wizard/_common.py +10 -0
  21. agent_notes-2.33.1/agent_notes/commands/wizard/capabilities.py +125 -0
  22. agent_notes-2.33.1/agent_notes/commands/wizard/capability_registry.py +54 -0
  23. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/wizard/execute.py +119 -39
  24. agent_notes-2.33.1/agent_notes/commands/wizard/orchestrator.py +152 -0
  25. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/config.py +2 -7
  26. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/constants.py +0 -11
  27. {agent_notes-2.32.0/agent_notes/scripts → agent_notes-2.33.1/agent_notes/cost}/_claude_backend.py +1 -1
  28. {agent_notes-2.32.0/agent_notes/scripts → agent_notes-2.33.1/agent_notes/cost}/_opencode_backend.py +1 -1
  29. {agent_notes-2.32.0/agent_notes/scripts → agent_notes-2.33.1/agent_notes/cost}/_pricing.py +0 -9
  30. {agent_notes-2.32.0/agent_notes/scripts → agent_notes-2.33.1/agent_notes/cost}/cost_report.py +5 -49
  31. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/agents.yaml +0 -20
  32. agent_notes-2.33.1/agent_notes/data/agents/lead.md +32 -0
  33. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/shared/guardrails.md +2 -2
  34. agent_notes-2.33.1/agent_notes/data/agents/shared/skeptical_verification.md +7 -0
  35. agent_notes-2.33.1/agent_notes/data/catalog/rules.yaml +86 -0
  36. agent_notes-2.33.1/agent_notes/data/catalog/seed.json +84 -0
  37. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/cli/claude.yaml +1 -0
  38. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/cli/codex.yaml +1 -1
  39. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/cli/copilot.yaml +2 -0
  40. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/cli/opencode.yaml +2 -2
  41. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/global-claude.md +2 -29
  42. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/plugin/claude.yaml +0 -3
  43. agent_notes-2.33.1/agent_notes/data/plugins/cost-report/plugin.yaml +8 -0
  44. agent_notes-2.33.1/agent_notes/data/pricing.yaml +60 -0
  45. agent_notes-2.33.1/agent_notes/data/providers/anthropic.yaml +3 -0
  46. agent_notes-2.33.1/agent_notes/data/providers/openai.yaml +3 -0
  47. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/roles/orchestrator.yaml +3 -1
  48. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/roles/reasoner.yaml +3 -1
  49. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/roles/scout.yaml +3 -1
  50. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/roles/worker.yaml +3 -1
  51. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/rules/safety.md +1 -0
  52. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/code-review/SKILL.md +1 -1
  53. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/ingest/SKILL.md +16 -84
  54. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/migrate-memory/SKILL.md +5 -72
  55. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/obsidian-memory/SKILL.md +3 -3
  56. agent_notes-2.33.1/agent_notes/data/templates/__pycache__/__init__.cpython-312.pyc +0 -0
  57. agent_notes-2.33.1/agent_notes/data/templates/__pycache__/__init__.cpython-314.pyc +0 -0
  58. agent_notes-2.33.1/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-312.pyc +0 -0
  59. agent_notes-2.33.1/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-314.pyc +0 -0
  60. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/templates/frontmatter/__pycache__/base.cpython-314.pyc +0 -0
  61. agent_notes-2.33.1/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-312.pyc +0 -0
  62. agent_notes-2.33.1/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-314.pyc +0 -0
  63. agent_notes-2.33.1/agent_notes/data/templates/frontmatter/__pycache__/codex.cpython-312.pyc +0 -0
  64. agent_notes-2.33.1/agent_notes/data/templates/frontmatter/__pycache__/codex.cpython-314.pyc +0 -0
  65. agent_notes-2.33.1/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-312.pyc +0 -0
  66. agent_notes-2.33.1/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
  67. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/templates/frontmatter/base.py +9 -1
  68. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/templates/frontmatter/claude.py +4 -1
  69. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/templates/frontmatter/codex.py +5 -11
  70. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/templates/frontmatter/opencode.py +9 -1
  71. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/domain/agent.py +2 -1
  72. agent_notes-2.33.1/agent_notes/domain/capability.py +35 -0
  73. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/domain/cli_backend.py +1 -1
  74. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/domain/model.py +2 -2
  75. agent_notes-2.33.1/agent_notes/domain/plugin.py +34 -0
  76. agent_notes-2.33.1/agent_notes/domain/provider.py +11 -0
  77. agent_notes-2.33.1/agent_notes/domain/role.py +20 -0
  78. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/domain/skill.py +2 -1
  79. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/domain/state.py +4 -2
  80. agent_notes-2.33.1/agent_notes/memory/__init__.py +1 -0
  81. {agent_notes-2.32.0/agent_notes/commands/memory → agent_notes-2.33.1/agent_notes/memory/commands}/__init__.py +2 -25
  82. {agent_notes-2.32.0/agent_notes/commands/memory → agent_notes-2.33.1/agent_notes/memory/commands}/_common.py +10 -15
  83. {agent_notes-2.32.0/agent_notes/commands/memory → agent_notes-2.33.1/agent_notes/memory/commands}/migrate.py +2 -2
  84. {agent_notes-2.32.0/agent_notes/commands/memory → agent_notes-2.33.1/agent_notes/memory/commands}/notes.py +9 -78
  85. {agent_notes-2.32.0/agent_notes/commands/memory → agent_notes-2.33.1/agent_notes/memory/commands}/reset.py +0 -36
  86. {agent_notes-2.32.0/agent_notes/commands/memory → agent_notes-2.33.1/agent_notes/memory/commands}/transfer.py +0 -8
  87. {agent_notes-2.32.0/agent_notes/commands/memory → agent_notes-2.33.1/agent_notes/memory/commands}/vault.py +5 -25
  88. agent_notes-2.33.1/agent_notes/memory/install.py +127 -0
  89. agent_notes-2.33.1/agent_notes/memory/instructions.py +130 -0
  90. {agent_notes-2.32.0/agent_notes/services → agent_notes-2.33.1/agent_notes/memory}/local_backend.py +1 -1
  91. {agent_notes-2.32.0/agent_notes/services → agent_notes-2.33.1/agent_notes/memory}/memory_backend.py +33 -14
  92. {agent_notes-2.32.0/agent_notes/services → agent_notes-2.33.1/agent_notes/memory}/obsidian_backend.py +99 -21
  93. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/registries/agent_registry.py +9 -2
  94. agent_notes-2.33.1/agent_notes/registries/catalog_loader.py +223 -0
  95. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/registries/cli_registry.py +7 -1
  96. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/registries/model_registry.py +38 -12
  97. agent_notes-2.33.1/agent_notes/registries/plugin_registry.py +107 -0
  98. agent_notes-2.33.1/agent_notes/registries/provider_registry.py +62 -0
  99. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/registries/role_registry.py +3 -1
  100. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/registries/skill_registry.py +21 -10
  101. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/diagnostics/_checks.py +187 -24
  102. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/fs.py +6 -1
  103. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/install_executor.py +10 -14
  104. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/install_plan.py +15 -0
  105. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/install_state_builder.py +9 -1
  106. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/installer.py +75 -64
  107. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/model_resolver.py +46 -41
  108. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/rendering.py +211 -145
  109. agent_notes-2.33.1/agent_notes/services/stability.py +53 -0
  110. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/state_store.py +7 -2
  111. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/user_config.py +11 -2
  112. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes.egg-info/PKG-INFO +106 -14
  113. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes.egg-info/SOURCES.txt +101 -58
  114. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes.egg-info/requires.txt +1 -3
  115. {agent_notes-2.32.0 → agent_notes-2.33.1}/pyproject.toml +5 -5
  116. agent_notes-2.33.1/tests/conftest.py +68 -0
  117. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/commands/test_config_command.py +64 -1
  118. agent_notes-2.33.1/tests/functional/commands/test_plugins_cli.py +294 -0
  119. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/commands/test_regenerate_command.py +45 -0
  120. agent_notes-2.33.1/tests/functional/commands/test_stability_cli.py +29 -0
  121. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/commands/test_uninstall_full_hooks.py +9 -3
  122. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/commands/test_wizard_happy_path.py +103 -9
  123. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/plugins/test_skills.py +1 -1
  124. agent_notes-2.33.1/tests/unit/commands/test_capability_registry.py +53 -0
  125. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/test_cost_report_subcommand.py +20 -18
  126. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/test_guard_credentials.py +232 -2
  127. agent_notes-2.33.1/tests/unit/commands/test_hook_constants.py +80 -0
  128. agent_notes-2.33.1/tests/unit/commands/test_install_profile_rerender.py +53 -0
  129. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/test_memory_add_description.py +5 -5
  130. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/test_memory_imports.py +13 -27
  131. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/test_memory_migrate.py +1 -1
  132. agent_notes-2.33.1/tests/unit/commands/test_models_command.py +246 -0
  133. agent_notes-2.33.1/tests/unit/commands/test_plugins_command.py +264 -0
  134. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/test_precompact_memory_bridge.py +3 -13
  135. agent_notes-2.33.1/tests/unit/commands/test_toggle_capabilities.py +32 -0
  136. agent_notes-2.33.1/tests/unit/commands/test_validate_line_limit.py +13 -0
  137. agent_notes-2.33.1/tests/unit/commands/test_wizard_accept_all_models.py +59 -0
  138. agent_notes-2.33.1/tests/unit/commands/test_wizard_backend_config.py +52 -0
  139. agent_notes-2.33.1/tests/unit/commands/test_wizard_backend_step.py +44 -0
  140. agent_notes-2.33.1/tests/unit/commands/test_wizard_confirm_build_order.py +158 -0
  141. agent_notes-2.33.1/tests/unit/commands/test_wizard_effort_selection.py +61 -0
  142. agent_notes-2.33.1/tests/unit/commands/test_wizard_install_summary_display.py +71 -0
  143. agent_notes-2.33.1/tests/unit/commands/test_wizard_memory_path_validation.py +21 -0
  144. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/test_wizard_orchestrator_skip.py +3 -3
  145. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/test_wizard_preflight.py +112 -11
  146. agent_notes-2.33.1/tests/unit/commands/test_wizard_provider_step.py +50 -0
  147. agent_notes-2.33.1/tests/unit/commands/test_wizard_role_model_default.py +198 -0
  148. agent_notes-2.33.1/tests/unit/commands/test_wizard_role_ordering.py +137 -0
  149. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/test_wizard_steps.py +53 -38
  150. agent_notes-2.33.1/tests/unit/commands/test_wizard_toggle_step.py +19 -0
  151. agent_notes-2.33.1/tests/unit/commands/test_wizard_total_steps.py +51 -0
  152. {agent_notes-2.32.0/tests/unit/scripts → agent_notes-2.33.1/tests/unit/cost}/test_cache_write_pricing.py +9 -9
  153. {agent_notes-2.32.0/tests/unit/scripts → agent_notes-2.33.1/tests/unit/cost}/test_cost_report.py +2 -8
  154. {agent_notes-2.32.0/tests/unit/scripts → agent_notes-2.33.1/tests/unit/cost}/test_cost_report_scoping.py +28 -30
  155. {agent_notes-2.32.0/tests/unit/scripts → agent_notes-2.33.1/tests/unit/cost}/test_formatting_tty.py +4 -4
  156. agent_notes-2.33.1/tests/unit/cost/test_hook_constant.py +30 -0
  157. {agent_notes-2.32.0/tests/unit/scripts → agent_notes-2.33.1/tests/unit/cost}/test_opencode_backend_connection.py +2 -2
  158. agent_notes-2.33.1/tests/unit/cost/test_opencode_backend_pricing.py +310 -0
  159. {agent_notes-2.32.0/tests/unit/scripts → agent_notes-2.33.1/tests/unit/cost}/test_time_aggregation.py +7 -7
  160. agent_notes-2.33.1/tests/unit/domain/test_capability.py +19 -0
  161. agent_notes-2.33.1/tests/unit/memory/test_stability_memory.py +25 -0
  162. agent_notes-2.33.1/tests/unit/registries/test_catalog_equivalence.py +315 -0
  163. agent_notes-2.33.1/tests/unit/registries/test_plugin_equivalence.py +105 -0
  164. agent_notes-2.33.1/tests/unit/registries/test_plugin_registry.py +56 -0
  165. agent_notes-2.33.1/tests/unit/registries/test_provider_registry.py +57 -0
  166. agent_notes-2.33.1/tests/unit/registries/test_registries.py +243 -0
  167. agent_notes-2.33.1/tests/unit/registries/test_stability_filtering.py +60 -0
  168. agent_notes-2.33.1/tests/unit/registries/test_stability_parsing.py +98 -0
  169. agent_notes-2.33.1/tests/unit/registries/test_stability_skills_agents.py +30 -0
  170. agent_notes-2.33.1/tests/unit/scripts/__init__.py +0 -0
  171. agent_notes-2.33.1/tests/unit/services/__init__.py +0 -0
  172. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_build_functions.py +37 -0
  173. agent_notes-2.33.1/tests/unit/services/test_cost_report_plugin_migration.py +39 -0
  174. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_fs.py +35 -0
  175. agent_notes-2.33.1/tests/unit/services/test_generate_agent_files_pins.py +226 -0
  176. agent_notes-2.33.1/tests/unit/services/test_generate_agent_files_stability.py +48 -0
  177. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_installer_credential_guard.py +1 -1
  178. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_installer_hooks.py +21 -16
  179. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_installer_plan.py +59 -0
  180. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_installer_precompact_hook.py +0 -14
  181. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_local_backend.py +2 -2
  182. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_memory_backend.py +2 -2
  183. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_memory_backend_io.py +15 -15
  184. agent_notes-2.33.1/tests/unit/services/test_memory_config_migration.py +47 -0
  185. agent_notes-2.33.1/tests/unit/services/test_memory_instructions.py +100 -0
  186. agent_notes-2.33.1/tests/unit/services/test_memory_router.py +78 -0
  187. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_model_resolver_characterization.py +177 -64
  188. agent_notes-2.33.1/tests/unit/services/test_obsidian_strategy.py +216 -0
  189. agent_notes-2.33.1/tests/unit/services/test_plugin_install.py +165 -0
  190. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_rendering_includes.py +4 -5
  191. agent_notes-2.33.1/tests/unit/services/test_resolve_effort.py +383 -0
  192. agent_notes-2.33.1/tests/unit/services/test_stability.py +34 -0
  193. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_state_store.py +45 -0
  194. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_user_config_cost_report.py +53 -32
  195. agent_notes-2.33.1/tests/unit/services/test_user_config_xdg.py +58 -0
  196. agent_notes-2.33.1/tests/unit/services/test_wiki_migration_error.py +114 -0
  197. agent_notes-2.33.1/tests/unit/templates/__init__.py +0 -0
  198. agent_notes-2.33.1/tests/unit/templates/test_claude_frontmatter.py +46 -0
  199. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/templates/test_codex_frontmatter.py +28 -9
  200. agent_notes-2.33.1/tests/unit/templates/test_opencode_frontmatter.py +33 -0
  201. agent_notes-2.33.1/tests/unit/test_cache_isolation.py +107 -0
  202. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/test_memory_dir_for_backend.py +2 -30
  203. agent_notes-2.32.0/agent_notes/VERSION +0 -1
  204. agent_notes-2.32.0/agent_notes/commands/memory/wiki.py +0 -153
  205. agent_notes-2.32.0/agent_notes/commands/wizard/orchestrator.py +0 -100
  206. agent_notes-2.32.0/agent_notes/data/agents/lead.md +0 -47
  207. agent_notes-2.32.0/agent_notes/data/agents/shared/wiki_compile.md +0 -18
  208. agent_notes-2.32.0/agent_notes/data/agents/wiki-compiler.md +0 -121
  209. agent_notes-2.32.0/agent_notes/data/models/claude-haiku-4-5.yaml +0 -15
  210. agent_notes-2.32.0/agent_notes/data/models/claude-opus-4-1.yaml +0 -16
  211. agent_notes-2.32.0/agent_notes/data/models/claude-opus-4-5.yaml +0 -16
  212. agent_notes-2.32.0/agent_notes/data/models/claude-opus-4-6.yaml +0 -16
  213. agent_notes-2.32.0/agent_notes/data/models/claude-opus-4-7.yaml +0 -16
  214. agent_notes-2.32.0/agent_notes/data/models/claude-opus-4-8.yaml +0 -15
  215. agent_notes-2.32.0/agent_notes/data/models/claude-sonnet-4-5.yaml +0 -16
  216. agent_notes-2.32.0/agent_notes/data/models/claude-sonnet-4-6.yaml +0 -15
  217. agent_notes-2.32.0/agent_notes/data/models/claude-sonnet-4.yaml +0 -16
  218. agent_notes-2.32.0/agent_notes/data/models/gpt-5-4-mini.yaml +0 -14
  219. agent_notes-2.32.0/agent_notes/data/models/gpt-5-4.yaml +0 -14
  220. agent_notes-2.32.0/agent_notes/data/models/gpt-5-5.yaml +0 -14
  221. agent_notes-2.32.0/agent_notes/data/pricing.yaml +0 -35
  222. agent_notes-2.32.0/agent_notes/data/skills/brainstorming/SKILL.md +0 -57
  223. agent_notes-2.32.0/agent_notes/data/skills/tdd/SKILL.md +0 -37
  224. agent_notes-2.32.0/agent_notes/data/skills/tdd/mocking.md +0 -59
  225. agent_notes-2.32.0/agent_notes/data/skills/tdd/tests.md +0 -77
  226. agent_notes-2.32.0/agent_notes/data/skills/writing-great-skills/GLOSSARY.md +0 -201
  227. agent_notes-2.32.0/agent_notes/data/skills/writing-great-skills/SKILL.md +0 -84
  228. agent_notes-2.32.0/agent_notes/data/templates/__pycache__/__init__.cpython-314.pyc +0 -0
  229. agent_notes-2.32.0/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-314.pyc +0 -0
  230. agent_notes-2.32.0/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-314.pyc +0 -0
  231. agent_notes-2.32.0/agent_notes/data/templates/frontmatter/__pycache__/codex.cpython-314.pyc +0 -0
  232. agent_notes-2.32.0/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
  233. agent_notes-2.32.0/agent_notes/doctor_checks.py +0 -192
  234. agent_notes-2.32.0/agent_notes/domain/role.py +0 -13
  235. agent_notes-2.32.0/agent_notes/services/wiki/__init__.py +0 -25
  236. agent_notes-2.32.0/agent_notes/services/wiki/_wiki_utils.py +0 -196
  237. agent_notes-2.32.0/agent_notes/services/wiki/wiki_index.py +0 -171
  238. agent_notes-2.32.0/agent_notes/services/wiki/wiki_ingest.py +0 -382
  239. agent_notes-2.32.0/agent_notes/services/wiki/wiki_lint.py +0 -176
  240. agent_notes-2.32.0/agent_notes/services/wiki/wiki_query.py +0 -103
  241. agent_notes-2.32.0/agent_notes/services/wiki/wiki_storage.py +0 -125
  242. agent_notes-2.32.0/agent_notes/services/wiki_backend.py +0 -3
  243. agent_notes-2.32.0/tests/conftest.py +0 -35
  244. agent_notes-2.32.0/tests/unit/commands/test_wizard_role_model_default.py +0 -108
  245. agent_notes-2.32.0/tests/unit/registries/test_registries.py +0 -167
  246. agent_notes-2.32.0/tests/unit/scripts/test_opencode_backend_pricing.py +0 -100
  247. agent_notes-2.32.0/tests/unit/services/test_memory_router.py +0 -100
  248. agent_notes-2.32.0/tests/unit/services/test_wiki_atomic_write.py +0 -73
  249. agent_notes-2.32.0/tests/unit/services/test_wiki_backend.py +0 -1361
  250. agent_notes-2.32.0/tests/unit/services/test_wiki_imports.py +0 -222
  251. {agent_notes-2.32.0 → agent_notes-2.33.1}/LICENSE +0 -0
  252. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/__init__.py +0 -0
  253. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/__main__.py +0 -0
  254. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/__init__.py +0 -0
  255. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/info.py +0 -0
  256. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/list.py +0 -0
  257. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/set_role.py +0 -0
  258. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/uninstall.py +0 -0
  259. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/commands/wizard/cost_report.py +0 -0
  260. {agent_notes-2.32.0/agent_notes/scripts → agent_notes-2.33.1/agent_notes/cost}/__init__.py +0 -0
  261. {agent_notes-2.32.0/agent_notes/scripts → agent_notes-2.33.1/agent_notes/cost}/_formatting.py +0 -0
  262. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/analyst.md +0 -0
  263. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/api-reviewer.md +0 -0
  264. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/architect.md +0 -0
  265. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/coder.md +0 -0
  266. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/database-specialist.md +0 -0
  267. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/debugger.md +0 -0
  268. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/devil.md +0 -0
  269. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/devops.md +0 -0
  270. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/explorer.md +0 -0
  271. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/integrations.md +0 -0
  272. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/performance-profiler.md +0 -0
  273. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/refactorer.md +0 -0
  274. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/reviewer.md +0 -0
  275. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/security-auditor.md +0 -0
  276. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/shared/cost_reporting.md +0 -0
  277. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/shared/execution.md +0 -0
  278. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/shared/hard_limits.md +0 -0
  279. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/shared/phase0.md +0 -0
  280. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/shared/pipelines.md +0 -0
  281. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/shared/review.md +0 -0
  282. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/shared/verification.md +0 -0
  283. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/system-auditor.md +0 -0
  284. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/tech-writer.md +0 -0
  285. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/test-runner.md +0 -0
  286. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/agents/test-writer.md +0 -0
  287. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/commands/brainstorm.md +0 -0
  288. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/commands/debug.md +0 -0
  289. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/commands/review.md +0 -0
  290. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/global-codex.md +0 -0
  291. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/global-copilot.md +0 -0
  292. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/global-opencode.md +0 -0
  293. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/hooks/session-context.md.tpl +0 -0
  294. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/plugin/opencode-index.js.template +0 -0
  295. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/plugin/opencode.yaml +0 -0
  296. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/rules/code-quality.md +0 -0
  297. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/rules/no-ai-attribution.md +0 -0
  298. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/chrome-test/SKILL.md +0 -0
  299. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/codebase-design/DEEPENING.md +0 -0
  300. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/codebase-design/DESIGN-IT-TWICE.md +0 -0
  301. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/codebase-design/SKILL.md +0 -0
  302. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/diagnosing-bugs/SKILL.md +0 -0
  303. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +0 -0
  304. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/docker/SKILL.md +0 -0
  305. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/docker/compose.md +0 -0
  306. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/docker/dockerfile.md +0 -0
  307. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/domain-modeling/ADR-FORMAT.md +0 -0
  308. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/domain-modeling/CONTEXT-FORMAT.md +0 -0
  309. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/domain-modeling/SKILL.md +0 -0
  310. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/git/SKILL.md +0 -0
  311. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/grill-me/SKILL.md +0 -0
  312. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/grill-with-docs/SKILL.md +0 -0
  313. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/grilling/SKILL.md +0 -0
  314. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/handoff/SKILL.md +0 -0
  315. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/improve-codebase-architecture/HTML-REPORT.md +0 -0
  316. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/improve-codebase-architecture/SKILL.md +0 -0
  317. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/prototype/LOGIC.md +0 -0
  318. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/prototype/SKILL.md +0 -0
  319. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/prototype/UI.md +0 -0
  320. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/rails/SKILL.md +0 -0
  321. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/rails/controllers.md +0 -0
  322. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/rails/frontend.md +0 -0
  323. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/rails/infra.md +0 -0
  324. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/rails/models.md +0 -0
  325. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/rails/testing.md +0 -0
  326. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/rails/views.md +0 -0
  327. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/refactoring-protocol/SKILL.md +0 -0
  328. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/research/SKILL.md +0 -0
  329. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/rsi/SKILL.md +0 -0
  330. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/setup-agent-tracker/SKILL.md +0 -0
  331. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/setup-agent-tracker/domain.md +0 -0
  332. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/setup-agent-tracker/issue-tracker-github.md +0 -0
  333. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/setup-agent-tracker/issue-tracker-gitlab.md +0 -0
  334. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/setup-agent-tracker/issue-tracker-local.md +0 -0
  335. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/setup-agent-tracker/triage-labels.md +0 -0
  336. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/to-spec/SKILL.md +0 -0
  337. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/to-tickets/SKILL.md +0 -0
  338. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/triage/AGENT-BRIEF.md +0 -0
  339. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/triage/OUT-OF-SCOPE.md +0 -0
  340. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/triage/SKILL.md +0 -0
  341. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/skills/wayfinder/SKILL.md +0 -0
  342. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/templates/__init__.py +0 -0
  343. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/data/templates/frontmatter/__init__.py +0 -0
  344. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/domain/__init__.py +0 -0
  345. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/domain/diagnostics.py +0 -0
  346. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/domain/diff.py +0 -0
  347. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/domain/rule.py +0 -0
  348. {agent_notes-2.32.0/agent_notes/services → agent_notes-2.33.1/agent_notes/memory}/memory_router.py +0 -0
  349. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/registries/__init__.py +0 -0
  350. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/registries/_base.py +0 -0
  351. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/registries/rule_registry.py +0 -0
  352. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/__init__.py +0 -0
  353. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/_memory_utils.py +0 -0
  354. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/counts.py +0 -0
  355. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/credentials.py +0 -0
  356. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/diagnostics/__init__.py +0 -0
  357. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/diagnostics/_display.py +0 -0
  358. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/diagnostics/_fix.py +0 -0
  359. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/diff.py +0 -0
  360. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/migrations/__init__.py +0 -0
  361. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/session_context.py +0 -0
  362. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/settings_writer.py +0 -0
  363. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/ui.py +0 -0
  364. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes/services/validation.py +0 -0
  365. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes.egg-info/dependency_links.txt +0 -0
  366. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes.egg-info/entry_points.txt +0 -0
  367. {agent_notes-2.32.0 → agent_notes-2.33.1}/agent_notes.egg-info/top_level.txt +0 -0
  368. {agent_notes-2.32.0 → agent_notes-2.33.1}/setup.cfg +0 -0
  369. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/__init__.py +0 -0
  370. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/commands/__init__.py +0 -0
  371. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/commands/test_doctor_command.py +0 -0
  372. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/commands/test_info_command.py +0 -0
  373. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/commands/test_install_command.py +0 -0
  374. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/commands/test_install_roundtrip.py +0 -0
  375. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/commands/test_list_command.py +0 -0
  376. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/commands/test_uninstall_command.py +0 -0
  377. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/commands/test_validate_command.py +0 -0
  378. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/commands/test_validate_path_filter.py +0 -0
  379. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/memory/__init__.py +0 -0
  380. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/memory/test_memory_add_local_backend.py +0 -0
  381. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/memory/test_memory_command.py +0 -0
  382. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/scripts/__init__.py +0 -0
  383. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/functional/scripts/test_release_script.py +0 -0
  384. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/integration/__init__.py +0 -0
  385. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/integration/build_output/__init__.py +0 -0
  386. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/integration/build_output/test_build_output.py +0 -0
  387. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/integration/install/__init__.py +0 -0
  388. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/integration/install/test_install_methods.py +0 -0
  389. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/integration/plugin_builders/__init__.py +0 -0
  390. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/integration/plugin_builders/test_plugin_builders.py +0 -0
  391. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/plugins/__init__.py +0 -0
  392. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/plugins/claude/__init__.py +0 -0
  393. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/plugins/claude/test_agents.py +0 -0
  394. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/plugins/codex/__init__.py +0 -0
  395. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/plugins/codex/test_agents.py +0 -0
  396. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/__init__.py +0 -0
  397. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/__init__.py +0 -0
  398. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/test_count_agents.py +0 -0
  399. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/test_info.py +0 -0
  400. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/test_wizard_imports.py +0 -0
  401. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/commands/wizard/test_cost_report_step.py +0 -0
  402. {agent_notes-2.32.0/tests/unit/registries → agent_notes-2.33.1/tests/unit/cost}/__init__.py +0 -0
  403. {agent_notes-2.32.0/tests/unit/scripts → agent_notes-2.33.1/tests/unit/domain}/__init__.py +0 -0
  404. {agent_notes-2.32.0/tests/unit/services → agent_notes-2.33.1/tests/unit/memory}/__init__.py +0 -0
  405. {agent_notes-2.32.0/tests/unit/templates → agent_notes-2.33.1/tests/unit/registries}/__init__.py +0 -0
  406. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/registries/test_cli_registry.py +0 -0
  407. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_credential_filter.py +0 -0
  408. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_credentials.py +0 -0
  409. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_installer_codex.py +0 -0
  410. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_installer_hook_quoting.py +0 -0
  411. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_session_context.py +0 -0
  412. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_settings_writer.py +0 -0
  413. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_skill_filtering.py +0 -0
  414. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/services/test_validation.py +0 -0
  415. {agent_notes-2.32.0 → agent_notes-2.33.1}/tests/unit/test_import_health.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-notes
3
- Version: 2.32.0
3
+ Version: 2.33.1
4
4
  Summary: AI agent configuration manager for Claude Code, OpenCode, and Copilot
5
5
  Author-email: Eugene Naumov <min.verkligheten@gmail.com>
6
6
  License-Expression: MIT
@@ -13,21 +13,21 @@ Classifier: Development Status :: 4 - Beta
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: Operating System :: OS Independent
15
15
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.10
17
16
  Classifier: Programming Language :: Python :: 3.11
18
17
  Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
19
  Classifier: Topic :: Software Development :: Code Generators
20
20
  Classifier: Topic :: Utilities
21
21
  Classifier: Environment :: Console
22
- Requires-Python: >=3.10
22
+ Requires-Python: >=3.11
23
23
  Description-Content-Type: text/markdown
24
24
  License-File: LICENSE
25
25
  Requires-Dist: pyyaml>=6.0
26
- Requires-Dist: tomli>=1.1.0; python_version < "3.11"
27
26
  Requires-Dist: tomli-w>=1.0.0
28
27
  Provides-Extra: dev
29
28
  Requires-Dist: pytest>=7.0; extra == "dev"
30
29
  Requires-Dist: build>=1.0; extra == "dev"
30
+ Requires-Dist: twine>=5.0; extra == "dev"
31
31
  Dynamic: license-file
32
32
 
33
33
  # agent-notes
@@ -37,14 +37,16 @@ AI agent configuration manager for Claude Code and OpenCode — orchestrates a t
37
37
  ## Quick Start
38
38
 
39
39
  ```bash
40
- pip install agent-notes
40
+ pipx install agent-notes
41
41
  agent-notes install # interactive wizard guides you through setup
42
42
  agent-notes doctor
43
43
  ```
44
44
 
45
+ > No `pipx`? Use `uv tool install agent-notes` instead, or see **Troubleshooting: externally-managed-environment** below.
46
+
45
47
  **What's Included**
46
48
  - 19 specialized AI subagents (Opus reasons, Sonnet executes, Haiku explores)
47
- - 50+ on-demand skills (Rails, Docker, Git, Kamal, Process)
49
+ - 25 on-demand skills (Rails, Docker, Git, Kamal, Process)
48
50
  - Global rules and guardrails (including a ban on AI self-attribution in commits/PRs)
49
51
  - Agent memory with 3 storage options (Local, Obsidian, Wiki)
50
52
  - Configuration for Claude Code, OpenCode, and GitHub Copilot
@@ -63,6 +65,13 @@ pipx install agent-notes
63
65
  agent-notes install
64
66
  ```
65
67
 
68
+ **uv tool (lightweight alternative to pipx):**
69
+
70
+ ```bash
71
+ uv tool install agent-notes
72
+ agent-notes install
73
+ ```
74
+
66
75
  **venv + pip (if you prefer to manage your own environment):**
67
76
 
68
77
  ```bash
@@ -96,6 +105,7 @@ agent-notes uninstall && pipx uninstall agent-notes && pipx install agent-notes
96
105
 
97
106
  With venv:
98
107
  ```bash
108
+ source .venv/bin/activate
99
109
  agent-notes uninstall && pip uninstall agent-notes && pip install agent-notes && agent-notes install
100
110
  ```
101
111
 
@@ -119,6 +129,38 @@ To produce a release artifact (wheel for distribution), use `python -m build` +
119
129
 
120
130
  The plugin runs a `session.start` hook that surfaces agent-notes context to the CLI session. It does **not** include the full `agent-notes` CLI (wizard, doctor, config, memory, etc.). For those, use install method 1 or 2.
121
131
 
132
+ ---
133
+
134
+ **Note on two meanings of "plugin":** This distribution plugin (the `.claude-plugin/` marketplace artifact) is distinct from **agent-notes plugins** — an internal toggleable subsystem documented below. See [Plugins](#plugins) to tell them apart.
135
+
136
+ ### Plugins (toggleable subsystems)
137
+
138
+ Agent-notes includes toggleable subsystems (plugins) that can be enabled or disabled post-install. Currently, only **cost-report** is available as a plugin.
139
+
140
+ **List available plugins:**
141
+ ```bash
142
+ agent-notes plugins list
143
+ ```
144
+
145
+ Example output:
146
+ ```
147
+ cost-report [off] Emit a per-session token cost report at the Stop hook
148
+ ```
149
+
150
+ **Enable or disable a plugin:**
151
+ ```bash
152
+ agent-notes plugins enable cost-report # Enable cost-report
153
+ agent-notes plugins disable cost-report # Disable cost-report
154
+ agent-notes install # Apply changes
155
+ ```
156
+
157
+ **Show plugin details:**
158
+ ```bash
159
+ agent-notes plugins info cost-report
160
+ ```
161
+
162
+ After enabling or disabling a plugin, run `agent-notes install` to apply the changes. For details, see `docs/WRITING_A_PLUGIN.md`.
163
+
122
164
  ### API keys
123
165
 
124
166
  Provider API keys live in `~/.agent-notes/credentials.toml` (mode 0600, never committed). Add or update via:
@@ -135,6 +177,46 @@ agent-notes config provider openrouter # prints "configured" or "no key"
135
177
 
136
178
  </details>
137
179
 
180
+ ### Troubleshooting: externally-managed-environment
181
+
182
+ On Arch, Debian, Ubuntu, and other distributions that mark the system Python as externally-managed (PEP 668), you may see an error like:
183
+
184
+ ```
185
+ error: externally-managed-environment
186
+
187
+ × This environment is externally managed
188
+ ```
189
+
190
+ This error occurs because `pip` refuses to install into the system Python. **Solution:** use an isolated package manager instead:
191
+
192
+ 1. **Recommended — pipx:**
193
+ ```bash
194
+ pipx install agent-notes
195
+ agent-notes install
196
+ ```
197
+
198
+ 2. **Alternative — uv tool:**
199
+ ```bash
200
+ uv tool install agent-notes
201
+ agent-notes install
202
+ ```
203
+
204
+ 3. **Alternative — Create a venv first:**
205
+ ```bash
206
+ python -m venv .venv && source .venv/bin/activate
207
+ pip install agent-notes
208
+ agent-notes install
209
+ ```
210
+
211
+ **Last resort only** (discouraged — system packages may conflict):
212
+ ```bash
213
+ pip install --user agent-notes
214
+ # or
215
+ pip install --break-system-packages agent-notes
216
+ ```
217
+
218
+ ---
219
+
138
220
  <details>
139
221
  <summary>Uninstall</summary>
140
222
 
@@ -170,7 +252,7 @@ If you configured agent-notes to access your memory vault (Obsidian or local), t
170
252
  <details>
171
253
  <summary>Agent Team</summary>
172
254
 
173
- Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonnet 4.6 executes, Haiku 4.5 scouts.**
255
+ Specialized subagents with hierarchical model strategy: **Opus 4.8 reasons (high effort), Sonnet 5 executes (medium effort), Haiku 4.5 scouts (low effort).**
174
256
 
175
257
  | Agent | Role | Model Tier | Purpose |
176
258
  |---|---|---|---|
@@ -194,7 +276,7 @@ Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonn
194
276
  | analyst | scout | haiku | Requirements translation, acceptance criteria |
195
277
  | tech-writer | scout | haiku | READMEs, API docs, changelogs |
196
278
 
197
- **4 roles, 19 agents, 3 model tiers.** The tiered model strategy optimizes cost: Opus reasons ($15/1M tokens), Sonnet executes ($3/1M), Haiku scouts ($0.80/1M).
279
+ **4 roles, 19 agents, 3 model tiers.** The tiered model strategy optimizes cost: Opus reasons ($5/$25 per 1M tokens in/out), Sonnet executes ($3/$15), Haiku scouts ($1/$5). A premium `fable` tier ($10/$50) is available for explicit pinning, but no role defaults to it.
198
280
 
199
281
  ### Delegation rules
200
282
 
@@ -216,6 +298,18 @@ Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonn
216
298
  - **tech-writer** — Documentation, READMEs, API docs
217
299
  - **devil** — Challenges assumptions and plans
218
300
 
301
+ ### Reconfiguring roles, models, and effort
302
+
303
+ During `agent-notes install`, wizard step 2 asks you to pick a model per role, and — for models served by a provider with a known effort vocabulary (currently `anthropic`, `openai`) — a follow-up effort prompt, pre-selected to the role's typical effort when that value is valid for the chosen provider. Providers with no effort registry entry (`github-copilot`, `openrouter`, `google`, `moonshot`) skip the effort prompt entirely.
304
+
305
+ To change these after install:
306
+ ```bash
307
+ agent-notes config role-model [--cli <cli>] <role> <model> # e.g. role-model worker claude-sonnet-5
308
+ agent-notes config role-effort [--cli <cli>] <role> <effort> # e.g. role-effort worker high
309
+ agent-notes config wizard # interactive menu for both
310
+ ```
311
+ `role-effort` validates the effort against the role's currently-assigned model's provider — an invalid value prints that provider's name and its valid effort list. There's no cross-provider mapping: each provider (anthropic, openai) has its own independent effort vocabulary and default.
312
+
219
313
  </details>
220
314
 
221
315
  ---
@@ -282,7 +376,7 @@ agent-notes memory lint # health-check
282
376
  <details>
283
377
  <summary>Skills</summary>
284
378
 
285
- 50+ on-demand knowledge modules across Rails, Docker, Kamal, Git, and Process. Run `agent-notes list skills` for the current list, or browse `agent_notes/data/skills/`.
379
+ 25 on-demand knowledge modules across Rails, Docker, Kamal, Git, and Process. Run `agent-notes list skills` for the current list, or browse `agent_notes/data/skills/`. For additional workflows (brainstorming, test-driven development, writing skills), see the complementary [Superpowers](https://github.com/obra/superpowers) plugin.
286
380
 
287
381
  The session context hook auto-generates a skill index from SKILL.md frontmatter at install time, so agents always know what skills are available without loading full skill content. This keeps context overhead low while maintaining skill discoverability.
288
382
 
@@ -299,14 +393,13 @@ Load the docker-compose skill for multi-service setup
299
393
  |---|---|---|
300
394
  | Misalignment | Claude starts building before the problem is resolved | `/grill-me`, `/grilling`, `/grill-with-docs` |
301
395
  | Vague scope | Work starts without a spec or ticketed breakdown | `/to-spec`, `/to-tickets`, `/wayfinder`, `/triage` |
302
- | Broken code | Claude codes without a feedback loop or evidence trail | `/tdd`, `/diagnosing-bugs` |
396
+ | Broken code | Claude codes without a feedback loop or evidence trail | `/diagnosing-bugs` |
303
397
  | Ball of mud | Architecture drifts; modules grow shallow and tangled | `/improve-codebase-architecture`, `/codebase-design`, `/domain-modeling` |
304
398
 
305
399
  **Skill descriptions:**
306
400
 
307
401
  - `/grill-me`, `/grilling` — Interview the user relentlessly until the plan is fully resolved before touching code
308
402
  - `/grill-with-docs` — Same, but cross-references CONTEXT.md and ADRs and updates them inline
309
- - `/tdd` — RED-GREEN-REFACTOR with tracer-bullet vertical slices; integration-first testing
310
403
  - `/diagnosing-bugs` — Diagnosis loop for hard bugs and performance regressions (build a feedback loop first)
311
404
  - `/improve-codebase-architecture` — Scan for deepening opportunities, present a visual HTML report, then grill the chosen one
312
405
  - `/codebase-design` — Shared vocabulary for designing deep modules and choosing where seams go
@@ -319,7 +412,6 @@ Load the docker-compose skill for multi-service setup
319
412
  - `/research` — Investigate a question against primary sources and capture findings as Markdown
320
413
  - `/prototype` — Throwaway prototypes: terminal app for logic or UI variations for visual
321
414
  - `/setup-agent-tracker` — One-time per-repo setup of the issue tracker, triage labels, and domain doc layout
322
- - `/writing-great-skills` — Reference for writing and editing skills well
323
415
 
324
416
  </details>
325
417
 
@@ -419,7 +511,7 @@ agent-notes config provider <name> # check if configured (without exposing
419
511
 
420
512
  ### Building and testing
421
513
 
422
- Python 3.10+ required. Create an isolated environment and run tests:
514
+ Python 3.11+ required. Create an isolated environment and run tests:
423
515
 
424
516
  ```bash
425
517
  python -m venv .venv && source .venv/bin/activate
@@ -512,7 +604,7 @@ See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md), [docs/ADD_CLI.md](docs/ADD_CLI
512
604
  ## Inspired by
513
605
 
514
606
  - [Andrej Karpathy's LLM Wiki](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) — The wiki memory backend implements his compile-once, query-forever knowledge pattern with structured page types and three core operations (ingest, query, lint)
515
- - [Matt Pocock's skills repo](https://github.com/mattpocock/skills) — Skill format (SKILL.md per directory), failure-mode table (misalignment, broken code, architectural degradation), and a set of engineering/productivity skills vendored from the upstream repo (tdd, grill-me, grilling, grill-with-docs, diagnosing-bugs, improve-codebase-architecture, codebase-design, domain-modeling, prototype, handoff, research, to-spec, to-tickets, triage, wayfinder, writing-great-skills). Last synced from upstream commit [`391a270`](https://github.com/mattpocock/skills/commit/391a2701dd948f94f56a39f7533f8eea9a859c87) (2026-07-10), reviewed for prompt-injection before import.
607
+ - [Matt Pocock's skills repo](https://github.com/mattpocock/skills) — Skill format (SKILL.md per directory), failure-mode table (misalignment, broken code, architectural degradation), and a set of engineering/productivity skills vendored from the upstream repo (grill-me, grilling, grill-with-docs, diagnosing-bugs, improve-codebase-architecture, codebase-design, domain-modeling, prototype, handoff, research, to-spec, to-tickets, triage, wayfinder). Last synced from upstream commit [`391a270`](https://github.com/mattpocock/skills/commit/391a2701dd948f94f56a39f7533f8eea9a859c87) (2026-07-10), reviewed for prompt-injection before import.
516
608
 
517
609
  ## License
518
610
 
@@ -5,14 +5,16 @@ AI agent configuration manager for Claude Code and OpenCode — orchestrates a t
5
5
  ## Quick Start
6
6
 
7
7
  ```bash
8
- pip install agent-notes
8
+ pipx install agent-notes
9
9
  agent-notes install # interactive wizard guides you through setup
10
10
  agent-notes doctor
11
11
  ```
12
12
 
13
+ > No `pipx`? Use `uv tool install agent-notes` instead, or see **Troubleshooting: externally-managed-environment** below.
14
+
13
15
  **What's Included**
14
16
  - 19 specialized AI subagents (Opus reasons, Sonnet executes, Haiku explores)
15
- - 50+ on-demand skills (Rails, Docker, Git, Kamal, Process)
17
+ - 25 on-demand skills (Rails, Docker, Git, Kamal, Process)
16
18
  - Global rules and guardrails (including a ban on AI self-attribution in commits/PRs)
17
19
  - Agent memory with 3 storage options (Local, Obsidian, Wiki)
18
20
  - Configuration for Claude Code, OpenCode, and GitHub Copilot
@@ -31,6 +33,13 @@ pipx install agent-notes
31
33
  agent-notes install
32
34
  ```
33
35
 
36
+ **uv tool (lightweight alternative to pipx):**
37
+
38
+ ```bash
39
+ uv tool install agent-notes
40
+ agent-notes install
41
+ ```
42
+
34
43
  **venv + pip (if you prefer to manage your own environment):**
35
44
 
36
45
  ```bash
@@ -64,6 +73,7 @@ agent-notes uninstall && pipx uninstall agent-notes && pipx install agent-notes
64
73
 
65
74
  With venv:
66
75
  ```bash
76
+ source .venv/bin/activate
67
77
  agent-notes uninstall && pip uninstall agent-notes && pip install agent-notes && agent-notes install
68
78
  ```
69
79
 
@@ -87,6 +97,38 @@ To produce a release artifact (wheel for distribution), use `python -m build` +
87
97
 
88
98
  The plugin runs a `session.start` hook that surfaces agent-notes context to the CLI session. It does **not** include the full `agent-notes` CLI (wizard, doctor, config, memory, etc.). For those, use install method 1 or 2.
89
99
 
100
+ ---
101
+
102
+ **Note on two meanings of "plugin":** This distribution plugin (the `.claude-plugin/` marketplace artifact) is distinct from **agent-notes plugins** — an internal toggleable subsystem documented below. See [Plugins](#plugins) to tell them apart.
103
+
104
+ ### Plugins (toggleable subsystems)
105
+
106
+ Agent-notes includes toggleable subsystems (plugins) that can be enabled or disabled post-install. Currently, only **cost-report** is available as a plugin.
107
+
108
+ **List available plugins:**
109
+ ```bash
110
+ agent-notes plugins list
111
+ ```
112
+
113
+ Example output:
114
+ ```
115
+ cost-report [off] Emit a per-session token cost report at the Stop hook
116
+ ```
117
+
118
+ **Enable or disable a plugin:**
119
+ ```bash
120
+ agent-notes plugins enable cost-report # Enable cost-report
121
+ agent-notes plugins disable cost-report # Disable cost-report
122
+ agent-notes install # Apply changes
123
+ ```
124
+
125
+ **Show plugin details:**
126
+ ```bash
127
+ agent-notes plugins info cost-report
128
+ ```
129
+
130
+ After enabling or disabling a plugin, run `agent-notes install` to apply the changes. For details, see `docs/WRITING_A_PLUGIN.md`.
131
+
90
132
  ### API keys
91
133
 
92
134
  Provider API keys live in `~/.agent-notes/credentials.toml` (mode 0600, never committed). Add or update via:
@@ -103,6 +145,46 @@ agent-notes config provider openrouter # prints "configured" or "no key"
103
145
 
104
146
  </details>
105
147
 
148
+ ### Troubleshooting: externally-managed-environment
149
+
150
+ On Arch, Debian, Ubuntu, and other distributions that mark the system Python as externally-managed (PEP 668), you may see an error like:
151
+
152
+ ```
153
+ error: externally-managed-environment
154
+
155
+ × This environment is externally managed
156
+ ```
157
+
158
+ This error occurs because `pip` refuses to install into the system Python. **Solution:** use an isolated package manager instead:
159
+
160
+ 1. **Recommended — pipx:**
161
+ ```bash
162
+ pipx install agent-notes
163
+ agent-notes install
164
+ ```
165
+
166
+ 2. **Alternative — uv tool:**
167
+ ```bash
168
+ uv tool install agent-notes
169
+ agent-notes install
170
+ ```
171
+
172
+ 3. **Alternative — Create a venv first:**
173
+ ```bash
174
+ python -m venv .venv && source .venv/bin/activate
175
+ pip install agent-notes
176
+ agent-notes install
177
+ ```
178
+
179
+ **Last resort only** (discouraged — system packages may conflict):
180
+ ```bash
181
+ pip install --user agent-notes
182
+ # or
183
+ pip install --break-system-packages agent-notes
184
+ ```
185
+
186
+ ---
187
+
106
188
  <details>
107
189
  <summary>Uninstall</summary>
108
190
 
@@ -138,7 +220,7 @@ If you configured agent-notes to access your memory vault (Obsidian or local), t
138
220
  <details>
139
221
  <summary>Agent Team</summary>
140
222
 
141
- Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonnet 4.6 executes, Haiku 4.5 scouts.**
223
+ Specialized subagents with hierarchical model strategy: **Opus 4.8 reasons (high effort), Sonnet 5 executes (medium effort), Haiku 4.5 scouts (low effort).**
142
224
 
143
225
  | Agent | Role | Model Tier | Purpose |
144
226
  |---|---|---|---|
@@ -162,7 +244,7 @@ Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonn
162
244
  | analyst | scout | haiku | Requirements translation, acceptance criteria |
163
245
  | tech-writer | scout | haiku | READMEs, API docs, changelogs |
164
246
 
165
- **4 roles, 19 agents, 3 model tiers.** The tiered model strategy optimizes cost: Opus reasons ($15/1M tokens), Sonnet executes ($3/1M), Haiku scouts ($0.80/1M).
247
+ **4 roles, 19 agents, 3 model tiers.** The tiered model strategy optimizes cost: Opus reasons ($5/$25 per 1M tokens in/out), Sonnet executes ($3/$15), Haiku scouts ($1/$5). A premium `fable` tier ($10/$50) is available for explicit pinning, but no role defaults to it.
166
248
 
167
249
  ### Delegation rules
168
250
 
@@ -184,6 +266,18 @@ Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonn
184
266
  - **tech-writer** — Documentation, READMEs, API docs
185
267
  - **devil** — Challenges assumptions and plans
186
268
 
269
+ ### Reconfiguring roles, models, and effort
270
+
271
+ During `agent-notes install`, wizard step 2 asks you to pick a model per role, and — for models served by a provider with a known effort vocabulary (currently `anthropic`, `openai`) — a follow-up effort prompt, pre-selected to the role's typical effort when that value is valid for the chosen provider. Providers with no effort registry entry (`github-copilot`, `openrouter`, `google`, `moonshot`) skip the effort prompt entirely.
272
+
273
+ To change these after install:
274
+ ```bash
275
+ agent-notes config role-model [--cli <cli>] <role> <model> # e.g. role-model worker claude-sonnet-5
276
+ agent-notes config role-effort [--cli <cli>] <role> <effort> # e.g. role-effort worker high
277
+ agent-notes config wizard # interactive menu for both
278
+ ```
279
+ `role-effort` validates the effort against the role's currently-assigned model's provider — an invalid value prints that provider's name and its valid effort list. There's no cross-provider mapping: each provider (anthropic, openai) has its own independent effort vocabulary and default.
280
+
187
281
  </details>
188
282
 
189
283
  ---
@@ -250,7 +344,7 @@ agent-notes memory lint # health-check
250
344
  <details>
251
345
  <summary>Skills</summary>
252
346
 
253
- 50+ on-demand knowledge modules across Rails, Docker, Kamal, Git, and Process. Run `agent-notes list skills` for the current list, or browse `agent_notes/data/skills/`.
347
+ 25 on-demand knowledge modules across Rails, Docker, Kamal, Git, and Process. Run `agent-notes list skills` for the current list, or browse `agent_notes/data/skills/`. For additional workflows (brainstorming, test-driven development, writing skills), see the complementary [Superpowers](https://github.com/obra/superpowers) plugin.
254
348
 
255
349
  The session context hook auto-generates a skill index from SKILL.md frontmatter at install time, so agents always know what skills are available without loading full skill content. This keeps context overhead low while maintaining skill discoverability.
256
350
 
@@ -267,14 +361,13 @@ Load the docker-compose skill for multi-service setup
267
361
  |---|---|---|
268
362
  | Misalignment | Claude starts building before the problem is resolved | `/grill-me`, `/grilling`, `/grill-with-docs` |
269
363
  | Vague scope | Work starts without a spec or ticketed breakdown | `/to-spec`, `/to-tickets`, `/wayfinder`, `/triage` |
270
- | Broken code | Claude codes without a feedback loop or evidence trail | `/tdd`, `/diagnosing-bugs` |
364
+ | Broken code | Claude codes without a feedback loop or evidence trail | `/diagnosing-bugs` |
271
365
  | Ball of mud | Architecture drifts; modules grow shallow and tangled | `/improve-codebase-architecture`, `/codebase-design`, `/domain-modeling` |
272
366
 
273
367
  **Skill descriptions:**
274
368
 
275
369
  - `/grill-me`, `/grilling` — Interview the user relentlessly until the plan is fully resolved before touching code
276
370
  - `/grill-with-docs` — Same, but cross-references CONTEXT.md and ADRs and updates them inline
277
- - `/tdd` — RED-GREEN-REFACTOR with tracer-bullet vertical slices; integration-first testing
278
371
  - `/diagnosing-bugs` — Diagnosis loop for hard bugs and performance regressions (build a feedback loop first)
279
372
  - `/improve-codebase-architecture` — Scan for deepening opportunities, present a visual HTML report, then grill the chosen one
280
373
  - `/codebase-design` — Shared vocabulary for designing deep modules and choosing where seams go
@@ -287,7 +380,6 @@ Load the docker-compose skill for multi-service setup
287
380
  - `/research` — Investigate a question against primary sources and capture findings as Markdown
288
381
  - `/prototype` — Throwaway prototypes: terminal app for logic or UI variations for visual
289
382
  - `/setup-agent-tracker` — One-time per-repo setup of the issue tracker, triage labels, and domain doc layout
290
- - `/writing-great-skills` — Reference for writing and editing skills well
291
383
 
292
384
  </details>
293
385
 
@@ -387,7 +479,7 @@ agent-notes config provider <name> # check if configured (without exposing
387
479
 
388
480
  ### Building and testing
389
481
 
390
- Python 3.10+ required. Create an isolated environment and run tests:
482
+ Python 3.11+ required. Create an isolated environment and run tests:
391
483
 
392
484
  ```bash
393
485
  python -m venv .venv && source .venv/bin/activate
@@ -480,7 +572,7 @@ See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md), [docs/ADD_CLI.md](docs/ADD_CLI
480
572
  ## Inspired by
481
573
 
482
574
  - [Andrej Karpathy's LLM Wiki](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) — The wiki memory backend implements his compile-once, query-forever knowledge pattern with structured page types and three core operations (ingest, query, lint)
483
- - [Matt Pocock's skills repo](https://github.com/mattpocock/skills) — Skill format (SKILL.md per directory), failure-mode table (misalignment, broken code, architectural degradation), and a set of engineering/productivity skills vendored from the upstream repo (tdd, grill-me, grilling, grill-with-docs, diagnosing-bugs, improve-codebase-architecture, codebase-design, domain-modeling, prototype, handoff, research, to-spec, to-tickets, triage, wayfinder, writing-great-skills). Last synced from upstream commit [`391a270`](https://github.com/mattpocock/skills/commit/391a2701dd948f94f56a39f7533f8eea9a859c87) (2026-07-10), reviewed for prompt-injection before import.
575
+ - [Matt Pocock's skills repo](https://github.com/mattpocock/skills) — Skill format (SKILL.md per directory), failure-mode table (misalignment, broken code, architectural degradation), and a set of engineering/productivity skills vendored from the upstream repo (grill-me, grilling, grill-with-docs, diagnosing-bugs, improve-codebase-architecture, codebase-design, domain-modeling, prototype, handoff, research, to-spec, to-tickets, triage, wayfinder). Last synced from upstream commit [`391a270`](https://github.com/mattpocock/skills/commit/391a2701dd948f94f56a39f7533f8eea9a859c87) (2026-07-10), reviewed for prompt-injection before import.
484
576
 
485
577
  ## License
486
578
 
@@ -0,0 +1 @@
1
+ 2.33.1
@@ -283,7 +283,7 @@ def main():
283
283
  # memory
284
284
  p_memory = subparsers.add_parser("memory", help="Manage agent memory")
285
285
  p_memory.add_argument("action", nargs="?", default="list",
286
- choices=["init", "list", "vault", "index", "add", "size", "show", "reset", "export", "import", "ingest", "query", "lint"],
286
+ choices=["init", "list", "vault", "index", "add", "size", "show", "reset", "export", "import"],
287
287
  help="Memory action")
288
288
  p_memory.add_argument("name", nargs="?", help="Agent name / note title (for show/reset/add)")
289
289
  p_memory.add_argument("extra", nargs="*", help="Additional args (for add: body [type] [agent] [project])")
@@ -299,10 +299,31 @@ def main():
299
299
  p_cost_report.add_argument("--since", help="Only include messages at or after this UTC datetime (ISO 8601)")
300
300
  p_cost_report.add_argument("--session", help="Session ID to report on (Claude Code only)")
301
301
 
302
+ # models
303
+ p_models = subparsers.add_parser("models", help="Manage the model catalog")
304
+ p_models_sub = p_models.add_subparsers(dest="subaction", metavar="")
305
+ p_refresh = p_models_sub.add_parser("refresh", help="Fetch latest models from providers and update cache")
306
+ p_refresh.add_argument("--provider", choices=["anthropic", "openai"],
307
+ help="Limit to one provider")
308
+ p_refresh.add_argument("--dry-run", action="store_true", dest="dry_run",
309
+ help="Print diff but do not write cache")
310
+ p_models_sub.add_parser("freeze", help="Promote cache to seed.json for committing")
311
+
312
+ # plugins
313
+ p_plugins = subparsers.add_parser("plugins", help="Manage agent-notes plugins")
314
+ p_plugins_sub = p_plugins.add_subparsers(dest="subaction", metavar="{list,enable,disable,info}")
315
+ p_plugins_sub.add_parser("list", help="List available plugins and their status")
316
+ p_plugins_enable = p_plugins_sub.add_parser("enable", help="Enable a plugin")
317
+ p_plugins_enable.add_argument("name", help="Plugin name")
318
+ p_plugins_disable = p_plugins_sub.add_parser("disable", help="Disable a plugin")
319
+ p_plugins_disable.add_argument("name", help="Plugin name")
320
+ p_plugins_info = p_plugins_sub.add_parser("info", help="Show details for a plugin")
321
+ p_plugins_info.add_argument("name", help="Plugin name")
322
+
302
323
  # config
303
324
  p_config = subparsers.add_parser("config", help="Reconfigure role/agent/model/memory/skill assignments after install")
304
325
  p_config.add_argument("action", nargs="?", default="wizard",
305
- choices=["wizard", "show", "role-model", "role-agent", "provider", "providers", "memory", "cost-report"],
326
+ choices=["wizard", "show", "role-model", "role-agent", "role-effort", "provider", "providers", "memory", "cost-report"],
306
327
  help="Config action (default: wizard)")
307
328
  p_config.add_argument("extra", nargs="*", help="Additional positional args (role, model, agent)")
308
329
  p_config.add_argument("--cli", help="Target CLI (claude / opencode / both)")
@@ -364,6 +385,35 @@ def main():
364
385
  elif args.command == "memory":
365
386
  from .commands.memory import memory
366
387
  memory(args.action, args.name, getattr(args, "extra", None), description=getattr(args, "description", ""))
388
+ elif args.command == "models":
389
+ subaction = getattr(args, "subaction", None)
390
+ if subaction == "refresh":
391
+ from .commands.models import refresh
392
+ refresh(
393
+ provider=getattr(args, "provider", None),
394
+ dry_run=getattr(args, "dry_run", False),
395
+ )
396
+ elif subaction == "freeze":
397
+ from .commands.models import freeze
398
+ freeze()
399
+ else:
400
+ parser.parse_args(["models", "--help"])
401
+ elif args.command == "plugins":
402
+ subaction = getattr(args, "subaction", None)
403
+ if subaction == "list":
404
+ from .commands.plugins import list_plugins
405
+ list_plugins()
406
+ elif subaction == "enable":
407
+ from .commands.plugins import enable_plugin
408
+ enable_plugin(args.name)
409
+ elif subaction == "disable":
410
+ from .commands.plugins import disable_plugin
411
+ disable_plugin(args.name)
412
+ elif subaction == "info":
413
+ from .commands.plugins import info_plugin
414
+ info_plugin(args.name)
415
+ else:
416
+ parser.parse_args(["plugins", "--help"])
367
417
  elif args.command == "config":
368
418
  from .commands.config import config
369
419
  config(action=args.action, args=getattr(args, "extra", None) or [], cli_filter=args.cli)
@@ -371,20 +421,10 @@ def main():
371
421
  from .commands.hook import hook
372
422
  hook(args.subaction)
373
423
  elif args.command == "cost-report":
374
- # Rebuild sys.argv slice so cost_report.main() can parse it normally
375
- argv = []
376
- if args.since:
377
- argv += ["--since", args.since]
378
- if args.session:
379
- argv += ["--session", args.session]
380
- import sys
381
- old_argv = sys.argv
382
- sys.argv = ["agent-notes cost-report"] + argv
383
- try:
384
- from .scripts.cost_report import main as _cost_report_main
385
- sys.exit(_cost_report_main())
386
- finally:
387
- sys.argv = old_argv
424
+ from .cost.cost_report import main as _cost_report_main, _parse_since
425
+ since = _parse_since(args.since) if args.since else None
426
+ session_id = args.session or None
427
+ sys.exit(_cost_report_main(since=since, session_id=session_id))
388
428
 
389
429
  if __name__ == "__main__":
390
430
  main()
@@ -188,7 +188,7 @@ def count_agents(backend) -> int:
188
188
  return 0
189
189
  from ..registries.agent_registry import load_agent_registry
190
190
  registry = load_agent_registry()
191
- return sum(1 for a in registry.all() if not a.excluded_from(backend.name))
191
+ return sum(1 for a in registry.available() if not a.excluded_from(backend.name))
192
192
 
193
193
 
194
194
  def count_global() -> int:
@@ -89,24 +89,60 @@ def count_lines(file_path: Path) -> int:
89
89
  return 0
90
90
 
91
91
 
92
- def build() -> None:
93
- """Build agent configuration files from source."""
92
+ def count_dist_clis(files: list[Path], dist_dir: Path, cli_names: set[str]) -> int:
93
+ """Count distinct CLI backends among generated files (dist/<cli>/... paths).
94
+
95
+ Files outside dist_dir or under non-CLI top-level dirs (rules/, skills/)
96
+ are ignored."""
97
+ found = set()
98
+ for f in files:
99
+ try:
100
+ rel = f.relative_to(dist_dir)
101
+ except ValueError:
102
+ continue
103
+ if rel.parts and rel.parts[0] in cli_names:
104
+ found.add(rel.parts[0])
105
+ return len(found)
106
+
107
+
108
+ def format_build_summary(n_files: int, n_lines: int, n_clis: int) -> str:
109
+ """One-line build summary, e.g. 'Generated 96 files (13,748 lines) across 4 CLIs'."""
110
+ file_word = "file" if n_files == 1 else "files"
111
+ cli_word = "CLI" if n_clis == 1 else "CLIs"
112
+ return f"Generated {n_files} {file_word} ({n_lines:,} lines) across {n_clis} {cli_word}"
113
+
114
+
115
+ def build(role_models=None, role_efforts=None, scope='global', project_path=None,
116
+ profile_label: str = "") -> None:
117
+ """Build agent configuration files from source.
118
+
119
+ Args:
120
+ role_models: Optional explicit {cli: {role: model_id}} pins that override
121
+ persisted state (e.g. wizard selections not yet written to state.json)
122
+ role_efforts: Optional explicit {cli: {role: effort}} pins, same semantics
123
+ scope: which state.json scope's pins drive the render ('global' or 'local')
124
+ project_path: project path for scope='local'
125
+ profile_label: named profile whose pins drive the render ("" = default profile)
126
+ """
94
127
  from ..services.state_store import load_state
95
- from ..config import ROOT
128
+ from ..registries.cli_registry import load_registry
96
129
 
97
130
  # Read configuration
98
131
  try:
99
- agents_config, tiers = load_agents_config()
132
+ agents_config = load_agents_config()
100
133
  except FileNotFoundError as e:
101
134
  print(f"Error: {e}")
102
135
  return
103
136
 
104
137
  # Load state if present (no error if missing)
105
138
  state = load_state()
106
-
139
+
107
140
  # Generate agent files (state=None is backward compatible)
108
141
  print("Generating agent files...")
109
- agent_files = generate_agent_files(agents_config, tiers, state=state)
142
+ agent_files = generate_agent_files(agents_config, state=state,
143
+ scope=scope, project_path=project_path,
144
+ role_models=role_models, role_efforts=role_efforts,
145
+ profile_label=profile_label)
110
146
 
111
147
  # Copy global files
112
148
  print("Copying global files...")
@@ -120,21 +156,12 @@ def build() -> None:
120
156
  print("Copying commands...")
121
157
  command_files = copy_commands()
122
158
 
123
- # Report results
159
+ # Report results — one-line summary (per-file listing was too noisy)
124
160
  all_files = agent_files + global_files + skill_files + command_files
125
- print(f"\nGenerated {len(all_files)} files:")
126
-
127
- total_lines = 0
128
- for file_path in sorted(all_files):
129
- try:
130
- rel_path = file_path.relative_to(ROOT)
131
- except ValueError:
132
- rel_path = file_path # absolute path if outside the package tree
133
- lines = count_lines(file_path)
134
- total_lines += lines
135
- print(f" {rel_path} ({lines} lines)")
136
-
137
- print(f"\nTotal: {total_lines} lines across {len(all_files)} files")
161
+ total_lines = sum(count_lines(f) for f in all_files)
162
+ cli_names = {b.name for b in load_registry().all()}
163
+ n_clis = count_dist_clis(all_files, DIST_DIR, cli_names)
164
+ print(f"\n{format_build_summary(len(all_files), total_lines, n_clis)}")
138
165
 
139
166
 
140
167
  if __name__ == '__main__':