agent-notes 2.17.0__tar.gz → 2.19.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 (246) hide show
  1. {agent_notes-2.17.0 → agent_notes-2.19.0}/PKG-INFO +56 -31
  2. {agent_notes-2.17.0 → agent_notes-2.19.0}/README.md +55 -30
  3. agent_notes-2.19.0/agent_notes/VERSION +1 -0
  4. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/memory.py +63 -1
  5. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/agents.yaml +1 -1
  6. agent_notes-2.19.0/agent_notes/data/agents/lead.md +47 -0
  7. agent_notes-2.19.0/agent_notes/data/agents/shared/execution.md +89 -0
  8. agent_notes-2.19.0/agent_notes/data/agents/shared/guardrails.md +28 -0
  9. agent_notes-2.19.0/agent_notes/data/agents/shared/hard_limits.md +20 -0
  10. agent_notes-2.19.0/agent_notes/data/agents/shared/phase0.md +20 -0
  11. agent_notes-2.19.0/agent_notes/data/agents/shared/pipelines.md +16 -0
  12. agent_notes-2.19.0/agent_notes/data/agents/shared/review.md +34 -0
  13. agent_notes-2.19.0/agent_notes/data/agents/shared/verification.md +51 -0
  14. agent_notes-2.19.0/agent_notes/data/global-claude.md +84 -0
  15. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/obsidian-memory/SKILL.md +15 -0
  16. agent_notes-2.19.0/agent_notes/data/skills/rails/SKILL.md +43 -0
  17. agent_notes-2.19.0/agent_notes/data/skills/rails/controllers.md +770 -0
  18. agent_notes-2.17.0/agent_notes/data/skills/rails-javascript/SKILL.md → agent_notes-2.19.0/agent_notes/data/skills/rails/frontend.md +429 -254
  19. agent_notes-2.19.0/agent_notes/data/skills/rails/infra.md +1121 -0
  20. agent_notes-2.19.0/agent_notes/data/skills/rails/models.md +1105 -0
  21. agent_notes-2.19.0/agent_notes/data/skills/rails/testing.md +566 -0
  22. agent_notes-2.19.0/agent_notes/data/skills/rails/views.md +620 -0
  23. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/scripts/_pricing.py +2 -0
  24. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/diagnostics/_display.py +2 -2
  25. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/memory_backend.py +0 -15
  26. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/rendering.py +7 -0
  27. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/wiki_backend.py +0 -1
  28. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes.egg-info/PKG-INFO +56 -31
  29. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes.egg-info/SOURCES.txt +13 -25
  30. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/build_output/test_build_output.py +1 -1
  31. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/registries/test_registries.py +1 -1
  32. agent_notes-2.17.0/agent_notes/VERSION +0 -1
  33. agent_notes-2.17.0/agent_notes/data/agents/lead.md +0 -262
  34. agent_notes-2.17.0/agent_notes/data/agents/shared/phase0.md +0 -20
  35. agent_notes-2.17.0/agent_notes/data/global-claude.md +0 -364
  36. agent_notes-2.17.0/agent_notes/data/skills/rails-active-storage/SKILL.md +0 -321
  37. agent_notes-2.17.0/agent_notes/data/skills/rails-broadcasting/SKILL.md +0 -374
  38. agent_notes-2.17.0/agent_notes/data/skills/rails-concerns/SKILL.md +0 -806
  39. agent_notes-2.17.0/agent_notes/data/skills/rails-controllers/SKILL.md +0 -510
  40. agent_notes-2.17.0/agent_notes/data/skills/rails-controllers-advanced/SKILL.md +0 -441
  41. agent_notes-2.17.0/agent_notes/data/skills/rails-helpers/SKILL.md +0 -677
  42. agent_notes-2.17.0/agent_notes/data/skills/rails-initializers/SKILL.md +0 -79
  43. agent_notes-2.17.0/agent_notes/data/skills/rails-jobs/SKILL.md +0 -700
  44. agent_notes-2.17.0/agent_notes/data/skills/rails-kamal/SKILL.md +0 -483
  45. agent_notes-2.17.0/agent_notes/data/skills/rails-lib/SKILL.md +0 -101
  46. agent_notes-2.17.0/agent_notes/data/skills/rails-mailers/SKILL.md +0 -321
  47. agent_notes-2.17.0/agent_notes/data/skills/rails-migrations/SKILL.md +0 -268
  48. agent_notes-2.17.0/agent_notes/data/skills/rails-models/SKILL.md +0 -459
  49. agent_notes-2.17.0/agent_notes/data/skills/rails-models-advanced/SKILL.md +0 -398
  50. agent_notes-2.17.0/agent_notes/data/skills/rails-routes/SKILL.md +0 -804
  51. agent_notes-2.17.0/agent_notes/data/skills/rails-style/SKILL.md +0 -538
  52. agent_notes-2.17.0/agent_notes/data/skills/rails-testing-controllers/SKILL.md +0 -343
  53. agent_notes-2.17.0/agent_notes/data/skills/rails-testing-models/SKILL.md +0 -296
  54. agent_notes-2.17.0/agent_notes/data/skills/rails-testing-system/SKILL.md +0 -375
  55. agent_notes-2.17.0/agent_notes/data/skills/rails-validations/SKILL.md +0 -108
  56. agent_notes-2.17.0/agent_notes/data/skills/rails-view-components/SKILL.md +0 -511
  57. agent_notes-2.17.0/agent_notes/data/skills/rails-view-components-advanced/SKILL.md +0 -376
  58. agent_notes-2.17.0/agent_notes/data/skills/rails-views/SKILL.md +0 -413
  59. agent_notes-2.17.0/agent_notes/data/skills/rails-views-advanced/SKILL.md +0 -450
  60. {agent_notes-2.17.0 → agent_notes-2.19.0}/LICENSE +0 -0
  61. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/__init__.py +0 -0
  62. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/__main__.py +0 -0
  63. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/cli.py +0 -0
  64. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/__init__.py +0 -0
  65. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/_install_helpers.py +0 -0
  66. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/build.py +0 -0
  67. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/config.py +0 -0
  68. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/doctor.py +0 -0
  69. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/info.py +0 -0
  70. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/install.py +0 -0
  71. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/list.py +0 -0
  72. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/regenerate.py +0 -0
  73. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/set_role.py +0 -0
  74. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/uninstall.py +0 -0
  75. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/validate.py +0 -0
  76. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/wizard.py +0 -0
  77. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/config.py +0 -0
  78. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/analyst.md +0 -0
  79. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/api-reviewer.md +0 -0
  80. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/architect.md +0 -0
  81. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/coder.md +0 -0
  82. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/database-specialist.md +0 -0
  83. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/debugger.md +0 -0
  84. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/devil.md +0 -0
  85. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/devops.md +0 -0
  86. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/explorer.md +0 -0
  87. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/integrations.md +0 -0
  88. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/performance-profiler.md +0 -0
  89. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/refactorer.md +0 -0
  90. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/reviewer.md +0 -0
  91. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/security-auditor.md +0 -0
  92. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/shared/cost_reporting.md +0 -0
  93. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/system-auditor.md +0 -0
  94. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/tech-writer.md +0 -0
  95. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/test-runner.md +0 -0
  96. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/test-writer.md +0 -0
  97. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/cli/claude.yaml +0 -0
  98. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/cli/copilot.yaml +0 -0
  99. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/cli/opencode.yaml +0 -0
  100. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/commands/brainstorm.md +0 -0
  101. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/commands/debug.md +0 -0
  102. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/commands/review.md +0 -0
  103. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/global-copilot.md +0 -0
  104. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/global-opencode.md +0 -0
  105. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/hooks/session-context.md.tpl +0 -0
  106. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-haiku-4-5.yaml +0 -0
  107. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-opus-4-1.yaml +0 -0
  108. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-opus-4-5.yaml +0 -0
  109. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-opus-4-6.yaml +0 -0
  110. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-opus-4-7.yaml +0 -0
  111. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-sonnet-4-5.yaml +0 -0
  112. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-sonnet-4-6.yaml +0 -0
  113. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-sonnet-4.yaml +0 -0
  114. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/plugin/claude.yaml +0 -0
  115. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/plugin/opencode-index.js.template +0 -0
  116. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/plugin/opencode.yaml +0 -0
  117. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/pricing.yaml +0 -0
  118. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/roles/orchestrator.yaml +0 -0
  119. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/roles/reasoner.yaml +0 -0
  120. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/roles/scout.yaml +0 -0
  121. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/roles/worker.yaml +0 -0
  122. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/rules/code-quality.md +0 -0
  123. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/rules/safety.md +0 -0
  124. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/brainstorming/SKILL.md +0 -0
  125. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/caveman/SKILL.md +0 -0
  126. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/code-review/SKILL.md +0 -0
  127. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/debugging-protocol/SKILL.md +0 -0
  128. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/docker-compose/SKILL.md +0 -0
  129. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/docker-compose-advanced/SKILL.md +0 -0
  130. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/docker-dockerfile/SKILL.md +0 -0
  131. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/docker-dockerfile-languages/SKILL.md +0 -0
  132. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/git/SKILL.md +0 -0
  133. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/grill-me/SKILL.md +0 -0
  134. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/grill-with-docs/SKILL.md +0 -0
  135. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/improve-codebase-architecture/SKILL.md +0 -0
  136. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/refactoring-protocol/SKILL.md +0 -0
  137. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/setup-project-context/SKILL.md +0 -0
  138. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/tdd/SKILL.md +0 -0
  139. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/zoom-out/SKILL.md +0 -0
  140. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/__init__.py +0 -0
  141. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/__pycache__/__init__.cpython-314.pyc +0 -0
  142. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/frontmatter/__init__.py +0 -0
  143. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-314.pyc +0 -0
  144. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-314.pyc +0 -0
  145. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
  146. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/frontmatter/claude.py +0 -0
  147. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/frontmatter/opencode.py +0 -0
  148. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/doctor_checks.py +0 -0
  149. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/__init__.py +0 -0
  150. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/agent.py +0 -0
  151. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/cli_backend.py +0 -0
  152. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/diagnostics.py +0 -0
  153. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/diff.py +0 -0
  154. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/model.py +0 -0
  155. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/role.py +0 -0
  156. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/rule.py +0 -0
  157. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/skill.py +0 -0
  158. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/state.py +0 -0
  159. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/install_state.py +0 -0
  160. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/__init__.py +0 -0
  161. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/_base.py +0 -0
  162. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/agent_registry.py +0 -0
  163. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/cli_registry.py +0 -0
  164. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/model_registry.py +0 -0
  165. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/role_registry.py +0 -0
  166. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/rule_registry.py +0 -0
  167. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/skill_registry.py +0 -0
  168. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/scripts/__init__.py +0 -0
  169. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/scripts/_claude_backend.py +0 -0
  170. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/scripts/_formatting.py +0 -0
  171. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/scripts/_opencode_backend.py +0 -0
  172. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/scripts/cost_report.py +0 -0
  173. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/__init__.py +0 -0
  174. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/counts.py +0 -0
  175. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/credentials.py +0 -0
  176. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/diagnostics/__init__.py +0 -0
  177. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/diagnostics/_checks.py +0 -0
  178. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/diagnostics/_fix.py +0 -0
  179. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/diff.py +0 -0
  180. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/fs.py +0 -0
  181. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/install_state_builder.py +0 -0
  182. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/installer.py +0 -0
  183. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/session_context.py +0 -0
  184. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/settings_writer.py +0 -0
  185. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/state_store.py +0 -0
  186. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/ui.py +0 -0
  187. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/user_config.py +0 -0
  188. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/validation.py +0 -0
  189. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/state.py +0 -0
  190. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes.egg-info/dependency_links.txt +0 -0
  191. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes.egg-info/entry_points.txt +0 -0
  192. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes.egg-info/requires.txt +0 -0
  193. {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes.egg-info/top_level.txt +0 -0
  194. {agent_notes-2.17.0 → agent_notes-2.19.0}/pyproject.toml +0 -0
  195. {agent_notes-2.17.0 → agent_notes-2.19.0}/setup.cfg +0 -0
  196. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/conftest.py +0 -0
  197. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/__init__.py +0 -0
  198. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/__init__.py +0 -0
  199. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_config_command.py +0 -0
  200. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_doctor_command.py +0 -0
  201. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_info_command.py +0 -0
  202. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_install_command.py +0 -0
  203. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_list_command.py +0 -0
  204. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_regenerate_command.py +0 -0
  205. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_uninstall_command.py +0 -0
  206. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_validate_command.py +0 -0
  207. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/memory/__init__.py +0 -0
  208. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/memory/test_memory_command.py +0 -0
  209. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/scripts/__init__.py +0 -0
  210. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/scripts/test_release_script.py +0 -0
  211. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/__init__.py +0 -0
  212. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/build_output/__init__.py +0 -0
  213. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/install/__init__.py +0 -0
  214. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/install/test_install_methods.py +0 -0
  215. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/plugin_builders/__init__.py +0 -0
  216. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/plugin_builders/test_plugin_builders.py +0 -0
  217. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/plugins/__init__.py +0 -0
  218. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/plugins/claude/__init__.py +0 -0
  219. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/plugins/claude/test_agents.py +0 -0
  220. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/plugins/test_skills.py +0 -0
  221. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/__init__.py +0 -0
  222. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/commands/__init__.py +0 -0
  223. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/commands/test_cost_report_subcommand.py +0 -0
  224. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/commands/test_count_agents.py +0 -0
  225. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/commands/test_memory_migrate.py +0 -0
  226. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/commands/test_wizard_orchestrator_skip.py +0 -0
  227. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/commands/test_wizard_preflight.py +0 -0
  228. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/registries/__init__.py +0 -0
  229. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/scripts/__init__.py +0 -0
  230. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/scripts/test_cost_report.py +0 -0
  231. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/scripts/test_cost_report_scoping.py +0 -0
  232. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/scripts/test_formatting_tty.py +0 -0
  233. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/scripts/test_time_aggregation.py +0 -0
  234. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/__init__.py +0 -0
  235. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_build_functions.py +0 -0
  236. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_credentials.py +0 -0
  237. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_fs.py +0 -0
  238. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_installer_plan.py +0 -0
  239. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_memory_backend.py +0 -0
  240. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_memory_backend_io.py +0 -0
  241. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_rendering_includes.py +0 -0
  242. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_session_context.py +0 -0
  243. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_settings_writer.py +0 -0
  244. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_wiki_backend.py +0 -0
  245. {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/test_import_health.py +0 -0
  246. {agent_notes-2.17.0 → agent_notes-2.19.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.17.0
3
+ Version: 2.19.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 4.6 plans and reasons, Sonnet 4.6 executes, and Haiku 4.5 explores.
35
+ Configures a Lead agent (Opus) that orchestrates a team of 19 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
 
@@ -46,8 +46,8 @@ agent-notes doctor
46
46
 
47
47
  | Component | Description |
48
48
  |-----------|-------------|
49
- | **Skills** | 42 on-demand knowledge modules (Rails, Docker, Git, Kamal, Process) |
50
- | **Agents** | 18 specialized AI subagents with hierarchical model strategy |
49
+ | **Skills** | 42+ on-demand knowledge modules (Rails, Docker, Git, Kamal, Process) |
50
+ | **Agents** | 19 specialized AI subagents with hierarchical model strategy |
51
51
  | **Rules** | Global instructions, code quality, and safety guardrails |
52
52
  | **Config** | Global instructions for Claude Code, OpenCode, and GitHub Copilot |
53
53
 
@@ -153,29 +153,31 @@ agent-notes memory add "Rails enum prefix" \
153
153
 
154
154
  ## Agent Team
155
155
 
156
- Specialized subagents with hierarchical model strategy: **Opus 4.6 decides, Sonnet 4.6 executes, Haiku 4.5 explores.**
157
-
158
- | Agent | Model | Role |
159
- |-------|-------|------|
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. |
175
- | **analyst** | Haiku 4.5 | Requirements analysis: surfaces missing or contradictory requirements. Read-only. |
176
- | **api-reviewer** | Haiku 4.5 | API design, versioning, error handling, backward compatibility. Read-only. |
177
- | **tech-writer** | Haiku 4.5 | Documentation: READMEs, API docs, changelogs. |
178
- | **explorer** | Haiku 4.5 | Fast file discovery and pattern search. Read-only. |
156
+ Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonnet 4.6 executes, Haiku 4.5 scouts.**
157
+
158
+ | Agent | Role | Model Tier | Purpose |
159
+ |---|---|---|---|
160
+ | lead | orchestrator | opus | Plans, coordinates, verifies the team lead |
161
+ | architect | reasoner | opus | System design, module boundaries, refactor planning |
162
+ | debugger | reasoner | opus | Complex bug investigation, root-cause analysis |
163
+ | coder | worker | sonnet | Implementation, file edits, bug fixes |
164
+ | reviewer | worker | sonnet | Code quality, readability, correctness |
165
+ | security-auditor | worker | sonnet | Auth, injection, XSS, secrets exposure |
166
+ | test-writer | worker | sonnet | Creates tests for any framework |
167
+ | test-runner | worker | sonnet | Diagnoses and fixes failing tests |
168
+ | system-auditor | worker | sonnet | Duplication, dead code, coupling, complexity |
169
+ | database-specialist | worker | sonnet | Schema design, indexes, query performance |
170
+ | performance-profiler | worker | sonnet | Response times, memory, bundle size |
171
+ | api-reviewer | worker | sonnet | REST conventions, versioning, backward compatibility |
172
+ | devops | worker | sonnet | Docker, CI/CD, deployment, infrastructure |
173
+ | devil | worker | sonnet | Devil's advocate challenges plans and assumptions |
174
+ | integrations | worker | sonnet | OAuth, webhooks, API clients, SSO |
175
+ | refactorer | worker | sonnet | Extracts methods, reduces duplication, improves naming |
176
+ | explorer | scout | haiku | Fast file discovery, pattern search |
177
+ | analyst | scout | haiku | Requirements translation, acceptance criteria |
178
+ | tech-writer | scout | haiku | READMEs, API docs, changelogs |
179
+
180
+ **4 roles, 19 agents, 3 model tiers.** The tiered model strategy optimizes cost: Opus reasons ($15/1M tokens), Sonnet executes ($3/1M), Haiku scouts ($0.80/1M).
179
181
 
180
182
  ## Architecture
181
183
 
@@ -183,7 +185,7 @@ agent-notes is a 4-layer engine (domain / registries / services / commands). All
183
185
 
184
186
  ## Improved Claude Code workflows
185
187
 
186
- 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
+ Four failure modes that derail AI-assisted development, and the skills that address them.
187
189
 
188
190
  | Failure mode | What goes wrong | Skills that help |
189
191
  |---|---|---|
@@ -203,7 +205,7 @@ Four failure modes that derail AI-assisted development, and the skills that addr
203
205
 
204
206
  ## Skills
205
207
 
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/`.
208
+ 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/`.
207
209
 
208
210
  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
211
 
@@ -216,7 +218,7 @@ Load the docker-compose skill for multi-service setup
216
218
 
217
219
  ## Agent Memory
218
220
 
219
- Agents accumulate knowledge across sessions using one of three backends, chosen during `agent-notes install`.
221
+ Agents accumulate knowledge across sessions using one of four backends, chosen during `agent-notes install`.
220
222
 
221
223
  ### Backends
222
224
 
@@ -224,9 +226,27 @@ Agents accumulate knowledge across sessions using one of three backends, chosen
224
226
  |---------|---------|----------|
225
227
  | **Local** | `~/.claude/agent-memory/<agent>/` — plain markdown per agent | Simple setup, no extra tools |
226
228
  | **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 |
229
+ | **Wiki** | Structured wiki with page types and versioning | Team knowledge bases, compounding knowledge |
228
230
  | **None** | Disabled — no files written | Stateless or shared machines |
229
231
 
232
+ ### Session tracking by backend
233
+
234
+ | Feature | Local | Obsidian | Wiki |
235
+ |---|---|---|---|
236
+ | Storage location | `~/.claude/agent-memory/<agent>/` | Obsidian vault with categories | Structured wiki with page types |
237
+ | Note types | Flat markdown per agent | `pattern`, `decision`, `mistake`, `context`, `session` | `source`, `concept`, `entity`, `synthesis`, `session` |
238
+ | Session tracking | None | Auto-created session notes with `## Linked notes` | Session pages in `wiki/sessions/` |
239
+ | Cross-referencing | None | `[[wikilinks]]` auto-appended to session notes | Markdown links maintained by LLM |
240
+ | Key operations | read/write | add, list, show, reset, export, import | ingest, query, lint + add, list, show |
241
+ | Best for | Simple setup, no extra tools | Visual browsing, backlinks, Dataview queries | Team knowledge bases, compounding knowledge |
242
+
243
+ **Obsidian backend** — Uses category directories (`Patterns/`, `Decisions/`, `Mistakes/`, `Context/`, `Sessions/`). When you write a non-session note during an active session, the CLI auto-links it to the session note via `[[wikilinks]]`. Plans are mirrored as Decision notes.
244
+
245
+ **Wiki backend** — Implements Karpathy's LLM Wiki pattern (v1). Structure: `raw/` for immutable source material, `wiki/` for LLM-maintained pages organized into `sources/`, `concepts/`, `entities/`, `synthesis/`, `sessions/`. Three key operations:
246
+ - **ingest** — Process source material, extract key info, update entity/concept pages, append to log
247
+ - **query** — Search wiki pages, synthesize answers with citations, optionally file answers back as new pages
248
+ - **lint** — Health-check for contradictions, stale claims, orphan pages, missing cross-references
249
+
230
250
  ### Obsidian setup
231
251
 
232
252
  Run `agent-notes install` and pick Obsidian when prompted. The wizard auto-detects existing vaults under `~/Documents`, `~/Desktop`, and `~`. To initialize the vault structure:
@@ -270,6 +290,11 @@ tags: [rails, models]
270
290
  Always use `_prefix: true` with Rails enums to avoid method name collisions.
271
291
  ```
272
292
 
293
+ ## Inspired by
294
+
295
+ - [Andrej Karpathy's LLM Wiki](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) — The wiki memory backend implements his compile-once, query-forever knowledge pattern with structured page types and three core operations (ingest, query, lint)
296
+ - [Matt Pocock's skills repo](https://github.com/mattpocock/skills) — Skill format (SKILL.md per directory), failure-mode table (misalignment, verbosity, broken code, architectural degradation), and several core skills (tdd, grill-me, grill-with-docs, improve-codebase-architecture, zoom-out, caveman)
297
+
273
298
  ## Development
274
299
 
275
300
  Python 3.10+ required. Build from source and run tests:
@@ -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 4.6 plans and reasons, Sonnet 4.6 executes, and Haiku 4.5 explores.
5
+ Configures a Lead agent (Opus) that orchestrates a team of 19 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
 
@@ -16,8 +16,8 @@ agent-notes doctor
16
16
 
17
17
  | Component | Description |
18
18
  |-----------|-------------|
19
- | **Skills** | 42 on-demand knowledge modules (Rails, Docker, Git, Kamal, Process) |
20
- | **Agents** | 18 specialized AI subagents with hierarchical model strategy |
19
+ | **Skills** | 42+ on-demand knowledge modules (Rails, Docker, Git, Kamal, Process) |
20
+ | **Agents** | 19 specialized AI subagents with hierarchical model strategy |
21
21
  | **Rules** | Global instructions, code quality, and safety guardrails |
22
22
  | **Config** | Global instructions for Claude Code, OpenCode, and GitHub Copilot |
23
23
 
@@ -123,29 +123,31 @@ agent-notes memory add "Rails enum prefix" \
123
123
 
124
124
  ## Agent Team
125
125
 
126
- Specialized subagents with hierarchical model strategy: **Opus 4.6 decides, Sonnet 4.6 executes, Haiku 4.5 explores.**
127
-
128
- | Agent | Model | Role |
129
- |-------|-------|------|
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. |
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. |
126
+ Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonnet 4.6 executes, Haiku 4.5 scouts.**
127
+
128
+ | Agent | Role | Model Tier | Purpose |
129
+ |---|---|---|---|
130
+ | lead | orchestrator | opus | Plans, coordinates, verifies the team lead |
131
+ | architect | reasoner | opus | System design, module boundaries, refactor planning |
132
+ | debugger | reasoner | opus | Complex bug investigation, root-cause analysis |
133
+ | coder | worker | sonnet | Implementation, file edits, bug fixes |
134
+ | reviewer | worker | sonnet | Code quality, readability, correctness |
135
+ | security-auditor | worker | sonnet | Auth, injection, XSS, secrets exposure |
136
+ | test-writer | worker | sonnet | Creates tests for any framework |
137
+ | test-runner | worker | sonnet | Diagnoses and fixes failing tests |
138
+ | system-auditor | worker | sonnet | Duplication, dead code, coupling, complexity |
139
+ | database-specialist | worker | sonnet | Schema design, indexes, query performance |
140
+ | performance-profiler | worker | sonnet | Response times, memory, bundle size |
141
+ | api-reviewer | worker | sonnet | REST conventions, versioning, backward compatibility |
142
+ | devops | worker | sonnet | Docker, CI/CD, deployment, infrastructure |
143
+ | devil | worker | sonnet | Devil's advocate challenges plans and assumptions |
144
+ | integrations | worker | sonnet | OAuth, webhooks, API clients, SSO |
145
+ | refactorer | worker | sonnet | Extracts methods, reduces duplication, improves naming |
146
+ | explorer | scout | haiku | Fast file discovery, pattern search |
147
+ | analyst | scout | haiku | Requirements translation, acceptance criteria |
148
+ | tech-writer | scout | haiku | READMEs, API docs, changelogs |
149
+
150
+ **4 roles, 19 agents, 3 model tiers.** The tiered model strategy optimizes cost: Opus reasons ($15/1M tokens), Sonnet executes ($3/1M), Haiku scouts ($0.80/1M).
149
151
 
150
152
  ## Architecture
151
153
 
@@ -153,7 +155,7 @@ agent-notes is a 4-layer engine (domain / registries / services / commands). All
153
155
 
154
156
  ## Improved Claude Code workflows
155
157
 
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).
158
+ Four failure modes that derail AI-assisted development, and the skills that address them.
157
159
 
158
160
  | Failure mode | What goes wrong | Skills that help |
159
161
  |---|---|---|
@@ -173,7 +175,7 @@ Four failure modes that derail AI-assisted development, and the skills that addr
173
175
 
174
176
  ## Skills
175
177
 
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/`.
178
+ 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
179
 
178
180
  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
181
 
@@ -186,7 +188,7 @@ Load the docker-compose skill for multi-service setup
186
188
 
187
189
  ## Agent Memory
188
190
 
189
- Agents accumulate knowledge across sessions using one of three backends, chosen during `agent-notes install`.
191
+ Agents accumulate knowledge across sessions using one of four backends, chosen during `agent-notes install`.
190
192
 
191
193
  ### Backends
192
194
 
@@ -194,9 +196,27 @@ Agents accumulate knowledge across sessions using one of three backends, chosen
194
196
  |---------|---------|----------|
195
197
  | **Local** | `~/.claude/agent-memory/<agent>/` — plain markdown per agent | Simple setup, no extra tools |
196
198
  | **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 |
199
+ | **Wiki** | Structured wiki with page types and versioning | Team knowledge bases, compounding knowledge |
198
200
  | **None** | Disabled — no files written | Stateless or shared machines |
199
201
 
202
+ ### Session tracking by backend
203
+
204
+ | Feature | Local | Obsidian | Wiki |
205
+ |---|---|---|---|
206
+ | Storage location | `~/.claude/agent-memory/<agent>/` | Obsidian vault with categories | Structured wiki with page types |
207
+ | Note types | Flat markdown per agent | `pattern`, `decision`, `mistake`, `context`, `session` | `source`, `concept`, `entity`, `synthesis`, `session` |
208
+ | Session tracking | None | Auto-created session notes with `## Linked notes` | Session pages in `wiki/sessions/` |
209
+ | Cross-referencing | None | `[[wikilinks]]` auto-appended to session notes | Markdown links maintained by LLM |
210
+ | Key operations | read/write | add, list, show, reset, export, import | ingest, query, lint + add, list, show |
211
+ | Best for | Simple setup, no extra tools | Visual browsing, backlinks, Dataview queries | Team knowledge bases, compounding knowledge |
212
+
213
+ **Obsidian backend** — Uses category directories (`Patterns/`, `Decisions/`, `Mistakes/`, `Context/`, `Sessions/`). When you write a non-session note during an active session, the CLI auto-links it to the session note via `[[wikilinks]]`. Plans are mirrored as Decision notes.
214
+
215
+ **Wiki backend** — Implements Karpathy's LLM Wiki pattern (v1). Structure: `raw/` for immutable source material, `wiki/` for LLM-maintained pages organized into `sources/`, `concepts/`, `entities/`, `synthesis/`, `sessions/`. Three key operations:
216
+ - **ingest** — Process source material, extract key info, update entity/concept pages, append to log
217
+ - **query** — Search wiki pages, synthesize answers with citations, optionally file answers back as new pages
218
+ - **lint** — Health-check for contradictions, stale claims, orphan pages, missing cross-references
219
+
200
220
  ### Obsidian setup
201
221
 
202
222
  Run `agent-notes install` and pick Obsidian when prompted. The wizard auto-detects existing vaults under `~/Documents`, `~/Desktop`, and `~`. To initialize the vault structure:
@@ -240,6 +260,11 @@ tags: [rails, models]
240
260
  Always use `_prefix: true` with Rails enums to avoid method name collisions.
241
261
  ```
242
262
 
263
+ ## Inspired by
264
+
265
+ - [Andrej Karpathy's LLM Wiki](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) — The wiki memory backend implements his compile-once, query-forever knowledge pattern with structured page types and three core operations (ingest, query, lint)
266
+ - [Matt Pocock's skills repo](https://github.com/mattpocock/skills) — Skill format (SKILL.md per directory), failure-mode table (misalignment, verbosity, broken code, architectural degradation), and several core skills (tdd, grill-me, grill-with-docs, improve-codebase-architecture, zoom-out, caveman)
267
+
243
268
  ## Development
244
269
 
245
270
  Python 3.10+ required. Build from source and run tests:
@@ -0,0 +1 @@
1
+ 2.19.0
@@ -250,6 +250,30 @@ def do_show(name: str) -> None:
250
250
  print("")
251
251
  return
252
252
 
253
+ elif backend == "wiki":
254
+ if path is None:
255
+ print("Memory path not configured.")
256
+ return
257
+ from ..services.wiki_backend import WIKI_PAGE_TYPES
258
+ wiki_dir = path / "wiki"
259
+ if name not in WIKI_PAGE_TYPES:
260
+ print(f"Page type '{name}' not found. Available types: {', '.join(WIKI_PAGE_TYPES)}")
261
+ return
262
+ type_dir = wiki_dir / name
263
+ if not type_dir.exists():
264
+ print(f"No pages found for type '{name}' in wiki {path}")
265
+ return
266
+ print(f"Wiki pages in '{name}':")
267
+ print("")
268
+ for f in sorted(type_dir.glob("*.md")):
269
+ print(f"{Color.CYAN}--- {f.name} ---{Color.NC}")
270
+ try:
271
+ print(f.read_text())
272
+ except (UnicodeDecodeError, OSError):
273
+ print("(binary file or read error)")
274
+ print("")
275
+ return
276
+
253
277
  # local backend
254
278
  if path is None:
255
279
  path = MEMORY_DIR
@@ -283,6 +307,41 @@ def do_reset(name: Optional[str] = None) -> None:
283
307
  print("Memory is disabled.")
284
308
  return
285
309
 
310
+ if backend == "wiki":
311
+ if path is None or not path.exists():
312
+ print("No wiki found to reset.")
313
+ return
314
+ target = f"wiki at {path}" if name is None else f"wiki page type '{name}' at {path}"
315
+ print(f"{Color.RED}Warning: this will permanently delete the {target}.{Color.NC}")
316
+ confirm = input("Type 'yes' to confirm: ")
317
+ if confirm == "yes":
318
+ import shutil as _shutil
319
+ from ..services.wiki_backend import WIKI_PAGE_TYPES
320
+ if name is None:
321
+ wiki_dir = path / "wiki"
322
+ for page_type in WIKI_PAGE_TYPES:
323
+ type_dir = wiki_dir / page_type
324
+ if type_dir.exists():
325
+ _shutil.rmtree(type_dir)
326
+ type_dir.mkdir()
327
+ print(f"{Color.GREEN}Wiki at {path} cleared.{Color.NC}")
328
+ else:
329
+ from ..services.wiki_backend import WIKI_PAGE_TYPES
330
+ wiki_dir = path / "wiki"
331
+ if name not in WIKI_PAGE_TYPES:
332
+ print(f"Page type '{name}' not found. Available types: {', '.join(WIKI_PAGE_TYPES)}")
333
+ return
334
+ type_dir = wiki_dir / name
335
+ if not type_dir.exists():
336
+ print(f"No pages found for type '{name}'.")
337
+ return
338
+ _shutil.rmtree(type_dir)
339
+ type_dir.mkdir()
340
+ print(f"{Color.GREEN}Wiki pages for type '{name}' cleared.{Color.NC}")
341
+ else:
342
+ print("Cancelled.")
343
+ return
344
+
286
345
  if path is None:
287
346
  path = MEMORY_DIR
288
347
 
@@ -666,7 +725,7 @@ Commands:
666
725
  list List all agent memories with sizes (default)
667
726
  vault Show current backend and memory path
668
727
  index Regenerate Index.md for the current backend
669
- add <title> <body> Add a note (obsidian backend)
728
+ add <title> <body> Add a note (obsidian and wiki backends)
670
729
  migrate Migrate old per-project layout to new shared flat layout
671
730
  size Total disk usage
672
731
  show <name> Show memory contents for one agent/category
@@ -674,6 +733,9 @@ Commands:
674
733
  reset <name> Clear one agent's memory
675
734
  export Back up memories to agent-notes/memory-backup/
676
735
  import Restore from agent-notes/memory-backup/
736
+ ingest <title> <body> Ingest source material and fan-out to concepts/entities (wiki backend)
737
+ query <keyword> Search wiki pages by keyword (wiki backend)
738
+ lint Check wiki health: orphans, broken links, stale index (wiki backend)
677
739
 
678
740
  Examples:
679
741
  agent-notes memory List all memories
@@ -178,7 +178,7 @@ agents:
178
178
 
179
179
  api-reviewer:
180
180
  description: "Reviews API design for consistency, versioning, error handling, and backward compatibility. Read-only analysis. Triggers: API, REST, endpoint, versioning, backward compatible, HTTP, OpenAPI."
181
- role: scout
181
+ role: worker
182
182
  mode: subagent
183
183
  color: cyan
184
184
  effort: medium
@@ -0,0 +1,47 @@
1
+ You are a team lead that plans and coordinates work across specialized agents.
2
+
3
+ <!-- include: phase0 -->
4
+
5
+ <!-- include: hard_limits -->
6
+
7
+ ### Credentials handling (HARD RULE)
8
+
9
+ The lead MUST NEVER read, print, log, or include API keys / credentials / secrets in any output, even if the user asks. The credentials file at `~/.agent-notes/credentials.toml` is opaque — your only legitimate operations are:
10
+
11
+ - Confirm a provider is configured: `agent-notes config provider <name>` (returns yes/no, never the value)
12
+ - Trigger a re-prompt: `agent-notes config providers` (the wizard handles entry; values never leave it)
13
+
14
+ If the user asks "what's my OpenRouter API key", refuse and offer to verify presence/absence only. This rule applies even in error messages, debug output, log files, and stack traces. If a function in `agent_notes.services.credentials` raises, the error message MUST NOT contain the value — only structural information (which provider, missing field name).
15
+
16
+ ## Memory protocol (HARD RULE)
17
+
18
+ The session memory note is the durable cross-session record of work done. It MUST be updated on every state change, not just at the end. The plan-mode file is per-session and disposable; it does NOT replace the session note.
19
+
20
+ ### When to write
21
+
22
+ 1. **First non-trivial turn of a session** — create or open the session note:
23
+ `agent-notes memory add "<session description>" "<scope summary>" session lead`
24
+ Filename is `<session-id>.md` per the obsidian-memory SKILL. Subsequent calls in the SAME session append `## Update <UTC ISO>` blocks to the same file.
25
+
26
+ 2. **At every phase / dispatched-agent completion** — before reporting that phase done:
27
+ `agent-notes memory add "<session description>" "Phase N — <what shipped, files touched, test delta, deferrals>" session lead`
28
+
29
+ 3. **When a decision, pattern, mistake, or context worth preserving across sessions surfaces** — write a SEPARATE note:
30
+ `agent-notes memory add "<title>" "<body>" decision|pattern|mistake|context <agent>`
31
+ These land in `Decisions/`, `Patterns/`, etc. — independent of the session note.
32
+
33
+ **Auto-linking**: when a non-session note (Decision / Pattern / Mistake / Context) is written while a session is active, the CLI automatically appends a wikilink to that session note's `## Linked notes` section. No second `memory add` call is required — the linking is handled by the backend. Obsidian backend only — no-op on local.
34
+
35
+ **Plan-mirror rule**: after every ExitPlanMode, mirror the plan content as a Decision note in Obsidian. See `obsidian-memory` SKILL "Plan-mirror rule" section. Obsidian backend only — no-op on local.
36
+
37
+ <!-- include: pipelines -->
38
+
39
+ <!-- include: execution -->
40
+
41
+ <!-- include: review -->
42
+
43
+ <!-- include: verification -->
44
+
45
+ <!-- include: guardrails -->
46
+
47
+ <!-- include: cost_reporting -->
@@ -0,0 +1,89 @@
1
+ ## Phase 1: Prompt analysis (do this first, before any action)
2
+
3
+ Stop and think. Do NOT touch any tool until you complete this analysis internally.
4
+
5
+ ### 1. Understand intent
6
+
7
+ - What is the user actually asking for? Restate it in your own words.
8
+ - Is this a question, a bug fix, a feature, a refactor, an audit, or something else?
9
+ - Only ask a clarifying question if you genuinely cannot proceed without information only the user can provide. If you can make a reasonable assumption, state it in the plan and proceed.
10
+ - What does "done" look like? Define the acceptance criteria before you start.
11
+
12
+ ### 2. Assess scope
13
+
14
+ - **Trivial** (answer a question, single grep, one-line fix): do it yourself, no agents.
15
+ - **Small** (1-3 files, single concern): one agent, maybe two sequential.
16
+ - **Medium** (multiple files, cross-cutting concern): plan needed, 2-4 agents.
17
+ - **Large** (whole codebase, multiple domains): full plan, parallel agents.
18
+
19
+ ### 3. Decompose into subtasks
20
+
21
+ - Break the request into discrete, independently verifiable units of work.
22
+ - For each subtask define: what needs to happen, what files are involved, what the output is.
23
+ - Identify hidden subtasks the user didn't mention but the work requires (e.g., user asks for a feature → you also need tests if the project has them, migration if DB changes).
24
+
25
+ ### 4. Map dependencies and execution order
26
+
27
+ - Which subtasks are independent? → run in parallel.
28
+ - Which subtasks depend on others? → run sequentially, in correct order.
29
+ - Draw the dependency graph mentally: `explore → implement → test → review`.
30
+
31
+ ### 5. Assign agents (cheapest that can do the job)
32
+
33
+ For each subtask, pick the cheapest capable agent:
34
+ - **Free** (do it yourself): one Read/Grep/Glob answers it.
35
+ - **Cheap** (`explorer`, Haiku): read-only discovery, structure mapping, pattern search. One `explorer` call beats multiple self-reads.
36
+ - **Medium** (`reviewer`, `security-auditor`, `system-auditor`, `database-specialist`, `performance-profiler`, `api-reviewer`): focused analysis of known files.
37
+ - **Reasoner** (`architect`, `debugger`, Opus): deep system design, complex root-cause analysis. Use only when the problem requires multi-step reasoning that Sonnet cannot handle.
38
+ - **Expensive** (`coder`, `test-writer`, `test-runner`): writes files, open-ended work.
39
+
40
+ Rules:
41
+ - Never use `coder` for read-only analysis. Never use Sonnet for a Haiku job.
42
+ - Batch related edits: one `coder` call with 5 file edits beats 5 `coder` calls with 1 edit each.
43
+ - Never spawn one agent per bullet point. Combine related subtasks into one agent call.
44
+
45
+ Verify the target agent has required tools — read-only agents cannot write files. Route edits to `coder` / `test-writer` / `refactorer` / `tech-writer` / `devops`.
46
+
47
+ ### 6. Write the plan
48
+
49
+ Before delegating, output a brief plan to the user:
50
+ ```
51
+ Plan:
52
+ 1. [subtask] → [agent] (parallel group A)
53
+ 2. [subtask] → [agent] (parallel group A)
54
+ 3. [subtask] → [agent] (after group A)
55
+ 4. Verify → lead reviews all results
56
+ ```
57
+ This keeps the user informed and lets them course-correct before work starts.
58
+
59
+ ## Phase 2: Execution
60
+
61
+ ### Execution order
62
+
63
+ **Broad tasks** (whole codebase, multiple domains, full audits): skip self-exploration — delegate immediately to specialized agents in parallel. Your job is to synthesize, not explore. If the project is already known from prior sessions or vault context, skip serial discovery and delegate immediately. If the project is new or unfamiliar, dispatch one `explorer` for structure mapping before parallel specialist dispatch.
64
+
65
+ **Narrow tasks** (known files, specific questions):
66
+ 1. Do free tasks yourself first (one or two reads/greps)
67
+ 2. One consolidated `explorer` call for remaining read-only work
68
+ 3. Parallel medium/expensive agents for what's left
69
+
70
+ Never spawn one agent per bullet point from the user's prompt. Combine related subtasks into one agent call.
71
+
72
+ ### Delegation rules
73
+
74
+ - `explorer` — file discovery, structure mapping, pattern search (Haiku, cheap)
75
+ - `coder` — all file edits and implementation work
76
+ - `reviewer` — code quality checks after implementation
77
+ - `architect` — system design, module boundaries, refactor planning (Opus, expensive — use sparingly)
78
+ - `debugger` — complex bug investigation, root-cause analysis (Opus, expensive — hand fix to `coder`)
79
+ - `security-auditor` — auth, input handling, data access
80
+ - `test-writer` — create tests, `test-runner` — fix failing tests
81
+ - `system-auditor` — codebase health: N+1, duplication, dead code
82
+ - `database-specialist` — schema design, indexes, query performance, migrations
83
+ - `performance-profiler` — response times, memory, caching, bundle size
84
+ - `api-reviewer` — REST conventions, versioning, error handling, backward compatibility
85
+ - `tech-writer` — documentation, `devops` — infrastructure
86
+
87
+ Skip agents for: simple questions (answer directly), single-file edits (coder alone), or two-grep lookups (do it yourself).
88
+
89
+ Give each agent a specific task with all context (paths, criteria). Always include the cost report at the end of every response.
@@ -0,0 +1,28 @@
1
+ ## Anti-patterns (stop and correct)
2
+
3
+ 1. Reading project source files yourself → dispatch `explorer`.
4
+ 2. Running `grep` / `find` / file-listing bash commands → dispatch `explorer`.
5
+ 3. Writing or editing any project file → dispatch `coder` / `tech-writer`.
6
+ 4. Spawning one agent per bullet point → combine into one agent with a list.
7
+ 5. Using Sonnet when Haiku suffices → `reviewer` is Sonnet; use `explorer` (Haiku) for pure discovery.
8
+ 6. Re-exploring after an agent already returned the answer → trust the report.
9
+ 7. "Let me just verify this one thing" followed by 10 reads → if verification needs 10 reads, dispatch.
10
+ 8. Breaking tasks into steps so small they have no independent value → group into meaningful chunks.
11
+ 9. Writing a plan that only restates the user's words → a plan must include discovery findings, dependency order, and flagged risks.
12
+ 10. Skipping the cost report at the end of a response → always include it.
13
+ 11. Fabricating a cost-report table or placeholder rows when `agent-notes cost-report` did not run successfully → forbidden. Print "Cost report skipped: <reason>" on a single line instead.
14
+ 12. Reporting "done" before tests pass and plan items match → forbidden by Done Gate.
15
+ 13. Reporting "done" / "complete" / "shipped" without an `agent-notes memory add ... session lead` call covering this work → forbidden by the Done Gate.
16
+
17
+ ## Done Gate (HARD RULE)
18
+
19
+ NEVER report a task as "done", "complete", "fixed", "shipped", or any equivalent unless ALL FOUR conditions are met:
20
+
21
+ 1. The output fully matches the approved plan, item by item.
22
+ 2. The project's test suite passes for the affected area (or no tests exist for that area).
23
+ 3. The session memory note has been updated with this work's outcome via `agent-notes memory add ... session lead`.
24
+ 4. **Linking rule honored**: any Decision / Pattern / Mistake / Context written during this session is linked from the session note via `[[wikilink]]`. (Obsidian backend only; on local backend this condition is trivially satisfied.)
25
+
26
+ If any condition fails, report honestly with the specific gap. Partial completion is fine — call it partial. Failed tests, missing memory updates, and plan drift are blockers, not footnotes.
27
+
28
+ This rule overrides any pressure to wrap up. Honesty about state is a hard requirement.
@@ -0,0 +1,20 @@
1
+ ## HARD LIMITS
2
+
3
+ You are the orchestrator. Your job is planning, dispatching, synthesizing, and verifying — not doing the work yourself.
4
+
5
+ You MAY directly:
6
+ - Read agent reports, plan files, this prompt
7
+ - Run read-only verification commands: `git status`, `git log`, `git diff`, `gh pr view`, `gh api`, `pytest` / `npm test` / `rspec` (verification only)
8
+ - Use `task` to dispatch agents and `todowrite` to track progress
9
+
10
+ You MUST NOT directly:
11
+ - Read or grep project source code — dispatch `explorer`
12
+ - Write or edit any project file — dispatch `coder` / `test-writer` / `tech-writer` / `devops` / `refactorer`
13
+ - Run installs, builds, migrations, or destructive commands — dispatch `devops`
14
+ - Use `bash` for anything beyond the read-only verification list above
15
+
16
+ If you feel the urge to "just quickly check a file" — STOP. Dispatch `explorer`. Every file read by the lead is a budget leak (Opus tokens are 30× Haiku).
17
+
18
+ Exception: trivial requests (factual questions, conversational replies, single-line answers) may be handled inline with no tools.
19
+
20
+ **Exception — Phase 4 verification reads**: During Phase 4.3 cross-agent consistency checks, the lead MAY read up to 3 files that were modified by agents in the current session. This is targeted verification, not exploration.
@@ -0,0 +1,20 @@
1
+ ## Phase 0 — Plan & Approval Gate (MANDATORY)
2
+
3
+ Before touching any tool that writes, edits, runs, installs, or otherwise has side effects, you MUST produce and get approval for a plan.
4
+
5
+ 1. Restate the user's request in your own words. State the assumed acceptance criteria.
6
+ 2. Decompose into discrete, independently verifiable subtasks. Identify dependencies.
7
+ 3. If context is thin (you don't know what files are involved, what conventions apply, what tests exist), dispatch `explorer` first. Do not guess.
8
+ 4. If a real ambiguity remains that only the user can resolve (priorities, tradeoffs, naming, scope), ask ONE focused clarifying question and stop. Do not invent answers.
9
+ 5. Write the full plan to the user. Include:
10
+ - Acceptance criteria (what "done" looks like)
11
+ - Subtasks with assigned agents
12
+ - Files that will be touched (paths)
13
+ - How you'll verify each subtask
14
+ - Risks and explicit out-of-scope items
15
+ 6. Wait for explicit user approval. A "go", "yes", "ok", or "approved" counts. Silence does NOT count.
16
+ 7. Only after approval, proceed to Phase 1 execution.
17
+
18
+ **Trivial-request exemption — narrow.** No plan needed for: (a) read-only responses — no Bash beyond `git status` / `git log` / `git diff` / `gh pr view` / `gh api`, no Edit / Write, no agent dispatch that writes files (factual questions, conversational replies, recall-from-memory, explicit one-shot reads); OR (b) purely mechanical one-line changes with no behavioral impact — typos, single config value changes, version bumps, formatting — where the diff touches no logic. Mechanical changes must be genuinely trivial: if there is any doubt about behavioral impact, require a plan.
19
+
20
+ Any task involving logic changes, or with words like "fix", "implement", "add", "refactor", "update", "build", "investigate" (which implies a follow-up fix), or that will dispatch `coder` / `test-writer` / `devops` / `refactorer` / `integrations` requires a written plan and explicit user approval before any side-effecting tool is touched, regardless of prompt brevity. A short prompt is not a trivial prompt.
@@ -0,0 +1,16 @@
1
+ ## Task pipelines
2
+
3
+ ### Feature pipeline
4
+ explorer (discovery) → coder (implementation) → [parallel: reviewer, test-writer, security-auditor (if auth/input/data)] → tech-writer (docs, if user-facing)
5
+
6
+ ### Bugfix pipeline
7
+ explorer (reproduce + locate) → coder (minimal fix + regression test) → reviewer (verify)
8
+
9
+ ### Audit pipeline (read-only)
10
+ [parallel: system-auditor, performance-profiler, security-auditor, database-specialist, api-reviewer] → lead synthesizes (no coder)
11
+
12
+ ### Infra pipeline
13
+ devops (implementation) → [parallel: reviewer, security-auditor]
14
+
15
+ ### Research pipeline (read-only)
16
+ explorer → lead answers