agent-notes 2.16.0__tar.gz → 2.17.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. {agent_notes-2.16.0 → agent_notes-2.17.0}/PKG-INFO +28 -24
  2. {agent_notes-2.16.0 → agent_notes-2.17.0}/README.md +27 -23
  3. agent_notes-2.17.0/agent_notes/VERSION +1 -0
  4. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/installer.py +1 -1
  5. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes.egg-info/PKG-INFO +28 -24
  6. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/commands/test_uninstall_command.py +131 -0
  7. agent_notes-2.16.0/agent_notes/VERSION +0 -1
  8. {agent_notes-2.16.0 → agent_notes-2.17.0}/LICENSE +0 -0
  9. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/__init__.py +0 -0
  10. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/__main__.py +0 -0
  11. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/cli.py +0 -0
  12. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/__init__.py +0 -0
  13. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/_install_helpers.py +0 -0
  14. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/build.py +0 -0
  15. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/config.py +0 -0
  16. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/doctor.py +0 -0
  17. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/info.py +0 -0
  18. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/install.py +0 -0
  19. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/list.py +0 -0
  20. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/memory.py +0 -0
  21. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/regenerate.py +0 -0
  22. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/set_role.py +0 -0
  23. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/uninstall.py +0 -0
  24. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/validate.py +0 -0
  25. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/commands/wizard.py +0 -0
  26. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/config.py +0 -0
  27. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/agents.yaml +0 -0
  28. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/analyst.md +0 -0
  29. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/api-reviewer.md +0 -0
  30. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/architect.md +0 -0
  31. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/coder.md +0 -0
  32. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/database-specialist.md +0 -0
  33. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/debugger.md +0 -0
  34. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/devil.md +0 -0
  35. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/devops.md +0 -0
  36. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/explorer.md +0 -0
  37. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/integrations.md +0 -0
  38. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/lead.md +0 -0
  39. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/performance-profiler.md +0 -0
  40. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/refactorer.md +0 -0
  41. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/reviewer.md +0 -0
  42. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/security-auditor.md +0 -0
  43. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/shared/cost_reporting.md +0 -0
  44. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/shared/phase0.md +0 -0
  45. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/system-auditor.md +0 -0
  46. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/tech-writer.md +0 -0
  47. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/test-runner.md +0 -0
  48. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/agents/test-writer.md +0 -0
  49. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/cli/claude.yaml +0 -0
  50. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/cli/copilot.yaml +0 -0
  51. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/cli/opencode.yaml +0 -0
  52. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/commands/brainstorm.md +0 -0
  53. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/commands/debug.md +0 -0
  54. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/commands/review.md +0 -0
  55. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/global-claude.md +0 -0
  56. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/global-copilot.md +0 -0
  57. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/global-opencode.md +0 -0
  58. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/hooks/session-context.md.tpl +0 -0
  59. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/models/claude-haiku-4-5.yaml +0 -0
  60. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/models/claude-opus-4-1.yaml +0 -0
  61. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/models/claude-opus-4-5.yaml +0 -0
  62. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/models/claude-opus-4-6.yaml +0 -0
  63. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/models/claude-opus-4-7.yaml +0 -0
  64. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/models/claude-sonnet-4-5.yaml +0 -0
  65. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/models/claude-sonnet-4-6.yaml +0 -0
  66. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/models/claude-sonnet-4.yaml +0 -0
  67. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/plugin/claude.yaml +0 -0
  68. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/plugin/opencode-index.js.template +0 -0
  69. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/plugin/opencode.yaml +0 -0
  70. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/pricing.yaml +0 -0
  71. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/roles/orchestrator.yaml +0 -0
  72. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/roles/reasoner.yaml +0 -0
  73. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/roles/scout.yaml +0 -0
  74. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/roles/worker.yaml +0 -0
  75. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/rules/code-quality.md +0 -0
  76. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/rules/safety.md +0 -0
  77. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/brainstorming/SKILL.md +0 -0
  78. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/caveman/SKILL.md +0 -0
  79. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/code-review/SKILL.md +0 -0
  80. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/debugging-protocol/SKILL.md +0 -0
  81. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/docker-compose/SKILL.md +0 -0
  82. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/docker-compose-advanced/SKILL.md +0 -0
  83. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/docker-dockerfile/SKILL.md +0 -0
  84. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/docker-dockerfile-languages/SKILL.md +0 -0
  85. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/git/SKILL.md +0 -0
  86. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/grill-me/SKILL.md +0 -0
  87. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/grill-with-docs/SKILL.md +0 -0
  88. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/improve-codebase-architecture/SKILL.md +0 -0
  89. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/obsidian-memory/SKILL.md +0 -0
  90. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-active-storage/SKILL.md +0 -0
  91. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-broadcasting/SKILL.md +0 -0
  92. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-concerns/SKILL.md +0 -0
  93. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-controllers/SKILL.md +0 -0
  94. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-controllers-advanced/SKILL.md +0 -0
  95. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-helpers/SKILL.md +0 -0
  96. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-initializers/SKILL.md +0 -0
  97. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-javascript/SKILL.md +0 -0
  98. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-jobs/SKILL.md +0 -0
  99. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-kamal/SKILL.md +0 -0
  100. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-lib/SKILL.md +0 -0
  101. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-mailers/SKILL.md +0 -0
  102. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-migrations/SKILL.md +0 -0
  103. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-models/SKILL.md +0 -0
  104. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-models-advanced/SKILL.md +0 -0
  105. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-routes/SKILL.md +0 -0
  106. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-style/SKILL.md +0 -0
  107. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-testing-controllers/SKILL.md +0 -0
  108. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-testing-models/SKILL.md +0 -0
  109. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-testing-system/SKILL.md +0 -0
  110. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-validations/SKILL.md +0 -0
  111. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-view-components/SKILL.md +0 -0
  112. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-view-components-advanced/SKILL.md +0 -0
  113. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-views/SKILL.md +0 -0
  114. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/rails-views-advanced/SKILL.md +0 -0
  115. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/refactoring-protocol/SKILL.md +0 -0
  116. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/setup-project-context/SKILL.md +0 -0
  117. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/tdd/SKILL.md +0 -0
  118. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/skills/zoom-out/SKILL.md +0 -0
  119. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/templates/__init__.py +0 -0
  120. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/templates/__pycache__/__init__.cpython-314.pyc +0 -0
  121. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/templates/frontmatter/__init__.py +0 -0
  122. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-314.pyc +0 -0
  123. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-314.pyc +0 -0
  124. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
  125. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/templates/frontmatter/claude.py +0 -0
  126. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/data/templates/frontmatter/opencode.py +0 -0
  127. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/doctor_checks.py +0 -0
  128. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/domain/__init__.py +0 -0
  129. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/domain/agent.py +0 -0
  130. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/domain/cli_backend.py +0 -0
  131. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/domain/diagnostics.py +0 -0
  132. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/domain/diff.py +0 -0
  133. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/domain/model.py +0 -0
  134. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/domain/role.py +0 -0
  135. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/domain/rule.py +0 -0
  136. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/domain/skill.py +0 -0
  137. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/domain/state.py +0 -0
  138. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/install_state.py +0 -0
  139. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/registries/__init__.py +0 -0
  140. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/registries/_base.py +0 -0
  141. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/registries/agent_registry.py +0 -0
  142. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/registries/cli_registry.py +0 -0
  143. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/registries/model_registry.py +0 -0
  144. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/registries/role_registry.py +0 -0
  145. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/registries/rule_registry.py +0 -0
  146. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/registries/skill_registry.py +0 -0
  147. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/scripts/__init__.py +0 -0
  148. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/scripts/_claude_backend.py +0 -0
  149. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/scripts/_formatting.py +0 -0
  150. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/scripts/_opencode_backend.py +0 -0
  151. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/scripts/_pricing.py +0 -0
  152. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/scripts/cost_report.py +0 -0
  153. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/__init__.py +0 -0
  154. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/counts.py +0 -0
  155. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/credentials.py +0 -0
  156. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/diagnostics/__init__.py +0 -0
  157. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/diagnostics/_checks.py +0 -0
  158. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/diagnostics/_display.py +0 -0
  159. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/diagnostics/_fix.py +0 -0
  160. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/diff.py +0 -0
  161. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/fs.py +0 -0
  162. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/install_state_builder.py +0 -0
  163. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/memory_backend.py +0 -0
  164. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/rendering.py +0 -0
  165. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/session_context.py +0 -0
  166. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/settings_writer.py +0 -0
  167. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/state_store.py +0 -0
  168. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/ui.py +0 -0
  169. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/user_config.py +0 -0
  170. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/validation.py +0 -0
  171. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/services/wiki_backend.py +0 -0
  172. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes/state.py +0 -0
  173. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes.egg-info/SOURCES.txt +0 -0
  174. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes.egg-info/dependency_links.txt +0 -0
  175. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes.egg-info/entry_points.txt +0 -0
  176. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes.egg-info/requires.txt +0 -0
  177. {agent_notes-2.16.0 → agent_notes-2.17.0}/agent_notes.egg-info/top_level.txt +0 -0
  178. {agent_notes-2.16.0 → agent_notes-2.17.0}/pyproject.toml +0 -0
  179. {agent_notes-2.16.0 → agent_notes-2.17.0}/setup.cfg +0 -0
  180. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/conftest.py +0 -0
  181. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/__init__.py +0 -0
  182. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/commands/__init__.py +0 -0
  183. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/commands/test_config_command.py +0 -0
  184. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/commands/test_doctor_command.py +0 -0
  185. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/commands/test_info_command.py +0 -0
  186. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/commands/test_install_command.py +0 -0
  187. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/commands/test_list_command.py +0 -0
  188. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/commands/test_regenerate_command.py +0 -0
  189. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/commands/test_validate_command.py +0 -0
  190. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/memory/__init__.py +0 -0
  191. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/memory/test_memory_command.py +0 -0
  192. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/scripts/__init__.py +0 -0
  193. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/functional/scripts/test_release_script.py +0 -0
  194. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/integration/__init__.py +0 -0
  195. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/integration/build_output/__init__.py +0 -0
  196. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/integration/build_output/test_build_output.py +0 -0
  197. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/integration/install/__init__.py +0 -0
  198. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/integration/install/test_install_methods.py +0 -0
  199. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/integration/plugin_builders/__init__.py +0 -0
  200. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/integration/plugin_builders/test_plugin_builders.py +0 -0
  201. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/plugins/__init__.py +0 -0
  202. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/plugins/claude/__init__.py +0 -0
  203. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/plugins/claude/test_agents.py +0 -0
  204. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/plugins/test_skills.py +0 -0
  205. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/__init__.py +0 -0
  206. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/commands/__init__.py +0 -0
  207. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/commands/test_cost_report_subcommand.py +0 -0
  208. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/commands/test_count_agents.py +0 -0
  209. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/commands/test_memory_migrate.py +0 -0
  210. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/commands/test_wizard_orchestrator_skip.py +0 -0
  211. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/commands/test_wizard_preflight.py +0 -0
  212. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/registries/__init__.py +0 -0
  213. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/registries/test_registries.py +0 -0
  214. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/scripts/__init__.py +0 -0
  215. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/scripts/test_cost_report.py +0 -0
  216. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/scripts/test_cost_report_scoping.py +0 -0
  217. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/scripts/test_formatting_tty.py +0 -0
  218. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/scripts/test_time_aggregation.py +0 -0
  219. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/services/__init__.py +0 -0
  220. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/services/test_build_functions.py +0 -0
  221. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/services/test_credentials.py +0 -0
  222. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/services/test_fs.py +0 -0
  223. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/services/test_installer_plan.py +0 -0
  224. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/services/test_memory_backend.py +0 -0
  225. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/services/test_memory_backend_io.py +0 -0
  226. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/services/test_rendering_includes.py +0 -0
  227. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/services/test_session_context.py +0 -0
  228. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/services/test_settings_writer.py +0 -0
  229. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/services/test_wiki_backend.py +0 -0
  230. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/test_import_health.py +0 -0
  231. {agent_notes-2.16.0 → agent_notes-2.17.0}/tests/unit/test_memory_dir_for_backend.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-notes
3
- Version: 2.16.0
3
+ Version: 2.17.0
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
@@ -32,7 +32,7 @@ Dynamic: license-file
32
32
 
33
33
  AI agent configuration manager for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) and [OpenCode](https://github.com/opencode-ai/opencode).
34
34
 
35
- Configures a Lead agent (Opus) that orchestrates a team of 18 specialized subagents across three model tiers — so Opus plans and reasons, Sonnet executes, and Haiku explores.
35
+ Configures a Lead agent (Opus) that orchestrates a team of 18 specialized subagents across three model tiers — so Opus 4.6 plans and reasons, Sonnet 4.6 executes, and Haiku 4.5 explores.
36
36
 
37
37
  ## Quick Start
38
38
 
@@ -86,8 +86,8 @@ Iteration loop: edit source → `python -m build` → `pipx reinstall dist/*.whl
86
86
 
87
87
  ### 3. Plugin — limited functionality
88
88
 
89
- - **Claude Code**: install via the Claude Code plugin marketplace.
90
- - **OpenCode**: copy or symlink `.opencode-plugin/` into `~/.config/opencode/plugins/agent-notes/` and add `"plugin": ["agent-notes"]` to `opencode.json`.
89
+ - **Claude Code**: install via the Claude Code plugin marketplace or copy/symlink `.claude-plugin/` into `~/.claude/plugins/agent-notes/`.
90
+ - **OpenCode**: copy or symlink `.claude-plugin/` into `~/.config/opencode/plugins/agent-notes/` and add `"plugin": ["agent-notes"]` to `opencode.json`.
91
91
 
92
92
  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.
93
93
 
@@ -113,8 +113,8 @@ agent-notes <command> [options]
113
113
 
114
114
  | Command | Description |
115
115
  |---------|-------------|
116
- | `install [--local] [--copy]` | Interactive wizard or direct install |
117
- | `uninstall [--local]` | Remove installed components |
116
+ | `install [--local] [--copy] [--reconfigure]` | Interactive wizard or direct install |
117
+ | `uninstall [--local \| --global]` | Remove installed components (both scopes by default) |
118
118
  | `doctor [--local] [--fix]` | Check installation health |
119
119
  | `info` | Show status and component counts |
120
120
  | `list [clis\|models\|roles\|agents\|skills\|rules\|all]` | List engine components or installed |
@@ -122,6 +122,7 @@ agent-notes <command> [options]
122
122
  | `regenerate [--cli <cli>]` | Rebuild files from state.json (Phase 10+) |
123
123
  | `validate` | Lint source configuration files |
124
124
  | `memory [list\|size\|show\|reset\|export\|import] [name]` | Manage agent memory |
125
+ | `cost-report` | Show session cost breakdown by agent and model |
125
126
 
126
127
  ### Supported platforms
127
128
 
@@ -152,25 +153,25 @@ agent-notes memory add "Rails enum prefix" \
152
153
 
153
154
  ## Agent Team
154
155
 
155
- Specialized subagents with hierarchical model strategy: **Opus 4.7 decides, Sonnet 4 executes, Haiku 4.5 explores.**
156
+ Specialized subagents with hierarchical model strategy: **Opus 4.6 decides, Sonnet 4.6 executes, Haiku 4.5 explores.**
156
157
 
157
158
  | Agent | Model | Role |
158
159
  |-------|-------|------|
159
- | **lead** | Opus 4.7 | Plans, delegates, reviews. Orchestrator. |
160
- | **architect** | Opus 4.7 | System architecture, module boundaries, domain models. Read-only. |
161
- | **debugger** | Opus 4.7 | Bug investigation: reproduces, isolates, identifies root cause. Read-only. |
162
- | **coder** | Sonnet 4 | Implements features, fixes bugs, edits files. |
163
- | **reviewer** | Sonnet 4 | Code quality review. Read-only. |
164
- | **security-auditor** | Sonnet 4 | Security vulnerability analysis. Read-only. |
165
- | **test-writer** | Sonnet 4 | Writes tests for any framework. |
166
- | **test-runner** | Sonnet 4 | Diagnoses and fixes failing tests. |
167
- | **system-auditor** | Sonnet 4 | Codebase health: duplication, N+1, coupling. Read-only. |
168
- | **database-specialist** | Sonnet 4 | Schema design, indexes, query performance, migrations. Read-only. |
169
- | **performance-profiler** | Sonnet 4 | Response times, memory, caching, bundle size. Read-only. |
170
- | **devops** | Sonnet 4 | Docker, CI/CD, deployment configs. |
171
- | **devil** | Sonnet 4 | Challenges plans to surface hidden risks. Read-only. |
172
- | **integrations** | Sonnet 4 | Third-party integrations: OAuth, webhooks, payments. |
173
- | **refactorer** | Sonnet 4 | Improves code structure without changing behavior. |
160
+ | **lead** | Opus 4.6 | Plans, delegates, reviews. Orchestrator. |
161
+ | **architect** | Opus 4.6 | System architecture, module boundaries, domain models. Read-only. |
162
+ | **debugger** | Opus 4.6 | Bug investigation: reproduces, isolates, identifies root cause. Read-only. |
163
+ | **coder** | Sonnet 4.6 | Implements features, fixes bugs, edits files. |
164
+ | **reviewer** | Sonnet 4.6 | Code quality review. Read-only. |
165
+ | **security-auditor** | Sonnet 4.6 | Security vulnerability analysis. Read-only. |
166
+ | **test-writer** | Sonnet 4.6 | Writes tests for any framework. |
167
+ | **test-runner** | Sonnet 4.6 | Diagnoses and fixes failing tests. |
168
+ | **system-auditor** | Sonnet 4.6 | Codebase health: duplication, N+1, coupling. Read-only. |
169
+ | **database-specialist** | Sonnet 4.6 | Schema design, indexes, query performance, migrations. Read-only. |
170
+ | **performance-profiler** | Sonnet 4.6 | Response times, memory, caching, bundle size. Read-only. |
171
+ | **devops** | Sonnet 4.6 | Docker, CI/CD, deployment configs. |
172
+ | **devil** | Sonnet 4.6 | Challenges plans to surface hidden risks. Read-only. |
173
+ | **integrations** | Sonnet 4.6 | Third-party integrations: OAuth, webhooks, payments. |
174
+ | **refactorer** | Sonnet 4.6 | Improves code structure without changing behavior. |
174
175
  | **analyst** | Haiku 4.5 | Requirements analysis: surfaces missing or contradictory requirements. Read-only. |
175
176
  | **api-reviewer** | Haiku 4.5 | API design, versioning, error handling, backward compatibility. Read-only. |
176
177
  | **tech-writer** | Haiku 4.5 | Documentation: READMEs, API docs, changelogs. |
@@ -178,7 +179,7 @@ Specialized subagents with hierarchical model strategy: **Opus 4.7 decides, Sonn
178
179
 
179
180
  ## Architecture
180
181
 
181
- agent-notes is a 4-layer engine (domain / registries / services / commands). All extensible content (CLIs, models, roles, agents, skills, rules) lives in `agent_notes/data/` as YAML — adding a new CLI/model/role is a YAML drop, no Python changes. See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md), [docs/ADD_CLI.md](docs/ADD_CLI.md), [docs/ADD_MODEL.md](docs/ADD_MODEL.md), [docs/ADD_ROLE.md](docs/ADD_ROLE.md).
182
+ agent-notes is a 4-layer engine (domain / registries / services / commands). All extensible content (CLIs, models, roles, agents, skills, rules) lives in `agent_notes/data/` as YAML — adding a new CLI/model/role is a YAML drop, no Python changes. Context is loaded in tiers: always-loaded (CLAUDE.md, rules, skill catalog), lazy-loaded (full skill content, agent prompts), and pull-based (memory notes). See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md), [docs/ADD_CLI.md](docs/ADD_CLI.md), [docs/ADD_MODEL.md](docs/ADD_MODEL.md), [docs/ADD_ROLE.md](docs/ADD_ROLE.md).
182
183
 
183
184
  ## Improved Claude Code workflows
184
185
 
@@ -204,6 +205,8 @@ Four failure modes that derail AI-assisted development, and the skills that addr
204
205
 
205
206
  42 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/`.
206
207
 
208
+ 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.
209
+
207
210
  ### Using skills in Claude Code / OpenCode
208
211
 
209
212
  ```
@@ -221,6 +224,7 @@ Agents accumulate knowledge across sessions using one of three backends, chosen
221
224
  |---------|---------|----------|
222
225
  | **Local** | `~/.claude/agent-memory/<agent>/` — plain markdown per agent | Simple setup, no extra tools |
223
226
  | **Obsidian** | Category vault with YAML frontmatter and `[[wikilinks]]` | Visual browsing, backlinks, Dataview queries |
227
+ | **Wiki** | `~/Documents/Obsidian Vault/agent-wiki/` — structured wiki with categories | Team knowledge bases, shared context |
224
228
  | **None** | Disabled — no files written | Stateless or shared machines |
225
229
 
226
230
  ### Obsidian setup
@@ -268,7 +272,7 @@ Always use `_prefix: true` with Rails enums to avoid method name collisions.
268
272
 
269
273
  ## Development
270
274
 
271
- Python 3.9+ required. Build from source and run tests:
275
+ Python 3.10+ required. Build from source and run tests:
272
276
 
273
277
  ```bash
274
278
  python -m build && pipx install dist/*.whl
@@ -2,7 +2,7 @@
2
2
 
3
3
  AI agent configuration manager for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) and [OpenCode](https://github.com/opencode-ai/opencode).
4
4
 
5
- Configures a Lead agent (Opus) that orchestrates a team of 18 specialized subagents across three model tiers — so Opus plans and reasons, Sonnet executes, and Haiku explores.
5
+ Configures a Lead agent (Opus) that orchestrates a team of 18 specialized subagents across three model tiers — so Opus 4.6 plans and reasons, Sonnet 4.6 executes, and Haiku 4.5 explores.
6
6
 
7
7
  ## Quick Start
8
8
 
@@ -56,8 +56,8 @@ Iteration loop: edit source → `python -m build` → `pipx reinstall dist/*.whl
56
56
 
57
57
  ### 3. Plugin — limited functionality
58
58
 
59
- - **Claude Code**: install via the Claude Code plugin marketplace.
60
- - **OpenCode**: copy or symlink `.opencode-plugin/` into `~/.config/opencode/plugins/agent-notes/` and add `"plugin": ["agent-notes"]` to `opencode.json`.
59
+ - **Claude Code**: install via the Claude Code plugin marketplace or copy/symlink `.claude-plugin/` into `~/.claude/plugins/agent-notes/`.
60
+ - **OpenCode**: copy or symlink `.claude-plugin/` into `~/.config/opencode/plugins/agent-notes/` and add `"plugin": ["agent-notes"]` to `opencode.json`.
61
61
 
62
62
  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.
63
63
 
@@ -83,8 +83,8 @@ agent-notes <command> [options]
83
83
 
84
84
  | Command | Description |
85
85
  |---------|-------------|
86
- | `install [--local] [--copy]` | Interactive wizard or direct install |
87
- | `uninstall [--local]` | Remove installed components |
86
+ | `install [--local] [--copy] [--reconfigure]` | Interactive wizard or direct install |
87
+ | `uninstall [--local \| --global]` | Remove installed components (both scopes by default) |
88
88
  | `doctor [--local] [--fix]` | Check installation health |
89
89
  | `info` | Show status and component counts |
90
90
  | `list [clis\|models\|roles\|agents\|skills\|rules\|all]` | List engine components or installed |
@@ -92,6 +92,7 @@ agent-notes <command> [options]
92
92
  | `regenerate [--cli <cli>]` | Rebuild files from state.json (Phase 10+) |
93
93
  | `validate` | Lint source configuration files |
94
94
  | `memory [list\|size\|show\|reset\|export\|import] [name]` | Manage agent memory |
95
+ | `cost-report` | Show session cost breakdown by agent and model |
95
96
 
96
97
  ### Supported platforms
97
98
 
@@ -122,25 +123,25 @@ agent-notes memory add "Rails enum prefix" \
122
123
 
123
124
  ## Agent Team
124
125
 
125
- Specialized subagents with hierarchical model strategy: **Opus 4.7 decides, Sonnet 4 executes, Haiku 4.5 explores.**
126
+ Specialized subagents with hierarchical model strategy: **Opus 4.6 decides, Sonnet 4.6 executes, Haiku 4.5 explores.**
126
127
 
127
128
  | Agent | Model | Role |
128
129
  |-------|-------|------|
129
- | **lead** | Opus 4.7 | Plans, delegates, reviews. Orchestrator. |
130
- | **architect** | Opus 4.7 | System architecture, module boundaries, domain models. Read-only. |
131
- | **debugger** | Opus 4.7 | Bug investigation: reproduces, isolates, identifies root cause. Read-only. |
132
- | **coder** | Sonnet 4 | Implements features, fixes bugs, edits files. |
133
- | **reviewer** | Sonnet 4 | Code quality review. Read-only. |
134
- | **security-auditor** | Sonnet 4 | Security vulnerability analysis. Read-only. |
135
- | **test-writer** | Sonnet 4 | Writes tests for any framework. |
136
- | **test-runner** | Sonnet 4 | Diagnoses and fixes failing tests. |
137
- | **system-auditor** | Sonnet 4 | Codebase health: duplication, N+1, coupling. Read-only. |
138
- | **database-specialist** | Sonnet 4 | Schema design, indexes, query performance, migrations. Read-only. |
139
- | **performance-profiler** | Sonnet 4 | Response times, memory, caching, bundle size. Read-only. |
140
- | **devops** | Sonnet 4 | Docker, CI/CD, deployment configs. |
141
- | **devil** | Sonnet 4 | Challenges plans to surface hidden risks. Read-only. |
142
- | **integrations** | Sonnet 4 | Third-party integrations: OAuth, webhooks, payments. |
143
- | **refactorer** | Sonnet 4 | Improves code structure without changing behavior. |
130
+ | **lead** | Opus 4.6 | Plans, delegates, reviews. Orchestrator. |
131
+ | **architect** | Opus 4.6 | System architecture, module boundaries, domain models. Read-only. |
132
+ | **debugger** | Opus 4.6 | Bug investigation: reproduces, isolates, identifies root cause. Read-only. |
133
+ | **coder** | Sonnet 4.6 | Implements features, fixes bugs, edits files. |
134
+ | **reviewer** | Sonnet 4.6 | Code quality review. Read-only. |
135
+ | **security-auditor** | Sonnet 4.6 | Security vulnerability analysis. Read-only. |
136
+ | **test-writer** | Sonnet 4.6 | Writes tests for any framework. |
137
+ | **test-runner** | Sonnet 4.6 | Diagnoses and fixes failing tests. |
138
+ | **system-auditor** | Sonnet 4.6 | Codebase health: duplication, N+1, coupling. Read-only. |
139
+ | **database-specialist** | Sonnet 4.6 | Schema design, indexes, query performance, migrations. Read-only. |
140
+ | **performance-profiler** | Sonnet 4.6 | Response times, memory, caching, bundle size. Read-only. |
141
+ | **devops** | Sonnet 4.6 | Docker, CI/CD, deployment configs. |
142
+ | **devil** | Sonnet 4.6 | Challenges plans to surface hidden risks. Read-only. |
143
+ | **integrations** | Sonnet 4.6 | Third-party integrations: OAuth, webhooks, payments. |
144
+ | **refactorer** | Sonnet 4.6 | Improves code structure without changing behavior. |
144
145
  | **analyst** | Haiku 4.5 | Requirements analysis: surfaces missing or contradictory requirements. Read-only. |
145
146
  | **api-reviewer** | Haiku 4.5 | API design, versioning, error handling, backward compatibility. Read-only. |
146
147
  | **tech-writer** | Haiku 4.5 | Documentation: READMEs, API docs, changelogs. |
@@ -148,7 +149,7 @@ Specialized subagents with hierarchical model strategy: **Opus 4.7 decides, Sonn
148
149
 
149
150
  ## Architecture
150
151
 
151
- agent-notes is a 4-layer engine (domain / registries / services / commands). All extensible content (CLIs, models, roles, agents, skills, rules) lives in `agent_notes/data/` as YAML — adding a new CLI/model/role is a YAML drop, no Python changes. See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md), [docs/ADD_CLI.md](docs/ADD_CLI.md), [docs/ADD_MODEL.md](docs/ADD_MODEL.md), [docs/ADD_ROLE.md](docs/ADD_ROLE.md).
152
+ agent-notes is a 4-layer engine (domain / registries / services / commands). All extensible content (CLIs, models, roles, agents, skills, rules) lives in `agent_notes/data/` as YAML — adding a new CLI/model/role is a YAML drop, no Python changes. Context is loaded in tiers: always-loaded (CLAUDE.md, rules, skill catalog), lazy-loaded (full skill content, agent prompts), and pull-based (memory notes). See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md), [docs/ADD_CLI.md](docs/ADD_CLI.md), [docs/ADD_MODEL.md](docs/ADD_MODEL.md), [docs/ADD_ROLE.md](docs/ADD_ROLE.md).
152
153
 
153
154
  ## Improved Claude Code workflows
154
155
 
@@ -174,6 +175,8 @@ Four failure modes that derail AI-assisted development, and the skills that addr
174
175
 
175
176
  42 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/`.
176
177
 
178
+ 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.
179
+
177
180
  ### Using skills in Claude Code / OpenCode
178
181
 
179
182
  ```
@@ -191,6 +194,7 @@ Agents accumulate knowledge across sessions using one of three backends, chosen
191
194
  |---------|---------|----------|
192
195
  | **Local** | `~/.claude/agent-memory/<agent>/` — plain markdown per agent | Simple setup, no extra tools |
193
196
  | **Obsidian** | Category vault with YAML frontmatter and `[[wikilinks]]` | Visual browsing, backlinks, Dataview queries |
197
+ | **Wiki** | `~/Documents/Obsidian Vault/agent-wiki/` — structured wiki with categories | Team knowledge bases, shared context |
194
198
  | **None** | Disabled — no files written | Stateless or shared machines |
195
199
 
196
200
  ### Obsidian setup
@@ -238,7 +242,7 @@ Always use `_prefix: true` with Rails enums to avoid method name collisions.
238
242
 
239
243
  ## Development
240
244
 
241
- Python 3.9+ required. Build from source and run tests:
245
+ Python 3.10+ required. Build from source and run tests:
242
246
 
243
247
  ```bash
244
248
  python -m build && pipx install dist/*.whl
@@ -0,0 +1 @@
1
+ 2.17.0
@@ -347,7 +347,7 @@ def uninstall_all(scope: str, registry: Optional[CLIRegistry] = None) -> None:
347
347
  copy_mode = False
348
348
  state = load_state()
349
349
  if state is not None:
350
- scope_state = get_scope(state, scope)
350
+ scope_state = get_scope(state, scope, project_path=Path.cwd() if scope == "local" else None)
351
351
  if scope_state is not None:
352
352
  copy_mode = (scope_state.mode == "copy")
353
353
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-notes
3
- Version: 2.16.0
3
+ Version: 2.17.0
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
@@ -32,7 +32,7 @@ Dynamic: license-file
32
32
 
33
33
  AI agent configuration manager for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) and [OpenCode](https://github.com/opencode-ai/opencode).
34
34
 
35
- Configures a Lead agent (Opus) that orchestrates a team of 18 specialized subagents across three model tiers — so Opus plans and reasons, Sonnet executes, and Haiku explores.
35
+ Configures a Lead agent (Opus) that orchestrates a team of 18 specialized subagents across three model tiers — so Opus 4.6 plans and reasons, Sonnet 4.6 executes, and Haiku 4.5 explores.
36
36
 
37
37
  ## Quick Start
38
38
 
@@ -86,8 +86,8 @@ Iteration loop: edit source → `python -m build` → `pipx reinstall dist/*.whl
86
86
 
87
87
  ### 3. Plugin — limited functionality
88
88
 
89
- - **Claude Code**: install via the Claude Code plugin marketplace.
90
- - **OpenCode**: copy or symlink `.opencode-plugin/` into `~/.config/opencode/plugins/agent-notes/` and add `"plugin": ["agent-notes"]` to `opencode.json`.
89
+ - **Claude Code**: install via the Claude Code plugin marketplace or copy/symlink `.claude-plugin/` into `~/.claude/plugins/agent-notes/`.
90
+ - **OpenCode**: copy or symlink `.claude-plugin/` into `~/.config/opencode/plugins/agent-notes/` and add `"plugin": ["agent-notes"]` to `opencode.json`.
91
91
 
92
92
  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.
93
93
 
@@ -113,8 +113,8 @@ agent-notes <command> [options]
113
113
 
114
114
  | Command | Description |
115
115
  |---------|-------------|
116
- | `install [--local] [--copy]` | Interactive wizard or direct install |
117
- | `uninstall [--local]` | Remove installed components |
116
+ | `install [--local] [--copy] [--reconfigure]` | Interactive wizard or direct install |
117
+ | `uninstall [--local \| --global]` | Remove installed components (both scopes by default) |
118
118
  | `doctor [--local] [--fix]` | Check installation health |
119
119
  | `info` | Show status and component counts |
120
120
  | `list [clis\|models\|roles\|agents\|skills\|rules\|all]` | List engine components or installed |
@@ -122,6 +122,7 @@ agent-notes <command> [options]
122
122
  | `regenerate [--cli <cli>]` | Rebuild files from state.json (Phase 10+) |
123
123
  | `validate` | Lint source configuration files |
124
124
  | `memory [list\|size\|show\|reset\|export\|import] [name]` | Manage agent memory |
125
+ | `cost-report` | Show session cost breakdown by agent and model |
125
126
 
126
127
  ### Supported platforms
127
128
 
@@ -152,25 +153,25 @@ agent-notes memory add "Rails enum prefix" \
152
153
 
153
154
  ## Agent Team
154
155
 
155
- Specialized subagents with hierarchical model strategy: **Opus 4.7 decides, Sonnet 4 executes, Haiku 4.5 explores.**
156
+ Specialized subagents with hierarchical model strategy: **Opus 4.6 decides, Sonnet 4.6 executes, Haiku 4.5 explores.**
156
157
 
157
158
  | Agent | Model | Role |
158
159
  |-------|-------|------|
159
- | **lead** | Opus 4.7 | Plans, delegates, reviews. Orchestrator. |
160
- | **architect** | Opus 4.7 | System architecture, module boundaries, domain models. Read-only. |
161
- | **debugger** | Opus 4.7 | Bug investigation: reproduces, isolates, identifies root cause. Read-only. |
162
- | **coder** | Sonnet 4 | Implements features, fixes bugs, edits files. |
163
- | **reviewer** | Sonnet 4 | Code quality review. Read-only. |
164
- | **security-auditor** | Sonnet 4 | Security vulnerability analysis. Read-only. |
165
- | **test-writer** | Sonnet 4 | Writes tests for any framework. |
166
- | **test-runner** | Sonnet 4 | Diagnoses and fixes failing tests. |
167
- | **system-auditor** | Sonnet 4 | Codebase health: duplication, N+1, coupling. Read-only. |
168
- | **database-specialist** | Sonnet 4 | Schema design, indexes, query performance, migrations. Read-only. |
169
- | **performance-profiler** | Sonnet 4 | Response times, memory, caching, bundle size. Read-only. |
170
- | **devops** | Sonnet 4 | Docker, CI/CD, deployment configs. |
171
- | **devil** | Sonnet 4 | Challenges plans to surface hidden risks. Read-only. |
172
- | **integrations** | Sonnet 4 | Third-party integrations: OAuth, webhooks, payments. |
173
- | **refactorer** | Sonnet 4 | Improves code structure without changing behavior. |
160
+ | **lead** | Opus 4.6 | Plans, delegates, reviews. Orchestrator. |
161
+ | **architect** | Opus 4.6 | System architecture, module boundaries, domain models. Read-only. |
162
+ | **debugger** | Opus 4.6 | Bug investigation: reproduces, isolates, identifies root cause. Read-only. |
163
+ | **coder** | Sonnet 4.6 | Implements features, fixes bugs, edits files. |
164
+ | **reviewer** | Sonnet 4.6 | Code quality review. Read-only. |
165
+ | **security-auditor** | Sonnet 4.6 | Security vulnerability analysis. Read-only. |
166
+ | **test-writer** | Sonnet 4.6 | Writes tests for any framework. |
167
+ | **test-runner** | Sonnet 4.6 | Diagnoses and fixes failing tests. |
168
+ | **system-auditor** | Sonnet 4.6 | Codebase health: duplication, N+1, coupling. Read-only. |
169
+ | **database-specialist** | Sonnet 4.6 | Schema design, indexes, query performance, migrations. Read-only. |
170
+ | **performance-profiler** | Sonnet 4.6 | Response times, memory, caching, bundle size. Read-only. |
171
+ | **devops** | Sonnet 4.6 | Docker, CI/CD, deployment configs. |
172
+ | **devil** | Sonnet 4.6 | Challenges plans to surface hidden risks. Read-only. |
173
+ | **integrations** | Sonnet 4.6 | Third-party integrations: OAuth, webhooks, payments. |
174
+ | **refactorer** | Sonnet 4.6 | Improves code structure without changing behavior. |
174
175
  | **analyst** | Haiku 4.5 | Requirements analysis: surfaces missing or contradictory requirements. Read-only. |
175
176
  | **api-reviewer** | Haiku 4.5 | API design, versioning, error handling, backward compatibility. Read-only. |
176
177
  | **tech-writer** | Haiku 4.5 | Documentation: READMEs, API docs, changelogs. |
@@ -178,7 +179,7 @@ Specialized subagents with hierarchical model strategy: **Opus 4.7 decides, Sonn
178
179
 
179
180
  ## Architecture
180
181
 
181
- agent-notes is a 4-layer engine (domain / registries / services / commands). All extensible content (CLIs, models, roles, agents, skills, rules) lives in `agent_notes/data/` as YAML — adding a new CLI/model/role is a YAML drop, no Python changes. See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md), [docs/ADD_CLI.md](docs/ADD_CLI.md), [docs/ADD_MODEL.md](docs/ADD_MODEL.md), [docs/ADD_ROLE.md](docs/ADD_ROLE.md).
182
+ agent-notes is a 4-layer engine (domain / registries / services / commands). All extensible content (CLIs, models, roles, agents, skills, rules) lives in `agent_notes/data/` as YAML — adding a new CLI/model/role is a YAML drop, no Python changes. Context is loaded in tiers: always-loaded (CLAUDE.md, rules, skill catalog), lazy-loaded (full skill content, agent prompts), and pull-based (memory notes). See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md), [docs/ADD_CLI.md](docs/ADD_CLI.md), [docs/ADD_MODEL.md](docs/ADD_MODEL.md), [docs/ADD_ROLE.md](docs/ADD_ROLE.md).
182
183
 
183
184
  ## Improved Claude Code workflows
184
185
 
@@ -204,6 +205,8 @@ Four failure modes that derail AI-assisted development, and the skills that addr
204
205
 
205
206
  42 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/`.
206
207
 
208
+ 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.
209
+
207
210
  ### Using skills in Claude Code / OpenCode
208
211
 
209
212
  ```
@@ -221,6 +224,7 @@ Agents accumulate knowledge across sessions using one of three backends, chosen
221
224
  |---------|---------|----------|
222
225
  | **Local** | `~/.claude/agent-memory/<agent>/` — plain markdown per agent | Simple setup, no extra tools |
223
226
  | **Obsidian** | Category vault with YAML frontmatter and `[[wikilinks]]` | Visual browsing, backlinks, Dataview queries |
227
+ | **Wiki** | `~/Documents/Obsidian Vault/agent-wiki/` — structured wiki with categories | Team knowledge bases, shared context |
224
228
  | **None** | Disabled — no files written | Stateless or shared machines |
225
229
 
226
230
  ### Obsidian setup
@@ -268,7 +272,7 @@ Always use `_prefix: true` with Rails enums to avoid method name collisions.
268
272
 
269
273
  ## Development
270
274
 
271
- Python 3.9+ required. Build from source and run tests:
275
+ Python 3.10+ required. Build from source and run tests:
272
276
 
273
277
  ```bash
274
278
  python -m build && pipx install dist/*.whl
@@ -201,3 +201,134 @@ class TestUninstallIdempotent:
201
201
 
202
202
  do_uninstall()
203
203
  do_uninstall() # must not raise
204
+
205
+
206
+ # ── Regression: local scope does not raise ValueError ─────────────────────────
207
+
208
+ class TestUninstallLocalScopeDoesNotCrash:
209
+ """Regression for: uninstall_all("local") raised ValueError because get_scope
210
+ was called without project_path when scope == "local"."""
211
+
212
+ def test_uninstall_all_local_does_not_raise_value_error(self, tmp_path, monkeypatch):
213
+ """uninstall_all('local') must not raise ValueError even when state exists."""
214
+ project_dir = tmp_path / "myproject"
215
+ project_dir.mkdir()
216
+
217
+ backend_home = tmp_path / "claude_home"
218
+ registry = CLIRegistry([_make_backend("claude", backend_home)])
219
+
220
+ xdg = tmp_path / "config"
221
+ xdg.mkdir()
222
+ monkeypatch.setenv("XDG_CONFIG_HOME", str(xdg))
223
+ _write_minimal_state(
224
+ xdg / "agent-notes" / "state.json",
225
+ scope="local",
226
+ project_path=str(project_dir.resolve()),
227
+ )
228
+
229
+ # Simulate cwd being the local project so get_scope can resolve the path
230
+ monkeypatch.chdir(project_dir)
231
+
232
+ from agent_notes.services.installer import uninstall_all
233
+
234
+ # Must not raise ValueError("project_path required for local scope")
235
+ with patch("agent_notes.services.installer.load_registry", return_value=registry), \
236
+ patch("agent_notes.services.installer._uninstall_session_hook"):
237
+ uninstall_all("local", registry=registry)
238
+
239
+ def test_uninstall_command_local_flag_does_not_raise_value_error(self, tmp_path, monkeypatch):
240
+ """The uninstall command's --local path must not raise ValueError."""
241
+ project_dir = tmp_path / "myproject"
242
+ project_dir.mkdir()
243
+
244
+ backend_home = tmp_path / "claude_home"
245
+ registry = CLIRegistry([_make_backend("claude", backend_home)])
246
+
247
+ xdg = tmp_path / "config"
248
+ xdg.mkdir()
249
+ monkeypatch.setenv("XDG_CONFIG_HOME", str(xdg))
250
+ _write_minimal_state(
251
+ xdg / "agent-notes" / "state.json",
252
+ scope="local",
253
+ project_path=str(project_dir.resolve()),
254
+ )
255
+
256
+ monkeypatch.chdir(project_dir)
257
+
258
+ with patch("agent_notes.services.installer.load_registry", return_value=registry), \
259
+ patch("agent_notes.services.installer._uninstall_session_hook"), \
260
+ patch("agent_notes.install_state.remove_install_state"):
261
+ from agent_notes.commands.uninstall import uninstall
262
+ uninstall(local=True) # must not raise
263
+
264
+ def test_uninstall_all_local_with_no_state_does_not_raise(self, tmp_path, monkeypatch):
265
+ """When there is no state.json, uninstall_all('local') should still not raise."""
266
+ project_dir = tmp_path / "myproject"
267
+ project_dir.mkdir()
268
+
269
+ backend_home = tmp_path / "claude_home"
270
+ registry = CLIRegistry([_make_backend("claude", backend_home)])
271
+
272
+ xdg = tmp_path / "config"
273
+ xdg.mkdir()
274
+ monkeypatch.setenv("XDG_CONFIG_HOME", str(xdg))
275
+ # Deliberately no state.json written
276
+
277
+ monkeypatch.chdir(project_dir)
278
+
279
+ from agent_notes.services.installer import uninstall_all
280
+
281
+ with patch("agent_notes.services.installer.load_registry", return_value=registry), \
282
+ patch("agent_notes.services.installer._uninstall_session_hook"):
283
+ uninstall_all("local", registry=registry) # must not raise
284
+
285
+ def test_uninstall_all_local_reads_copy_mode_from_state(self, tmp_path, monkeypatch):
286
+ """When local state records mode='copy', uninstall_all resolves copy_mode correctly
287
+ without raising ValueError. The regression test is that get_scope is called with
288
+ project_path so it does not crash."""
289
+ project_dir = tmp_path / "myproject"
290
+ project_dir.mkdir()
291
+
292
+ backend_home = tmp_path / "claude_home"
293
+ registry = CLIRegistry([_make_backend("claude", backend_home)])
294
+
295
+ xdg = tmp_path / "config"
296
+ xdg.mkdir()
297
+ monkeypatch.setenv("XDG_CONFIG_HOME", str(xdg))
298
+
299
+ # Write local state with mode=copy
300
+ sf = xdg / "agent-notes" / "state.json"
301
+ scope_dict = {
302
+ "installed_at": "2025-01-01T00:00:00Z",
303
+ "updated_at": "2025-01-01T00:00:00Z",
304
+ "mode": "copy",
305
+ "clis": {"claude": {"role_models": {}, "installed": {}}},
306
+ }
307
+ data = {
308
+ "source_path": "",
309
+ "source_commit": "",
310
+ "global": None,
311
+ "local": {str(project_dir.resolve()): scope_dict},
312
+ "memory": {"backend": "local", "path": ""},
313
+ }
314
+ sf.parent.mkdir(parents=True, exist_ok=True)
315
+ sf.write_text(__import__("json").dumps(data))
316
+
317
+ monkeypatch.chdir(project_dir)
318
+
319
+ from agent_notes.services.installer import uninstall_all
320
+
321
+ # Track whether uninstall_component_for_backend is called with copy_mode=True,
322
+ # confirming the copy_mode was correctly resolved from local state.
323
+ called_with_copy_mode = []
324
+
325
+ def record_copy_mode(backend, component, scope, copy_mode=False):
326
+ called_with_copy_mode.append(copy_mode)
327
+
328
+ with patch("agent_notes.services.installer.load_registry", return_value=registry), \
329
+ patch("agent_notes.services.installer._uninstall_session_hook"), \
330
+ patch("agent_notes.services.installer.uninstall_component_for_backend", side_effect=record_copy_mode):
331
+ # Must not raise ValueError("project_path required for local scope")
332
+ uninstall_all("local", registry=registry)
333
+
334
+ assert any(called_with_copy_mode), "copy_mode should have been resolved as True from local state"
@@ -1 +0,0 @@
1
- 2.16.0
File without changes