agent-notes 2.0.4__tar.gz → 2.9.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 (235) hide show
  1. agent_notes-2.9.0/PKG-INFO +300 -0
  2. agent_notes-2.9.0/README.md +269 -0
  3. agent_notes-2.9.0/agent_notes/VERSION +1 -0
  4. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/cli.py +31 -0
  5. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/_install_helpers.py +5 -22
  6. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/build.py +5 -34
  7. agent_notes-2.9.0/agent_notes/commands/config.py +475 -0
  8. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/doctor.py +3 -4
  9. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/info.py +1 -4
  10. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/install.py +20 -1
  11. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/validate.py +4 -4
  12. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/wizard.py +6 -5
  13. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/config.py +0 -2
  14. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/analyst.md +19 -1
  15. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/api-reviewer.md +16 -2
  16. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/architect.md +19 -1
  17. agent_notes-2.9.0/agent_notes/data/agents/coder.md +50 -0
  18. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/database-specialist.md +16 -2
  19. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/debugger.md +19 -1
  20. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/devil.md +19 -1
  21. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/devops.md +24 -2
  22. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/explorer.md +19 -1
  23. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/integrations.md +24 -2
  24. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/lead.md +89 -27
  25. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/performance-profiler.md +16 -2
  26. agent_notes-2.9.0/agent_notes/data/agents/refactorer.md +70 -0
  27. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/reviewer.md +16 -2
  28. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/security-auditor.md +16 -2
  29. agent_notes-2.9.0/agent_notes/data/agents/shared/cost_reporting.md +7 -0
  30. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/system-auditor.md +16 -2
  31. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/tech-writer.md +27 -1
  32. agent_notes-2.9.0/agent_notes/data/agents/test-runner.md +58 -0
  33. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/test-writer.md +24 -2
  34. agent_notes-2.9.0/agent_notes/data/global-claude.md +380 -0
  35. agent_notes-2.9.0/agent_notes/data/plugin/claude.yaml +15 -0
  36. agent_notes-2.9.0/agent_notes/data/plugin/opencode-index.js.template +22 -0
  37. agent_notes-2.9.0/agent_notes/data/plugin/opencode.yaml +7 -0
  38. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/brainstorming/SKILL.md +1 -1
  39. agent_notes-2.9.0/agent_notes/data/skills/caveman/SKILL.md +28 -0
  40. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/code-review/SKILL.md +1 -1
  41. agent_notes-2.9.0/agent_notes/data/skills/debugging-protocol/SKILL.md +69 -0
  42. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/docker-compose/SKILL.md +1 -1
  43. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/docker-compose-advanced/SKILL.md +1 -1
  44. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/docker-dockerfile/SKILL.md +1 -1
  45. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/docker-dockerfile-languages/SKILL.md +1 -1
  46. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/git/SKILL.md +1 -1
  47. agent_notes-2.9.0/agent_notes/data/skills/grill-me/SKILL.md +29 -0
  48. agent_notes-2.9.0/agent_notes/data/skills/grill-with-docs/SKILL.md +84 -0
  49. agent_notes-2.9.0/agent_notes/data/skills/improve-codebase-architecture/SKILL.md +51 -0
  50. agent_notes-2.9.0/agent_notes/data/skills/obsidian-memory/SKILL.md +168 -0
  51. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-active-storage/SKILL.md +1 -1
  52. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-broadcasting/SKILL.md +1 -1
  53. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-concerns/SKILL.md +1 -1
  54. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-controllers/SKILL.md +1 -1
  55. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-controllers-advanced/SKILL.md +1 -1
  56. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-helpers/SKILL.md +1 -1
  57. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-initializers/SKILL.md +1 -1
  58. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-javascript/SKILL.md +1 -1
  59. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-jobs/SKILL.md +1 -1
  60. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-kamal/SKILL.md +1 -1
  61. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-lib/SKILL.md +1 -1
  62. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-mailers/SKILL.md +1 -1
  63. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-migrations/SKILL.md +1 -1
  64. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-models/SKILL.md +1 -1
  65. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-models-advanced/SKILL.md +1 -1
  66. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-routes/SKILL.md +1 -1
  67. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-style/SKILL.md +1 -1
  68. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-testing-controllers/SKILL.md +1 -1
  69. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-testing-models/SKILL.md +1 -1
  70. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-testing-system/SKILL.md +1 -1
  71. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-validations/SKILL.md +1 -1
  72. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-view-components/SKILL.md +1 -1
  73. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-view-components-advanced/SKILL.md +1 -1
  74. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-views/SKILL.md +1 -1
  75. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-views-advanced/SKILL.md +1 -1
  76. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/refactoring-protocol/SKILL.md +1 -1
  77. agent_notes-2.9.0/agent_notes/data/skills/setup-project-context/SKILL.md +67 -0
  78. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/tdd/SKILL.md +16 -1
  79. agent_notes-2.9.0/agent_notes/data/skills/zoom-out/SKILL.md +7 -0
  80. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
  81. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/frontmatter/opencode.py +19 -14
  82. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/doctor_checks.py +3 -9
  83. agent_notes-2.9.0/agent_notes/scripts/_claude_backend.py +277 -0
  84. agent_notes-2.9.0/agent_notes/scripts/_formatting.py +49 -0
  85. agent_notes-2.0.4/agent_notes/data/scripts/cost-report → agent_notes-2.9.0/agent_notes/scripts/_opencode_backend.py +22 -92
  86. agent_notes-2.9.0/agent_notes/scripts/_pricing.py +56 -0
  87. agent_notes-2.9.0/agent_notes/scripts/cost_report.py +123 -0
  88. agent_notes-2.9.0/agent_notes/services/credentials.py +133 -0
  89. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/diagnostics/__init__.py +0 -2
  90. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/diagnostics/_checks.py +1 -29
  91. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/diagnostics/_display.py +0 -23
  92. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/fs.py +14 -4
  93. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/installer.py +27 -49
  94. agent_notes-2.9.0/agent_notes/services/memory_backend.py +300 -0
  95. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/rendering.py +69 -7
  96. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/settings_writer.py +43 -15
  97. agent_notes-2.9.0/agent_notes.egg-info/PKG-INFO +300 -0
  98. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes.egg-info/SOURCES.txt +61 -7
  99. agent_notes-2.9.0/agent_notes.egg-info/requires.txt +7 -0
  100. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes.egg-info/top_level.txt +1 -3
  101. agent_notes-2.9.0/pyproject.toml +61 -0
  102. agent_notes-2.9.0/tests/conftest.py +34 -0
  103. agent_notes-2.9.0/tests/functional/commands/test_config_command.py +198 -0
  104. agent_notes-2.9.0/tests/functional/commands/test_doctor_command.py +150 -0
  105. agent_notes-2.9.0/tests/functional/commands/test_info_command.py +98 -0
  106. agent_notes-2.9.0/tests/functional/commands/test_install_command.py +155 -0
  107. agent_notes-2.9.0/tests/functional/commands/test_list_command.py +48 -0
  108. agent_notes-2.9.0/tests/functional/commands/test_regenerate_command.py +82 -0
  109. agent_notes-2.9.0/tests/functional/commands/test_uninstall_command.py +202 -0
  110. agent_notes-2.9.0/tests/functional/commands/test_update_command.py +110 -0
  111. agent_notes-2.9.0/tests/functional/commands/test_validate_command.py +85 -0
  112. agent_notes-2.9.0/tests/functional/memory/__init__.py +0 -0
  113. agent_notes-2.9.0/tests/functional/memory/test_memory_command.py +120 -0
  114. agent_notes-2.9.0/tests/functional/scripts/__init__.py +0 -0
  115. agent_notes-2.9.0/tests/functional/scripts/test_release_script.py +41 -0
  116. agent_notes-2.9.0/tests/integration/__init__.py +0 -0
  117. agent_notes-2.9.0/tests/integration/build_output/__init__.py +0 -0
  118. {agent_notes-2.0.4/tests/integration → agent_notes-2.9.0/tests/integration/build_output}/test_build_output.py +0 -23
  119. agent_notes-2.9.0/tests/integration/install/__init__.py +0 -0
  120. agent_notes-2.9.0/tests/integration/install/test_install_methods.py +72 -0
  121. agent_notes-2.9.0/tests/integration/plugin_builders/__init__.py +0 -0
  122. agent_notes-2.9.0/tests/integration/plugin_builders/test_plugin_builders.py +69 -0
  123. agent_notes-2.9.0/tests/plugins/__init__.py +0 -0
  124. agent_notes-2.9.0/tests/plugins/claude/__init__.py +0 -0
  125. {agent_notes-2.0.4/tests/plugins → agent_notes-2.9.0/tests/plugins/claude}/test_agents.py +7 -0
  126. agent_notes-2.9.0/tests/unit/__init__.py +0 -0
  127. agent_notes-2.9.0/tests/unit/commands/__init__.py +0 -0
  128. agent_notes-2.9.0/tests/unit/commands/test_cost_report_subcommand.py +65 -0
  129. agent_notes-2.9.0/tests/unit/commands/test_count_agents.py +67 -0
  130. agent_notes-2.9.0/tests/unit/commands/test_wizard_orchestrator_skip.py +86 -0
  131. agent_notes-2.9.0/tests/unit/registries/__init__.py +0 -0
  132. agent_notes-2.9.0/tests/unit/scripts/__init__.py +0 -0
  133. agent_notes-2.9.0/tests/unit/scripts/test_cost_report.py +36 -0
  134. agent_notes-2.9.0/tests/unit/scripts/test_cost_report_scoping.py +299 -0
  135. agent_notes-2.9.0/tests/unit/scripts/test_formatting_tty.py +59 -0
  136. agent_notes-2.9.0/tests/unit/scripts/test_time_aggregation.py +236 -0
  137. agent_notes-2.9.0/tests/unit/services/__init__.py +0 -0
  138. agent_notes-2.0.4/tests/functional/test_build_commands.py → agent_notes-2.9.0/tests/unit/services/test_build_functions.py +0 -41
  139. agent_notes-2.9.0/tests/unit/services/test_credentials.py +87 -0
  140. agent_notes-2.9.0/tests/unit/services/test_memory_backend.py +122 -0
  141. agent_notes-2.9.0/tests/unit/services/test_memory_backend_io.py +405 -0
  142. agent_notes-2.9.0/tests/unit/services/test_rendering_includes.py +84 -0
  143. agent_notes-2.9.0/tests/unit/services/test_settings_writer.py +166 -0
  144. agent_notes-2.0.4/PKG-INFO +0 -14
  145. agent_notes-2.0.4/README.md +0 -493
  146. agent_notes-2.0.4/agent_notes/VERSION +0 -1
  147. agent_notes-2.0.4/agent_notes/data/agents/coder.md +0 -28
  148. agent_notes-2.0.4/agent_notes/data/agents/refactorer.md +0 -48
  149. agent_notes-2.0.4/agent_notes/data/agents/test-runner.md +0 -36
  150. agent_notes-2.0.4/agent_notes/data/global-claude.md +0 -290
  151. agent_notes-2.0.4/agent_notes/data/skills/debugging-protocol/SKILL.md +0 -51
  152. agent_notes-2.0.4/agent_notes/data/templates/frontmatter/__pycache__/cursor.cpython-314.pyc +0 -0
  153. agent_notes-2.0.4/agent_notes/services/memory_backend.py +0 -155
  154. agent_notes-2.0.4/agent_notes.egg-info/PKG-INFO +0 -14
  155. agent_notes-2.0.4/agent_notes.egg-info/requires.txt +0 -4
  156. agent_notes-2.0.4/pyproject.toml +0 -38
  157. agent_notes-2.0.4/tests/conftest.py +0 -20
  158. {agent_notes-2.0.4 → agent_notes-2.9.0}/LICENSE +0 -0
  159. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/__init__.py +0 -0
  160. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/__main__.py +0 -0
  161. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/__init__.py +0 -0
  162. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/list.py +0 -0
  163. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/memory.py +0 -0
  164. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/regenerate.py +0 -0
  165. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/set_role.py +0 -0
  166. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/uninstall.py +0 -0
  167. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/update.py +0 -0
  168. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/agents.yaml +0 -0
  169. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/cli/claude.yaml +0 -0
  170. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/cli/copilot.yaml +0 -0
  171. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/cli/opencode.yaml +0 -0
  172. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/commands/brainstorm.md +0 -0
  173. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/commands/debug.md +0 -0
  174. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/commands/review.md +0 -0
  175. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/global-copilot.md +0 -0
  176. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/global-opencode.md +0 -0
  177. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/hooks/session-context.md.tpl +0 -0
  178. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-haiku-4-5.yaml +0 -0
  179. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-opus-4-1.yaml +0 -0
  180. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-opus-4-5.yaml +0 -0
  181. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-opus-4-6.yaml +0 -0
  182. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-opus-4-7.yaml +0 -0
  183. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-sonnet-4-5.yaml +0 -0
  184. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-sonnet-4-6.yaml +0 -0
  185. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-sonnet-4.yaml +0 -0
  186. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/pricing.yaml +0 -0
  187. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/roles/orchestrator.yaml +0 -0
  188. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/roles/reasoner.yaml +0 -0
  189. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/roles/scout.yaml +0 -0
  190. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/roles/worker.yaml +0 -0
  191. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/rules/code-quality.md +0 -0
  192. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/rules/safety.md +0 -0
  193. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/__init__.py +0 -0
  194. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/__pycache__/__init__.cpython-314.pyc +0 -0
  195. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/frontmatter/__init__.py +0 -0
  196. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-314.pyc +0 -0
  197. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-314.pyc +0 -0
  198. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/frontmatter/claude.py +0 -0
  199. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/__init__.py +0 -0
  200. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/agent.py +0 -0
  201. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/cli_backend.py +0 -0
  202. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/diagnostics.py +0 -0
  203. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/diff.py +0 -0
  204. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/model.py +0 -0
  205. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/role.py +0 -0
  206. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/rule.py +0 -0
  207. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/skill.py +0 -0
  208. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/state.py +0 -0
  209. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/install_state.py +0 -0
  210. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/__init__.py +0 -0
  211. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/_base.py +0 -0
  212. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/agent_registry.py +0 -0
  213. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/cli_registry.py +0 -0
  214. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/model_registry.py +0 -0
  215. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/role_registry.py +0 -0
  216. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/rule_registry.py +0 -0
  217. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/skill_registry.py +0 -0
  218. {agent_notes-2.0.4/tests/functional → agent_notes-2.9.0/agent_notes/scripts}/__init__.py +0 -0
  219. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/__init__.py +0 -0
  220. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/diagnostics/_fix.py +0 -0
  221. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/diff.py +0 -0
  222. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/install_state_builder.py +0 -0
  223. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/session_context.py +0 -0
  224. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/state_store.py +0 -0
  225. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/ui.py +0 -0
  226. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/user_config.py +0 -0
  227. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/validation.py +0 -0
  228. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/state.py +0 -0
  229. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes.egg-info/dependency_links.txt +0 -0
  230. {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes.egg-info/entry_points.txt +0 -0
  231. {agent_notes-2.0.4 → agent_notes-2.9.0}/setup.cfg +0 -0
  232. {agent_notes-2.0.4/tests/integration → agent_notes-2.9.0/tests/functional}/__init__.py +0 -0
  233. {agent_notes-2.0.4/tests/plugins → agent_notes-2.9.0/tests/functional/commands}/__init__.py +0 -0
  234. {agent_notes-2.0.4 → agent_notes-2.9.0}/tests/plugins/test_skills.py +0 -0
  235. {agent_notes-2.0.4/tests/functional → agent_notes-2.9.0/tests/unit/registries}/test_registries.py +0 -0
@@ -0,0 +1,300 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-notes
3
+ Version: 2.9.0
4
+ Summary: AI agent configuration manager for Claude Code, OpenCode, and Copilot
5
+ Author-email: Eugene Naumov <min.verkligheten@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/rubakas/agent-notes
8
+ Project-URL: Repository, https://github.com/rubakas/agent-notes
9
+ Project-URL: Issues, https://github.com/rubakas/agent-notes/issues
10
+ Project-URL: Documentation, https://github.com/rubakas/agent-notes/tree/main/docs
11
+ Keywords: claude,claude-code,opencode,ai-agent,agent,configuration,claude-cli,github-copilot
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Software Development :: Code Generators
21
+ Classifier: Topic :: Utilities
22
+ Classifier: Environment :: Console
23
+ Requires-Python: >=3.9
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: pyyaml>=6.0
27
+ Requires-Dist: tomli>=1.1.0; python_version < "3.11"
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest>=7.0; extra == "dev"
30
+ Dynamic: license-file
31
+
32
+ # agent-notes
33
+
34
+ AI agent configuration manager for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) and [OpenCode](https://github.com/opencode-ai/opencode).
35
+
36
+ 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.
37
+
38
+ ## Quick Start
39
+
40
+ ```bash
41
+ pip install agent-notes
42
+ agent-notes install # interactive wizard guides you through setup
43
+ agent-notes doctor
44
+ ```
45
+
46
+ ## What's Included
47
+
48
+ | Component | Description |
49
+ |-----------|-------------|
50
+ | **Skills** | 42 on-demand knowledge modules (Rails, Docker, Git, Kamal, Process) |
51
+ | **Agents** | 18 specialized AI subagents with hierarchical model strategy |
52
+ | **Rules** | Global instructions, code quality, and safety guardrails |
53
+ | **Config** | Global instructions for Claude Code, OpenCode, and GitHub Copilot |
54
+
55
+ ## Install Methods
56
+
57
+ There are three ways to use agent-notes. Pick the one that matches your intent.
58
+
59
+ ### 1. Python package — PyPI (recommended)
60
+
61
+ ```bash
62
+ pip install agent-notes
63
+ # or
64
+ pipx install agent-notes
65
+ agent-notes install
66
+ ```
67
+
68
+ Update anytime:
69
+
70
+ ```bash
71
+ pip install --upgrade agent-notes && agent-notes install
72
+ # or
73
+ pipx upgrade agent-notes && agent-notes install
74
+ ```
75
+
76
+ ### 2. Python package — from local build (developers)
77
+
78
+ ```bash
79
+ git clone https://github.com/rubakas/agent-notes.git
80
+ cd agent-notes
81
+ python -m build # produces dist/*.whl
82
+ pipx install dist/*.whl # or pip install --user dist/*.whl
83
+ agent-notes install
84
+ ```
85
+
86
+ Iteration loop: edit source → `python -m build` → `pipx reinstall dist/*.whl`. Not editable mode. Not `pip install -e .`.
87
+
88
+ ### 3. Plugin — limited functionality
89
+
90
+ - **Claude Code**: install via the Claude Code plugin marketplace.
91
+ - **OpenCode**: copy or symlink `.opencode-plugin/` into `~/.config/opencode/plugins/agent-notes/` and add `"plugin": ["agent-notes"]` to `opencode.json`.
92
+
93
+ 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.
94
+
95
+ ### API keys
96
+
97
+ Provider API keys live in `~/.agent-notes/credentials.toml` (mode 0600, never committed). Add or update via:
98
+
99
+ ```bash
100
+ agent-notes config providers
101
+ ```
102
+
103
+ The wizard prompts for the key with hidden input; agent-notes never logs or prints the value. To check whether a provider is configured without exposing the key:
104
+
105
+ ```bash
106
+ agent-notes config provider openrouter # prints "configured" or "no key"
107
+ ```
108
+
109
+ ## CLI Reference
110
+
111
+ ```
112
+ agent-notes <command> [options]
113
+ ```
114
+
115
+ | Command | Description |
116
+ |---------|-------------|
117
+ | `install [--local] [--copy]` | Interactive wizard or direct install |
118
+ | `uninstall [--local]` | Remove installed components |
119
+ | `update` | Pull latest, rebuild, reinstall |
120
+ | `doctor [--local] [--fix]` | Check installation health |
121
+ | `info` | Show status and component counts |
122
+ | `list [clis\|models\|roles\|agents\|skills\|rules\|all]` | List engine components or installed |
123
+ | `set role <role> <model> [--cli <cli>]` | Change model for a role (Phase 10+) |
124
+ | `regenerate [--cli <cli>]` | Rebuild files from state.json (Phase 10+) |
125
+ | `validate` | Lint source configuration files |
126
+ | `memory [list\|size\|show\|reset\|export\|import] [name]` | Manage agent memory |
127
+
128
+ ### Supported platforms
129
+
130
+ | Platform | Install target | Config format |
131
+ |----------|---------------|---------------|
132
+ | **Claude Code** | `~/.claude/` | YAML frontmatter + Markdown prompts |
133
+ | **OpenCode** | `~/.config/opencode/` | YAML frontmatter + Markdown prompts |
134
+ | **GitHub Copilot** | `~/.github/` | `copilot-instructions.md` |
135
+
136
+ ### Quick usage examples
137
+
138
+ ```bash
139
+ # Interactive install (recommended)
140
+ agent-notes install
141
+
142
+ # Direct install (scripted)
143
+ agent-notes install --local --copy
144
+
145
+ # Check health and fix issues
146
+ agent-notes doctor --fix
147
+
148
+ # Manage agent memory
149
+ agent-notes memory list
150
+ agent-notes memory add "Rails enum prefix" \
151
+ "Always use _prefix: true to avoid method name collisions" \
152
+ pattern coder
153
+ ```
154
+
155
+ ## Agent Team
156
+
157
+ Specialized subagents with hierarchical model strategy: **Opus 4.7 decides, Sonnet 4 executes, Haiku 4.5 explores.**
158
+
159
+ | Agent | Model | Role |
160
+ |-------|-------|------|
161
+ | **lead** | Opus 4.7 | Plans, delegates, reviews. Orchestrator. |
162
+ | **architect** | Opus 4.7 | System architecture, module boundaries, domain models. Read-only. |
163
+ | **debugger** | Opus 4.7 | Bug investigation: reproduces, isolates, identifies root cause. Read-only. |
164
+ | **coder** | Sonnet 4 | Implements features, fixes bugs, edits files. |
165
+ | **reviewer** | Sonnet 4 | Code quality review. Read-only. |
166
+ | **security-auditor** | Sonnet 4 | Security vulnerability analysis. Read-only. |
167
+ | **test-writer** | Sonnet 4 | Writes tests for any framework. |
168
+ | **test-runner** | Sonnet 4 | Diagnoses and fixes failing tests. |
169
+ | **system-auditor** | Sonnet 4 | Codebase health: duplication, N+1, coupling. Read-only. |
170
+ | **database-specialist** | Sonnet 4 | Schema design, indexes, query performance, migrations. Read-only. |
171
+ | **performance-profiler** | Sonnet 4 | Response times, memory, caching, bundle size. Read-only. |
172
+ | **devops** | Sonnet 4 | Docker, CI/CD, deployment configs. |
173
+ | **devil** | Sonnet 4 | Challenges plans to surface hidden risks. Read-only. |
174
+ | **integrations** | Sonnet 4 | Third-party integrations: OAuth, webhooks, payments. |
175
+ | **refactorer** | Sonnet 4 | Improves code structure without changing behavior. |
176
+ | **analyst** | Haiku 4.5 | Requirements analysis: surfaces missing or contradictory requirements. Read-only. |
177
+ | **api-reviewer** | Haiku 4.5 | API design, versioning, error handling, backward compatibility. Read-only. |
178
+ | **tech-writer** | Haiku 4.5 | Documentation: READMEs, API docs, changelogs. |
179
+ | **explorer** | Haiku 4.5 | Fast file discovery and pattern search. Read-only. |
180
+
181
+ ## Architecture
182
+
183
+ 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).
184
+
185
+ ## Improved Claude Code workflows
186
+
187
+ Four failure modes that derail AI-assisted development, and the skills that address them. Inspired by [Matt Pocock's skills repo](https://github.com/mattpocock/skills).
188
+
189
+ | Failure mode | What goes wrong | Skills that help |
190
+ |---|---|---|
191
+ | **Misalignment** | Claude starts building before the problem is resolved | `/grill-me`, `/grill-with-docs` |
192
+ | **Verbosity** | Responses are bloated; context window fills with noise | `/caveman`, `/setup-project-context` |
193
+ | **Broken code** | Claude codes without a feedback loop or evidence trail | `/tdd` (improved), `/debugging-protocol` (improved) |
194
+ | **Ball of mud** | Architecture drifts; modules grow shallow and tangled | `/improve-codebase-architecture`, `/zoom-out` |
195
+
196
+ - `/grill-me` — interview the user until the problem is fully resolved before touching code
197
+ - `/grill-with-docs` — same, but cross-references CONTEXT.md and ADRs and updates them inline
198
+ - `/caveman` — ultra-compressed reply mode (~75% token savings) for rapid iteration
199
+ - `/setup-project-context` — bootstraps a CONTEXT.md domain glossary (ubiquitous language)
200
+ - `/tdd` — RED-GREEN-REFACTOR with tracer-bullet vertical slices; horizontal-slicing anti-pattern added
201
+ - `/debugging-protocol` — Phase 1 rewritten as "build a feedback loop first" with 9 strategies
202
+ - `/improve-codebase-architecture` — deletion test to find shallow modules; surfaces deepening opportunities
203
+ - `/zoom-out` — quick orientation map of an unfamiliar code area
204
+
205
+ ## Skills
206
+
207
+ 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/`.
208
+
209
+ ### Using skills in Claude Code / OpenCode
210
+
211
+ ```
212
+ Use the rails-models skill to help with this association
213
+ Load the docker-compose skill for multi-service setup
214
+ ```
215
+
216
+ ## Agent Memory
217
+
218
+ Agents accumulate knowledge across sessions using one of three backends, chosen during `agent-notes install`.
219
+
220
+ ### Backends
221
+
222
+ | Backend | Storage | Best for |
223
+ |---------|---------|----------|
224
+ | **Local** | `~/.claude/agent-memory/<agent>/` — plain markdown per agent | Simple setup, no extra tools |
225
+ | **Obsidian** | Category vault with YAML frontmatter and `[[wikilinks]]` | Visual browsing, backlinks, Dataview queries |
226
+ | **None** | Disabled — no files written | Stateless or shared machines |
227
+
228
+ ### Obsidian setup
229
+
230
+ Run `agent-notes install` and pick Obsidian when prompted. The wizard auto-detects existing vaults under `~/Documents`, `~/Desktop`, and `~`. To initialize the vault structure:
231
+
232
+ ```bash
233
+ agent-notes memory init
234
+ ```
235
+
236
+ The installed `CLAUDE.md` already points agents to your vault. At the start of a session Claude reads `Index.md`; at the end it can save insights with `agent-notes memory add`.
237
+
238
+ ### Memory commands
239
+
240
+ ```bash
241
+ agent-notes memory init # create folder structure and Index.md
242
+ agent-notes memory list # list all notes (by category or agent)
243
+ agent-notes memory vault # show backend, path, and init status
244
+ agent-notes memory index # regenerate Index.md
245
+ agent-notes memory add <title> <body> [type] [agent] [project] # type: pattern|decision|mistake|context|session
246
+ agent-notes memory show <agent> # show one agent's notes (local backend)
247
+ agent-notes memory reset [agent] # clear memory (confirmation required)
248
+ agent-notes memory export # back up to memory-backup/
249
+ agent-notes memory import # restore from memory-backup/
250
+ agent-notes install --reconfigure # switch backends
251
+ ```
252
+
253
+ ### Note format (Obsidian backend)
254
+
255
+ Every note agent-notes writes includes YAML frontmatter for filtering and Dataview queries:
256
+
257
+ ```markdown
258
+ ---
259
+ created_at: 2026-04-28T19:30:35Z
260
+ type: pattern
261
+ agent: coder
262
+ project: rubakas
263
+ tags: [rails, models]
264
+ ---
265
+
266
+ # Rails Enum Prefix
267
+
268
+ Always use `_prefix: true` with Rails enums to avoid method name collisions.
269
+ ```
270
+
271
+ ## Development
272
+
273
+ Python 3.9+ required. Build from source and run tests:
274
+
275
+ ```bash
276
+ python -m build && pipx install dist/*.whl
277
+ python3 -m pytest tests/
278
+ ```
279
+
280
+ Run `agent-notes build` after editing `agent_notes/data/` files, and `agent-notes validate` before committing.
281
+
282
+ Tests live in `tests/functional/` (unit), `tests/integration/` (build output), and `tests/plugins/` (artifact validation).
283
+
284
+ ## Contributing
285
+
286
+ When adding new content:
287
+
288
+ 1. **Edit source files** — all changes go in `agent_notes/data/` directory
289
+ 2. **Run build** — `agent-notes build` to generate platform configs
290
+ 3. **Validate** — `agent-notes validate` before committing
291
+ 4. **Keep it generic** — remove app-specific references
292
+ 5. **Show examples** — include code samples with explanations
293
+ 6. **Stay modular** — each skill should be independently usable
294
+ 7. **Stay concise** — agent prompts under 60 lines
295
+
296
+ See [docs/](docs/) for full guidelines.
297
+
298
+ ## License
299
+
300
+ MIT
@@ -0,0 +1,269 @@
1
+ # agent-notes
2
+
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
+
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.
6
+
7
+ ## Quick Start
8
+
9
+ ```bash
10
+ pip install agent-notes
11
+ agent-notes install # interactive wizard guides you through setup
12
+ agent-notes doctor
13
+ ```
14
+
15
+ ## What's Included
16
+
17
+ | Component | Description |
18
+ |-----------|-------------|
19
+ | **Skills** | 42 on-demand knowledge modules (Rails, Docker, Git, Kamal, Process) |
20
+ | **Agents** | 18 specialized AI subagents with hierarchical model strategy |
21
+ | **Rules** | Global instructions, code quality, and safety guardrails |
22
+ | **Config** | Global instructions for Claude Code, OpenCode, and GitHub Copilot |
23
+
24
+ ## Install Methods
25
+
26
+ There are three ways to use agent-notes. Pick the one that matches your intent.
27
+
28
+ ### 1. Python package — PyPI (recommended)
29
+
30
+ ```bash
31
+ pip install agent-notes
32
+ # or
33
+ pipx install agent-notes
34
+ agent-notes install
35
+ ```
36
+
37
+ Update anytime:
38
+
39
+ ```bash
40
+ pip install --upgrade agent-notes && agent-notes install
41
+ # or
42
+ pipx upgrade agent-notes && agent-notes install
43
+ ```
44
+
45
+ ### 2. Python package — from local build (developers)
46
+
47
+ ```bash
48
+ git clone https://github.com/rubakas/agent-notes.git
49
+ cd agent-notes
50
+ python -m build # produces dist/*.whl
51
+ pipx install dist/*.whl # or pip install --user dist/*.whl
52
+ agent-notes install
53
+ ```
54
+
55
+ Iteration loop: edit source → `python -m build` → `pipx reinstall dist/*.whl`. Not editable mode. Not `pip install -e .`.
56
+
57
+ ### 3. Plugin — limited functionality
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`.
61
+
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
+
64
+ ### API keys
65
+
66
+ Provider API keys live in `~/.agent-notes/credentials.toml` (mode 0600, never committed). Add or update via:
67
+
68
+ ```bash
69
+ agent-notes config providers
70
+ ```
71
+
72
+ The wizard prompts for the key with hidden input; agent-notes never logs or prints the value. To check whether a provider is configured without exposing the key:
73
+
74
+ ```bash
75
+ agent-notes config provider openrouter # prints "configured" or "no key"
76
+ ```
77
+
78
+ ## CLI Reference
79
+
80
+ ```
81
+ agent-notes <command> [options]
82
+ ```
83
+
84
+ | Command | Description |
85
+ |---------|-------------|
86
+ | `install [--local] [--copy]` | Interactive wizard or direct install |
87
+ | `uninstall [--local]` | Remove installed components |
88
+ | `update` | Pull latest, rebuild, reinstall |
89
+ | `doctor [--local] [--fix]` | Check installation health |
90
+ | `info` | Show status and component counts |
91
+ | `list [clis\|models\|roles\|agents\|skills\|rules\|all]` | List engine components or installed |
92
+ | `set role <role> <model> [--cli <cli>]` | Change model for a role (Phase 10+) |
93
+ | `regenerate [--cli <cli>]` | Rebuild files from state.json (Phase 10+) |
94
+ | `validate` | Lint source configuration files |
95
+ | `memory [list\|size\|show\|reset\|export\|import] [name]` | Manage agent memory |
96
+
97
+ ### Supported platforms
98
+
99
+ | Platform | Install target | Config format |
100
+ |----------|---------------|---------------|
101
+ | **Claude Code** | `~/.claude/` | YAML frontmatter + Markdown prompts |
102
+ | **OpenCode** | `~/.config/opencode/` | YAML frontmatter + Markdown prompts |
103
+ | **GitHub Copilot** | `~/.github/` | `copilot-instructions.md` |
104
+
105
+ ### Quick usage examples
106
+
107
+ ```bash
108
+ # Interactive install (recommended)
109
+ agent-notes install
110
+
111
+ # Direct install (scripted)
112
+ agent-notes install --local --copy
113
+
114
+ # Check health and fix issues
115
+ agent-notes doctor --fix
116
+
117
+ # Manage agent memory
118
+ agent-notes memory list
119
+ agent-notes memory add "Rails enum prefix" \
120
+ "Always use _prefix: true to avoid method name collisions" \
121
+ pattern coder
122
+ ```
123
+
124
+ ## Agent Team
125
+
126
+ Specialized subagents with hierarchical model strategy: **Opus 4.7 decides, Sonnet 4 executes, Haiku 4.5 explores.**
127
+
128
+ | Agent | Model | Role |
129
+ |-------|-------|------|
130
+ | **lead** | Opus 4.7 | Plans, delegates, reviews. Orchestrator. |
131
+ | **architect** | Opus 4.7 | System architecture, module boundaries, domain models. Read-only. |
132
+ | **debugger** | Opus 4.7 | Bug investigation: reproduces, isolates, identifies root cause. Read-only. |
133
+ | **coder** | Sonnet 4 | Implements features, fixes bugs, edits files. |
134
+ | **reviewer** | Sonnet 4 | Code quality review. Read-only. |
135
+ | **security-auditor** | Sonnet 4 | Security vulnerability analysis. Read-only. |
136
+ | **test-writer** | Sonnet 4 | Writes tests for any framework. |
137
+ | **test-runner** | Sonnet 4 | Diagnoses and fixes failing tests. |
138
+ | **system-auditor** | Sonnet 4 | Codebase health: duplication, N+1, coupling. Read-only. |
139
+ | **database-specialist** | Sonnet 4 | Schema design, indexes, query performance, migrations. Read-only. |
140
+ | **performance-profiler** | Sonnet 4 | Response times, memory, caching, bundle size. Read-only. |
141
+ | **devops** | Sonnet 4 | Docker, CI/CD, deployment configs. |
142
+ | **devil** | Sonnet 4 | Challenges plans to surface hidden risks. Read-only. |
143
+ | **integrations** | Sonnet 4 | Third-party integrations: OAuth, webhooks, payments. |
144
+ | **refactorer** | Sonnet 4 | Improves code structure without changing behavior. |
145
+ | **analyst** | Haiku 4.5 | Requirements analysis: surfaces missing or contradictory requirements. Read-only. |
146
+ | **api-reviewer** | Haiku 4.5 | API design, versioning, error handling, backward compatibility. Read-only. |
147
+ | **tech-writer** | Haiku 4.5 | Documentation: READMEs, API docs, changelogs. |
148
+ | **explorer** | Haiku 4.5 | Fast file discovery and pattern search. Read-only. |
149
+
150
+ ## Architecture
151
+
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. 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).
153
+
154
+ ## Improved Claude Code workflows
155
+
156
+ Four failure modes that derail AI-assisted development, and the skills that address them. Inspired by [Matt Pocock's skills repo](https://github.com/mattpocock/skills).
157
+
158
+ | Failure mode | What goes wrong | Skills that help |
159
+ |---|---|---|
160
+ | **Misalignment** | Claude starts building before the problem is resolved | `/grill-me`, `/grill-with-docs` |
161
+ | **Verbosity** | Responses are bloated; context window fills with noise | `/caveman`, `/setup-project-context` |
162
+ | **Broken code** | Claude codes without a feedback loop or evidence trail | `/tdd` (improved), `/debugging-protocol` (improved) |
163
+ | **Ball of mud** | Architecture drifts; modules grow shallow and tangled | `/improve-codebase-architecture`, `/zoom-out` |
164
+
165
+ - `/grill-me` — interview the user until the problem is fully resolved before touching code
166
+ - `/grill-with-docs` — same, but cross-references CONTEXT.md and ADRs and updates them inline
167
+ - `/caveman` — ultra-compressed reply mode (~75% token savings) for rapid iteration
168
+ - `/setup-project-context` — bootstraps a CONTEXT.md domain glossary (ubiquitous language)
169
+ - `/tdd` — RED-GREEN-REFACTOR with tracer-bullet vertical slices; horizontal-slicing anti-pattern added
170
+ - `/debugging-protocol` — Phase 1 rewritten as "build a feedback loop first" with 9 strategies
171
+ - `/improve-codebase-architecture` — deletion test to find shallow modules; surfaces deepening opportunities
172
+ - `/zoom-out` — quick orientation map of an unfamiliar code area
173
+
174
+ ## Skills
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/`.
177
+
178
+ ### Using skills in Claude Code / OpenCode
179
+
180
+ ```
181
+ Use the rails-models skill to help with this association
182
+ Load the docker-compose skill for multi-service setup
183
+ ```
184
+
185
+ ## Agent Memory
186
+
187
+ Agents accumulate knowledge across sessions using one of three backends, chosen during `agent-notes install`.
188
+
189
+ ### Backends
190
+
191
+ | Backend | Storage | Best for |
192
+ |---------|---------|----------|
193
+ | **Local** | `~/.claude/agent-memory/<agent>/` — plain markdown per agent | Simple setup, no extra tools |
194
+ | **Obsidian** | Category vault with YAML frontmatter and `[[wikilinks]]` | Visual browsing, backlinks, Dataview queries |
195
+ | **None** | Disabled — no files written | Stateless or shared machines |
196
+
197
+ ### Obsidian setup
198
+
199
+ Run `agent-notes install` and pick Obsidian when prompted. The wizard auto-detects existing vaults under `~/Documents`, `~/Desktop`, and `~`. To initialize the vault structure:
200
+
201
+ ```bash
202
+ agent-notes memory init
203
+ ```
204
+
205
+ The installed `CLAUDE.md` already points agents to your vault. At the start of a session Claude reads `Index.md`; at the end it can save insights with `agent-notes memory add`.
206
+
207
+ ### Memory commands
208
+
209
+ ```bash
210
+ agent-notes memory init # create folder structure and Index.md
211
+ agent-notes memory list # list all notes (by category or agent)
212
+ agent-notes memory vault # show backend, path, and init status
213
+ agent-notes memory index # regenerate Index.md
214
+ agent-notes memory add <title> <body> [type] [agent] [project] # type: pattern|decision|mistake|context|session
215
+ agent-notes memory show <agent> # show one agent's notes (local backend)
216
+ agent-notes memory reset [agent] # clear memory (confirmation required)
217
+ agent-notes memory export # back up to memory-backup/
218
+ agent-notes memory import # restore from memory-backup/
219
+ agent-notes install --reconfigure # switch backends
220
+ ```
221
+
222
+ ### Note format (Obsidian backend)
223
+
224
+ Every note agent-notes writes includes YAML frontmatter for filtering and Dataview queries:
225
+
226
+ ```markdown
227
+ ---
228
+ created_at: 2026-04-28T19:30:35Z
229
+ type: pattern
230
+ agent: coder
231
+ project: rubakas
232
+ tags: [rails, models]
233
+ ---
234
+
235
+ # Rails Enum Prefix
236
+
237
+ Always use `_prefix: true` with Rails enums to avoid method name collisions.
238
+ ```
239
+
240
+ ## Development
241
+
242
+ Python 3.9+ required. Build from source and run tests:
243
+
244
+ ```bash
245
+ python -m build && pipx install dist/*.whl
246
+ python3 -m pytest tests/
247
+ ```
248
+
249
+ Run `agent-notes build` after editing `agent_notes/data/` files, and `agent-notes validate` before committing.
250
+
251
+ Tests live in `tests/functional/` (unit), `tests/integration/` (build output), and `tests/plugins/` (artifact validation).
252
+
253
+ ## Contributing
254
+
255
+ When adding new content:
256
+
257
+ 1. **Edit source files** — all changes go in `agent_notes/data/` directory
258
+ 2. **Run build** — `agent-notes build` to generate platform configs
259
+ 3. **Validate** — `agent-notes validate` before committing
260
+ 4. **Keep it generic** — remove app-specific references
261
+ 5. **Show examples** — include code samples with explanations
262
+ 6. **Stay modular** — each skill should be independently usable
263
+ 7. **Stay concise** — agent prompts under 60 lines
264
+
265
+ See [docs/](docs/) for full guidelines.
266
+
267
+ ## License
268
+
269
+ MIT
@@ -0,0 +1 @@
1
+ 2.9.0
@@ -286,6 +286,19 @@ def main():
286
286
  help="Memory action")
287
287
  p_memory.add_argument("name", nargs="?", help="Agent name / note title (for show/reset/add)")
288
288
  p_memory.add_argument("extra", nargs="*", help="Additional args (for add: body [type] [agent] [project])")
289
+
290
+ # cost-report
291
+ p_cost_report = subparsers.add_parser("cost-report", help="Report token usage and cost for the current AI session")
292
+ p_cost_report.add_argument("--since", help="Only include messages at or after this UTC datetime (ISO 8601)")
293
+ p_cost_report.add_argument("--session", help="Session ID to report on (Claude Code only)")
294
+
295
+ # config
296
+ p_config = subparsers.add_parser("config", help="Reconfigure role/agent/model/memory/skill assignments after install")
297
+ p_config.add_argument("action", nargs="?", default="wizard",
298
+ choices=["wizard", "show", "role-model", "role-agent"],
299
+ help="Config action (default: wizard)")
300
+ p_config.add_argument("extra", nargs="*", help="Additional positional args (role, model, agent)")
301
+ p_config.add_argument("--cli", help="Target CLI (claude / opencode / both)")
289
302
 
290
303
  args = parser.parse_args()
291
304
 
@@ -343,6 +356,24 @@ def main():
343
356
  elif args.command == "memory":
344
357
  from .commands.memory import memory
345
358
  memory(args.action, args.name, getattr(args, "extra", None))
359
+ elif args.command == "config":
360
+ from .commands.config import config
361
+ config(action=args.action, args=getattr(args, "extra", None) or [], cli_filter=args.cli)
362
+ elif args.command == "cost-report":
363
+ # Rebuild sys.argv slice so cost_report.main() can parse it normally
364
+ argv = []
365
+ if args.since:
366
+ argv += ["--since", args.since]
367
+ if args.session:
368
+ argv += ["--session", args.session]
369
+ import sys
370
+ old_argv = sys.argv
371
+ sys.argv = ["agent-notes cost-report"] + argv
372
+ try:
373
+ from .scripts.cost_report import main as _cost_report_main
374
+ sys.exit(_cost_report_main())
375
+ finally:
376
+ sys.argv = old_argv
346
377
 
347
378
  if __name__ == "__main__":
348
379
  main()
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
  from typing import List
6
6
 
7
7
  from ..config import (
8
- ROOT, DIST_CLAUDE_DIR, DIST_OPENCODE_DIR, DIST_GITHUB_DIR, DIST_RULES_DIR, DIST_SKILLS_DIR, DIST_SCRIPTS_DIR,
8
+ ROOT, DIST_CLAUDE_DIR, DIST_OPENCODE_DIR, DIST_GITHUB_DIR, DIST_RULES_DIR, DIST_SKILLS_DIR,
9
9
  CLAUDE_HOME, OPENCODE_HOME, GITHUB_HOME, AGENTS_HOME, BIN_HOME,
10
10
  linked, removed, skipped, info, get_version, Color, PKG_DIR
11
11
  )
@@ -17,11 +17,6 @@ from ..services.fs import (
17
17
  )
18
18
 
19
19
 
20
- def install_scripts_global() -> None:
21
- """Install scripts to ~/.local/bin/."""
22
- from ..services.installer import install_scripts_global as _service_impl
23
- _service_impl()
24
-
25
20
 
26
21
  def _install_skills_to(targets: List[Path], dist_skills_dir: Path, copy_mode: bool) -> None:
27
22
  """Install skills from dist_skills_dir to each directory in targets."""
@@ -108,11 +103,6 @@ def install_rules_local(copy_mode: bool = False) -> None:
108
103
  place_dir_contents(DIST_RULES_DIR, Path(".claude/rules"), "*.md", copy_mode)
109
104
 
110
105
 
111
- def uninstall_scripts_global() -> None:
112
- """Uninstall scripts from ~/.local/bin/."""
113
- from ..services.installer import uninstall_scripts_global as _service_impl
114
- _service_impl()
115
-
116
106
 
117
107
  def _uninstall_skills_from(targets: List[Path]) -> None:
118
108
  """Remove skills from each directory in targets."""
@@ -183,10 +173,6 @@ def uninstall_rules_local() -> None:
183
173
  )
184
174
 
185
175
 
186
- def count_scripts() -> int:
187
- """Count script files."""
188
- return len([f for f in DIST_SCRIPTS_DIR.iterdir() if f.is_file()]) if DIST_SCRIPTS_DIR.exists() else 0
189
-
190
176
 
191
177
  def count_skills() -> int:
192
178
  """Count skill directories."""
@@ -196,16 +182,13 @@ def count_skills() -> int:
196
182
 
197
183
 
198
184
  def count_agents(backend) -> int:
199
- """Count agent *.md files in backend's dist directory. Returns 0 if backend
185
+ """Count agents for backend from the canonical YAML source. Returns 0 if backend
200
186
  doesn't support agents."""
201
- from ..services import installer
202
- from ..domain.cli_backend import CLIBackend
203
187
  if not backend.supports("agents"):
204
188
  return 0
205
- src = installer.dist_source_for(backend, "agents")
206
- if src is None or not src.exists():
207
- return 0
208
- return len(list(src.glob("*.md")))
189
+ from ..registries.agent_registry import load_agent_registry
190
+ registry = load_agent_registry()
191
+ return sum(1 for a in registry.all() if not a.excluded_from(backend.name))
209
192
 
210
193
 
211
194
  def count_global() -> int: