agent-notes 2.21.0__tar.gz → 2.22.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 (229) hide show
  1. agent_notes-2.22.0/PKG-INFO +495 -0
  2. agent_notes-2.22.0/README.md +465 -0
  3. agent_notes-2.22.0/agent_notes/VERSION +1 -0
  4. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/cli.py +6 -8
  5. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/config.py +26 -12
  6. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/info.py +3 -3
  7. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/install.py +18 -12
  8. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/memory.py +49 -147
  9. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/wizard.py +42 -42
  10. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/config.py +12 -6
  11. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/agents.yaml +20 -0
  12. agent_notes-2.22.0/agent_notes/data/agents/shared/wiki_compile.md +18 -0
  13. agent_notes-2.22.0/agent_notes/data/agents/wiki-compiler.md +121 -0
  14. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/obsidian-memory/SKILL.md +108 -17
  15. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/scripts/_claude_backend.py +17 -3
  16. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/scripts/cost_report.py +3 -1
  17. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/fs.py +17 -32
  18. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/installer.py +43 -20
  19. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/ui.py +36 -1
  20. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/wiki_backend.py +171 -7
  21. agent_notes-2.22.0/agent_notes.egg-info/PKG-INFO +495 -0
  22. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes.egg-info/SOURCES.txt +6 -1
  23. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/memory/test_memory_command.py +7 -5
  24. agent_notes-2.22.0/tests/unit/commands/test_info.py +257 -0
  25. agent_notes-2.22.0/tests/unit/commands/test_wizard_steps.py +501 -0
  26. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/scripts/test_cost_report_scoping.py +148 -0
  27. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/services/test_fs.py +71 -0
  28. agent_notes-2.22.0/tests/unit/services/test_state_store.py +576 -0
  29. agent_notes-2.22.0/tests/unit/services/test_validation.py +217 -0
  30. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/services/test_wiki_backend.py +95 -0
  31. agent_notes-2.22.0/tests/unit/test_memory_dir_for_backend.py +100 -0
  32. agent_notes-2.21.0/PKG-INFO +0 -327
  33. agent_notes-2.21.0/README.md +0 -297
  34. agent_notes-2.21.0/agent_notes/VERSION +0 -1
  35. agent_notes-2.21.0/agent_notes/data/skills/ingest/SKILL.md +0 -73
  36. agent_notes-2.21.0/agent_notes.egg-info/PKG-INFO +0 -327
  37. agent_notes-2.21.0/tests/unit/test_memory_dir_for_backend.py +0 -67
  38. {agent_notes-2.21.0 → agent_notes-2.22.0}/LICENSE +0 -0
  39. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/__init__.py +0 -0
  40. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/__main__.py +0 -0
  41. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/__init__.py +0 -0
  42. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/_install_helpers.py +0 -0
  43. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/build.py +0 -0
  44. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/doctor.py +0 -0
  45. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/list.py +0 -0
  46. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/regenerate.py +0 -0
  47. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/set_role.py +0 -0
  48. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/uninstall.py +0 -0
  49. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/commands/validate.py +0 -0
  50. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/analyst.md +0 -0
  51. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/api-reviewer.md +0 -0
  52. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/architect.md +0 -0
  53. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/coder.md +0 -0
  54. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/database-specialist.md +0 -0
  55. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/debugger.md +0 -0
  56. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/devil.md +0 -0
  57. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/devops.md +0 -0
  58. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/explorer.md +0 -0
  59. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/integrations.md +0 -0
  60. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/lead.md +0 -0
  61. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/performance-profiler.md +0 -0
  62. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/refactorer.md +0 -0
  63. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/reviewer.md +0 -0
  64. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/security-auditor.md +0 -0
  65. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/shared/cost_reporting.md +0 -0
  66. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/shared/execution.md +0 -0
  67. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/shared/guardrails.md +0 -0
  68. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/shared/hard_limits.md +0 -0
  69. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/shared/phase0.md +0 -0
  70. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/shared/pipelines.md +0 -0
  71. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/shared/review.md +0 -0
  72. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/shared/verification.md +0 -0
  73. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/system-auditor.md +0 -0
  74. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/tech-writer.md +0 -0
  75. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/test-runner.md +0 -0
  76. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/agents/test-writer.md +0 -0
  77. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/cli/claude.yaml +0 -0
  78. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/cli/copilot.yaml +0 -0
  79. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/cli/opencode.yaml +0 -0
  80. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/commands/brainstorm.md +0 -0
  81. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/commands/debug.md +0 -0
  82. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/commands/review.md +0 -0
  83. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/global-claude.md +0 -0
  84. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/global-copilot.md +0 -0
  85. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/global-opencode.md +0 -0
  86. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/hooks/session-context.md.tpl +0 -0
  87. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/models/claude-haiku-4-5.yaml +0 -0
  88. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/models/claude-opus-4-1.yaml +0 -0
  89. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/models/claude-opus-4-5.yaml +0 -0
  90. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/models/claude-opus-4-6.yaml +0 -0
  91. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/models/claude-opus-4-7.yaml +0 -0
  92. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/models/claude-sonnet-4-5.yaml +0 -0
  93. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/models/claude-sonnet-4-6.yaml +0 -0
  94. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/models/claude-sonnet-4.yaml +0 -0
  95. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/plugin/claude.yaml +0 -0
  96. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/plugin/opencode-index.js.template +0 -0
  97. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/plugin/opencode.yaml +0 -0
  98. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/pricing.yaml +0 -0
  99. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/roles/orchestrator.yaml +0 -0
  100. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/roles/reasoner.yaml +0 -0
  101. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/roles/scout.yaml +0 -0
  102. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/roles/worker.yaml +0 -0
  103. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/rules/code-quality.md +0 -0
  104. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/rules/safety.md +0 -0
  105. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/brainstorming/SKILL.md +0 -0
  106. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/caveman/SKILL.md +0 -0
  107. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/code-review/SKILL.md +0 -0
  108. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/debugging-protocol/SKILL.md +0 -0
  109. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/docker/SKILL.md +0 -0
  110. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/docker/compose.md +0 -0
  111. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/docker/dockerfile.md +0 -0
  112. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/git/SKILL.md +0 -0
  113. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/grill-me/SKILL.md +0 -0
  114. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/grill-with-docs/SKILL.md +0 -0
  115. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/improve-codebase-architecture/SKILL.md +0 -0
  116. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/rails/SKILL.md +0 -0
  117. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/rails/controllers.md +0 -0
  118. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/rails/frontend.md +0 -0
  119. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/rails/infra.md +0 -0
  120. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/rails/models.md +0 -0
  121. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/rails/testing.md +0 -0
  122. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/rails/views.md +0 -0
  123. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/refactoring-protocol/SKILL.md +0 -0
  124. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/setup-project-context/SKILL.md +0 -0
  125. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/tdd/SKILL.md +0 -0
  126. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/skills/zoom-out/SKILL.md +0 -0
  127. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/templates/__init__.py +0 -0
  128. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/templates/__pycache__/__init__.cpython-314.pyc +0 -0
  129. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/templates/frontmatter/__init__.py +0 -0
  130. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-314.pyc +0 -0
  131. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-314.pyc +0 -0
  132. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
  133. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/templates/frontmatter/claude.py +0 -0
  134. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/data/templates/frontmatter/opencode.py +0 -0
  135. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/doctor_checks.py +0 -0
  136. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/domain/__init__.py +0 -0
  137. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/domain/agent.py +0 -0
  138. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/domain/cli_backend.py +0 -0
  139. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/domain/diagnostics.py +0 -0
  140. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/domain/diff.py +0 -0
  141. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/domain/model.py +0 -0
  142. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/domain/role.py +0 -0
  143. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/domain/rule.py +0 -0
  144. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/domain/skill.py +0 -0
  145. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/domain/state.py +0 -0
  146. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/install_state.py +0 -0
  147. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/registries/__init__.py +0 -0
  148. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/registries/_base.py +0 -0
  149. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/registries/agent_registry.py +0 -0
  150. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/registries/cli_registry.py +0 -0
  151. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/registries/model_registry.py +0 -0
  152. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/registries/role_registry.py +0 -0
  153. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/registries/rule_registry.py +0 -0
  154. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/registries/skill_registry.py +0 -0
  155. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/scripts/__init__.py +0 -0
  156. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/scripts/_formatting.py +0 -0
  157. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/scripts/_opencode_backend.py +0 -0
  158. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/scripts/_pricing.py +0 -0
  159. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/__init__.py +0 -0
  160. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/counts.py +0 -0
  161. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/credentials.py +0 -0
  162. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/diagnostics/__init__.py +0 -0
  163. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/diagnostics/_checks.py +0 -0
  164. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/diagnostics/_display.py +0 -0
  165. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/diagnostics/_fix.py +0 -0
  166. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/diff.py +0 -0
  167. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/install_state_builder.py +0 -0
  168. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/memory_backend.py +0 -0
  169. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/rendering.py +0 -0
  170. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/session_context.py +0 -0
  171. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/settings_writer.py +0 -0
  172. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/state_store.py +0 -0
  173. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/user_config.py +0 -0
  174. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/services/validation.py +0 -0
  175. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes/state.py +0 -0
  176. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes.egg-info/dependency_links.txt +0 -0
  177. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes.egg-info/entry_points.txt +0 -0
  178. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes.egg-info/requires.txt +0 -0
  179. {agent_notes-2.21.0 → agent_notes-2.22.0}/agent_notes.egg-info/top_level.txt +0 -0
  180. {agent_notes-2.21.0 → agent_notes-2.22.0}/pyproject.toml +0 -0
  181. {agent_notes-2.21.0 → agent_notes-2.22.0}/setup.cfg +0 -0
  182. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/conftest.py +0 -0
  183. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/__init__.py +0 -0
  184. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/commands/__init__.py +0 -0
  185. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/commands/test_config_command.py +0 -0
  186. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/commands/test_doctor_command.py +0 -0
  187. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/commands/test_info_command.py +0 -0
  188. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/commands/test_install_command.py +0 -0
  189. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/commands/test_list_command.py +0 -0
  190. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/commands/test_regenerate_command.py +0 -0
  191. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/commands/test_uninstall_command.py +0 -0
  192. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/commands/test_validate_command.py +0 -0
  193. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/memory/__init__.py +0 -0
  194. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/scripts/__init__.py +0 -0
  195. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/functional/scripts/test_release_script.py +0 -0
  196. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/integration/__init__.py +0 -0
  197. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/integration/build_output/__init__.py +0 -0
  198. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/integration/build_output/test_build_output.py +0 -0
  199. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/integration/install/__init__.py +0 -0
  200. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/integration/install/test_install_methods.py +0 -0
  201. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/integration/plugin_builders/__init__.py +0 -0
  202. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/integration/plugin_builders/test_plugin_builders.py +0 -0
  203. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/plugins/__init__.py +0 -0
  204. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/plugins/claude/__init__.py +0 -0
  205. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/plugins/claude/test_agents.py +0 -0
  206. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/plugins/test_skills.py +0 -0
  207. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/__init__.py +0 -0
  208. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/commands/__init__.py +0 -0
  209. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/commands/test_cost_report_subcommand.py +0 -0
  210. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/commands/test_count_agents.py +0 -0
  211. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/commands/test_memory_migrate.py +0 -0
  212. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/commands/test_wizard_orchestrator_skip.py +0 -0
  213. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/commands/test_wizard_preflight.py +0 -0
  214. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/registries/__init__.py +0 -0
  215. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/registries/test_registries.py +0 -0
  216. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/scripts/__init__.py +0 -0
  217. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/scripts/test_cost_report.py +0 -0
  218. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/scripts/test_formatting_tty.py +0 -0
  219. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/scripts/test_time_aggregation.py +0 -0
  220. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/services/__init__.py +0 -0
  221. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/services/test_build_functions.py +0 -0
  222. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/services/test_credentials.py +0 -0
  223. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/services/test_installer_plan.py +0 -0
  224. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/services/test_memory_backend.py +0 -0
  225. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/services/test_memory_backend_io.py +0 -0
  226. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/services/test_rendering_includes.py +0 -0
  227. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/services/test_session_context.py +0 -0
  228. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/services/test_settings_writer.py +0 -0
  229. {agent_notes-2.21.0 → agent_notes-2.22.0}/tests/unit/test_import_health.py +0 -0
@@ -0,0 +1,495 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-notes
3
+ Version: 2.22.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.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Software Development :: Code Generators
20
+ Classifier: Topic :: Utilities
21
+ Classifier: Environment :: Console
22
+ Requires-Python: >=3.10
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: pyyaml>=6.0
26
+ Requires-Dist: tomli>=1.1.0; python_version < "3.11"
27
+ Provides-Extra: dev
28
+ Requires-Dist: pytest>=7.0; extra == "dev"
29
+ Dynamic: license-file
30
+
31
+ # agent-notes
32
+
33
+ AI agent configuration manager for Claude Code and OpenCode — orchestrates a team of 19 specialized subagents across three model tiers.
34
+
35
+ ## Quick Start
36
+
37
+ ```bash
38
+ pip install agent-notes
39
+ agent-notes install # interactive wizard guides you through setup
40
+ agent-notes doctor
41
+ ```
42
+
43
+ **What's Included**
44
+ - 19 specialized AI subagents (Opus reasons, Sonnet executes, Haiku explores)
45
+ - 42+ on-demand skills (Rails, Docker, Git, Kamal, Process)
46
+ - Global rules and guardrails
47
+ - Agent memory with 3 storage options (Local, Obsidian, Wiki)
48
+ - Configuration for Claude Code, OpenCode, and GitHub Copilot
49
+
50
+ ---
51
+
52
+ <details>
53
+ <summary>Installation</summary>
54
+
55
+ ### PyPI (recommended)
56
+
57
+ ```bash
58
+ pip install agent-notes
59
+ # or
60
+ pipx install agent-notes
61
+ agent-notes install
62
+ ```
63
+
64
+ Update anytime:
65
+
66
+ ```bash
67
+ pip install --upgrade agent-notes && agent-notes install
68
+ # or
69
+ pipx upgrade agent-notes && agent-notes install
70
+ ```
71
+
72
+ ### Local build (developers)
73
+
74
+ ```bash
75
+ git clone https://github.com/rubakas/agent-notes.git
76
+ cd agent-notes
77
+ python -m build # produces dist/*.whl
78
+ pipx install dist/*.whl # or pip install --user dist/*.whl
79
+ agent-notes install
80
+ ```
81
+
82
+ Iteration loop: edit source → `python -m build` → `pipx reinstall dist/*.whl`. Not editable mode. Not `pip install -e .`.
83
+
84
+ ### Plugin (limited functionality)
85
+
86
+ - **Claude Code**: install via the Claude Code plugin marketplace or copy/symlink `.claude-plugin/` into `~/.claude/plugins/agent-notes/`.
87
+ - **OpenCode**: copy or symlink `.claude-plugin/` into `~/.config/opencode/plugins/agent-notes/` and add `"plugin": ["agent-notes"]` to `opencode.json`.
88
+
89
+ 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.
90
+
91
+ ### API keys
92
+
93
+ Provider API keys live in `~/.agent-notes/credentials.toml` (mode 0600, never committed). Add or update via:
94
+
95
+ ```bash
96
+ agent-notes config providers
97
+ ```
98
+
99
+ 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:
100
+
101
+ ```bash
102
+ agent-notes config provider openrouter # prints "configured" or "no key"
103
+ ```
104
+
105
+ </details>
106
+
107
+ ---
108
+
109
+ <details>
110
+ <summary>Agent Team</summary>
111
+
112
+ Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonnet 4.6 executes, Haiku 4.5 scouts.**
113
+
114
+ | Agent | Role | Model Tier | Purpose |
115
+ |---|---|---|---|
116
+ | lead | orchestrator | opus | Plans, coordinates, verifies — the team lead |
117
+ | architect | reasoner | opus | System design, module boundaries, refactor planning |
118
+ | debugger | reasoner | opus | Complex bug investigation, root-cause analysis |
119
+ | coder | worker | sonnet | Implementation, file edits, bug fixes |
120
+ | reviewer | worker | sonnet | Code quality, readability, correctness |
121
+ | security-auditor | worker | sonnet | Auth, injection, XSS, secrets exposure |
122
+ | test-writer | worker | sonnet | Creates tests for any framework |
123
+ | test-runner | worker | sonnet | Diagnoses and fixes failing tests |
124
+ | system-auditor | worker | sonnet | Duplication, dead code, coupling, complexity |
125
+ | database-specialist | worker | sonnet | Schema design, indexes, query performance |
126
+ | performance-profiler | worker | sonnet | Response times, memory, bundle size |
127
+ | api-reviewer | worker | sonnet | REST conventions, versioning, backward compatibility |
128
+ | devops | worker | sonnet | Docker, CI/CD, deployment, infrastructure |
129
+ | devil | worker | sonnet | Devil's advocate — challenges plans and assumptions |
130
+ | integrations | worker | sonnet | OAuth, webhooks, API clients, SSO |
131
+ | refactorer | worker | sonnet | Extracts methods, reduces duplication, improves naming |
132
+ | explorer | scout | haiku | Fast file discovery, pattern search |
133
+ | analyst | scout | haiku | Requirements translation, acceptance criteria |
134
+ | tech-writer | scout | haiku | READMEs, API docs, changelogs |
135
+
136
+ **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).
137
+
138
+ ### Delegation rules
139
+
140
+ - **lead** — Plans, coordinates, and verifies across the team
141
+ - **architect** / **debugger** — Deep reasoning for complex design and debugging
142
+ - **coder** — All file edits and implementation work
143
+ - **reviewer** — Code quality checks after implementation
144
+ - **security-auditor** — Auth, input handling, data access
145
+ - **test-writer** — Creates tests; **test-runner** diagnoses and fixes failures
146
+ - **system-auditor** — Duplication, dead code, architectural issues
147
+ - **database-specialist** — Schema design, queries, indexes
148
+ - **performance-profiler** — Latency, memory, bundle size
149
+ - **api-reviewer** — REST conventions, versioning, backward compatibility
150
+ - **devops** — Infrastructure, CI/CD, Docker
151
+ - **integrations** — OAuth, webhooks, API clients
152
+ - **refactorer** — Extraction, duplication, naming
153
+ - **explorer** — Fast discovery and pattern search
154
+ - **analyst** — Requirements and acceptance criteria
155
+ - **tech-writer** — Documentation, READMEs, API docs
156
+ - **devil** — Challenges assumptions and plans
157
+
158
+ </details>
159
+
160
+ ---
161
+
162
+ <details>
163
+ <summary>Memory Storage</summary>
164
+
165
+ Agents accumulate knowledge across sessions using one of three storage options, chosen during `agent-notes install`.
166
+
167
+ ### Storage comparison
168
+
169
+ | Feature | Local | Obsidian | Wiki |
170
+ |---|---|---|---|
171
+ | Location | `~/.claude/agent-memory/` | Obsidian vault | Obsidian vault |
172
+ | Project scoping | No | Yes (per CWD) | Yes (per CWD) |
173
+ | Organization | Per-agent folders | Categories (Patterns, Decisions, etc.) | Wiki pages (sources, concepts, entities) |
174
+ | Best for | Simple setup | Process memory, visual browsing | Domain knowledge, team knowledge bases |
175
+
176
+ ### Local (default)
177
+
178
+ Plain markdown storage in `~/.claude/agent-memory/<agent>/` — one folder per agent, no project scoping or cross-referencing. Simplest setup, no external tools needed.
179
+
180
+ **Commands:**
181
+ ```bash
182
+ agent-notes memory list # list all notes by agent
183
+ agent-notes memory show <agent> # show one agent's notes
184
+ agent-notes memory size # disk usage
185
+ agent-notes memory reset [agent] # clear memory (confirmation required)
186
+ agent-notes memory export # back up to memory-backup/
187
+ agent-notes memory import # restore from memory-backup/
188
+ ```
189
+
190
+ ### Obsidian (per-project sessions)
191
+
192
+ Category vault with YAML frontmatter and `[[wikilinks]]`. Auto-creates a folder per project (derived from current working directory name) and organizes notes into categories: `Patterns/`, `Decisions/`, `Mistakes/`, `Context/`, `Sessions/`.
193
+
194
+ **Structure:**
195
+ ```
196
+ <vault-root>/<project-name>/
197
+ ├── Patterns/
198
+ ├── Decisions/
199
+ ├── Mistakes/
200
+ ├── Context/
201
+ ├── Sessions/
202
+ └── Index.md
203
+ ```
204
+
205
+ **Note types:** pattern, decision, mistake, context, session
206
+
207
+ **Key features:**
208
+ - YAML frontmatter for filtering and Dataview queries (created_at, type, agent, project, tags)
209
+ - Auto-linking: when you write a non-session note during an active session, the CLI auto-appends a wikilink to the session note via `[[note-name]]`
210
+ - Plan mirroring: plans created during a session are automatically mirrored as Decision notes
211
+ - Visual browsing in Obsidian with backlinks and Dataview queries
212
+
213
+ **Commands:**
214
+ ```bash
215
+ agent-notes memory init # create folder structure and Index.md
216
+ agent-notes memory list # list all notes (by category or agent)
217
+ agent-notes memory vault # show storage, path, and init status
218
+ agent-notes memory index # regenerate Index.md
219
+ agent-notes memory add <title> <body> [type] [agent] # type: pattern|decision|mistake|context|session
220
+ agent-notes memory show <agent> # show one agent's notes
221
+ agent-notes memory reset [agent] # clear memory (confirmation required)
222
+ agent-notes memory export # back up to memory-backup/
223
+ agent-notes memory import # restore from memory-backup/
224
+ agent-notes install --reconfigure # switch storage
225
+ ```
226
+
227
+ **Note format example:**
228
+ ```markdown
229
+ ---
230
+ created_at: 2026-04-28T19:30:35Z
231
+ type: pattern
232
+ agent: coder
233
+ project: rubakas
234
+ tags: [rails, models]
235
+ ---
236
+
237
+ # Rails Enum Prefix
238
+
239
+ Always use `_prefix: true` with Rails enums to avoid method name collisions.
240
+ ```
241
+
242
+ ### Wiki (per-project knowledge brain)
243
+
244
+ Implements Karpathy's LLM Wiki pattern (v1). Auto-creates a folder per project (derived from current working directory name) with immutable source material and LLM-maintained wiki pages.
245
+
246
+ **Structure:**
247
+ ```
248
+ <vault-root>/<project-name>/
249
+ ├── raw/ # immutable source material
250
+ └── wiki/
251
+ ├── sources/ # ingested source pages
252
+ ├── concepts/ # domain concepts
253
+ ├── entities/ # external tools/services
254
+ ├── synthesis/ # cross-cutting themes
255
+ ├── sessions/ # session logs
256
+ ├── index.md
257
+ └── log.md
258
+ ```
259
+
260
+ **Key operations:**
261
+
262
+ - **Ingest** — Process source material (URLs, files, folders), extract key info, update entity/concept pages, append to log. Feeds external knowledge into the wiki brain for persistent, queryable knowledge.
263
+
264
+ Use during Claude Code sessions: `/ingest https://docs.example.com/api` or `/ingest ./path/to/file.py`
265
+
266
+ CLI fallback: `agent-notes memory ingest "<title>" "<body>" "<concepts>" "<entities>" "<tags>"`
267
+
268
+ - **Query** — Search wiki pages, synthesize answers with citations, optionally file answers back as new pages
269
+
270
+ - **Lint** — Health-check for contradictions, stale claims, orphan pages, missing cross-references
271
+
272
+ **Commands:**
273
+ ```bash
274
+ agent-notes memory init # create folder structure and Index.md
275
+ agent-notes memory list # list all notes
276
+ agent-notes memory vault # show storage, path, and init status
277
+ agent-notes memory index # regenerate Index.md
278
+ agent-notes memory add <title> <body> [type] # type: source|concept|entity|synthesis|session
279
+ agent-notes memory ingest <title> <body> <concepts> <entities> <tags> # manual ingest
280
+ agent-notes memory query <question> # search wiki pages
281
+ agent-notes memory lint # health-check
282
+ agent-notes memory reset # clear memory (confirmation required)
283
+ agent-notes memory export # back up to memory-backup/
284
+ agent-notes memory import # restore from memory-backup/
285
+ agent-notes install --reconfigure # switch storage
286
+ ```
287
+
288
+ ### Project scoping (Obsidian + Wiki only)
289
+
290
+ Both Obsidian and Wiki storage modes auto-create a folder named after the current working directory, isolating different projects' memory.
291
+
292
+ **Example:**
293
+ - Working in `~/code/my-app/` → memory stored at `<vault>/my-app/`
294
+ - Working in `~/code/another-project/` → memory stored at `<vault>/another-project/`
295
+
296
+ The vault root is configured once during `agent-notes install`; the project path is resolved at runtime from the current working directory.
297
+
298
+ ### Obsidian setup
299
+
300
+ Run `agent-notes install` and pick Obsidian when prompted. The wizard auto-detects existing vaults under `~/Documents`, `~/Desktop`, and `~`. To initialize the vault structure:
301
+
302
+ ```bash
303
+ agent-notes memory init
304
+ ```
305
+
306
+ 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`.
307
+
308
+ </details>
309
+
310
+ ---
311
+
312
+ <details>
313
+ <summary>Skills</summary>
314
+
315
+ 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/`.
316
+
317
+ 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.
318
+
319
+ ### Using skills in Claude Code / OpenCode
320
+
321
+ ```
322
+ Use the rails-models skill to help with this association
323
+ Load the docker-compose skill for multi-service setup
324
+ ```
325
+
326
+ ### Core skills addressing failure modes
327
+
328
+ | Failure mode | What goes wrong | Skills that help |
329
+ |---|---|---|
330
+ | Misalignment | Claude starts building before the problem is resolved | `/grill-me`, `/grill-with-docs` |
331
+ | Verbosity | Responses are bloated; context window fills with noise | `/caveman`, `/setup-project-context` |
332
+ | Broken code | Claude codes without a feedback loop or evidence trail | `/tdd` (improved), `/debugging-protocol` (improved) |
333
+ | Ball of mud | Architecture drifts; modules grow shallow and tangled | `/improve-codebase-architecture`, `/zoom-out` |
334
+
335
+ **Skill descriptions:**
336
+
337
+ - `/grill-me` — Interview the user until the problem is fully resolved before touching code
338
+ - `/grill-with-docs` — Same, but cross-references CONTEXT.md and ADRs and updates them inline
339
+ - `/caveman` — Ultra-compressed reply mode (~75% token savings) for rapid iteration
340
+ - `/setup-project-context` — Bootstraps a CONTEXT.md domain glossary (ubiquitous language)
341
+ - `/tdd` — RED-GREEN-REFACTOR with tracer-bullet vertical slices; horizontal-slicing anti-pattern added
342
+ - `/debugging-protocol` — Phase 1 rewritten as "build a feedback loop first" with 9 strategies
343
+ - `/improve-codebase-architecture` — Deletion test to find shallow modules; surfaces deepening opportunities
344
+ - `/zoom-out` — Quick orientation map of an unfamiliar code area
345
+
346
+ </details>
347
+
348
+ ---
349
+
350
+ <details>
351
+ <summary>Configuration</summary>
352
+
353
+ ### CLI Reference
354
+
355
+ ```
356
+ agent-notes <command> [options]
357
+ ```
358
+
359
+ | Command | Description |
360
+ |---------|-------------|
361
+ | `install [--local] [--copy] [--reconfigure]` | Interactive wizard or direct install |
362
+ | `uninstall [--local \| --global]` | Remove installed components (both scopes by default) |
363
+ | `doctor [--local] [--fix]` | Check installation health |
364
+ | `info` | Show status and component counts |
365
+ | `list [clis\|models\|roles\|agents\|skills\|rules\|all]` | List engine components or installed |
366
+ | `set role <role> <model> [--cli <cli>]` | Change model for a role (Phase 10+) |
367
+ | `regenerate [--cli <cli>]` | Rebuild files from state.json (Phase 10+) |
368
+ | `validate` | Lint source configuration files |
369
+ | `memory [add\|init\|vault\|index\|ingest\|query\|lint\|list\|size\|show\|reset\|export\|import] [name]` | Manage agent memory |
370
+ | `cost-report` | Show session cost breakdown by agent and model |
371
+
372
+ ### Supported platforms
373
+
374
+ | Platform | Install target | Config format |
375
+ |----------|---------------|---------------|
376
+ | **Claude Code** | `~/.claude/` | YAML frontmatter + Markdown prompts |
377
+ | **OpenCode** | `~/.config/opencode/` | YAML frontmatter + Markdown prompts |
378
+ | **GitHub Copilot** | `~/.github/` | `copilot-instructions.md` |
379
+
380
+ ### Quick usage examples
381
+
382
+ ```bash
383
+ # Interactive install (recommended)
384
+ agent-notes install
385
+
386
+ # Direct install (scripted)
387
+ agent-notes install --local --copy
388
+
389
+ # Check health and fix issues
390
+ agent-notes doctor --fix
391
+
392
+ # List agents, models, or skills
393
+ agent-notes list agents
394
+ agent-notes list models
395
+ agent-notes list skills
396
+
397
+ # Manage agent memory
398
+ agent-notes memory list
399
+ agent-notes memory add "Rails enum prefix" \
400
+ "Always use _prefix: true to avoid method name collisions" \
401
+ pattern coder
402
+
403
+ # Check API key configuration
404
+ agent-notes config provider openrouter # prints "configured" or "no key"
405
+
406
+ # Reconfigure providers
407
+ agent-notes config providers
408
+
409
+ # Show installation status
410
+ agent-notes info
411
+
412
+ # Validate configuration files
413
+ agent-notes validate
414
+ ```
415
+
416
+ ### Role models
417
+
418
+ Configure which Claude model powers each role. The default uses Opus 4.6 for reasoning, Sonnet 4.6 for execution, Haiku 4.5 for exploration.
419
+
420
+ ```bash
421
+ agent-notes set role lead claude-opus-4-20250514
422
+ agent-notes set role coder claude-sonnet-4-20250514
423
+ agent-notes set role explorer claude-haiku-4-5-20251001
424
+ ```
425
+
426
+ ### Providers
427
+
428
+ agent-notes supports multiple API providers for routing requests. Configure providers via:
429
+
430
+ ```bash
431
+ agent-notes config providers # interactive wizard
432
+ agent-notes config provider <name> # check if configured (without exposing key)
433
+ ```
434
+
435
+ </details>
436
+
437
+ ---
438
+
439
+ <details>
440
+ <summary>Development</summary>
441
+
442
+ ### Building and testing
443
+
444
+ Python 3.10+ required. Build from source and run tests:
445
+
446
+ ```bash
447
+ python -m build && pipx install dist/*.whl
448
+ python3 -m pytest tests/ -q
449
+ ```
450
+
451
+ ### Development workflow
452
+
453
+ 1. Edit source files in `agent_notes/data/` or Python modules
454
+ 2. Run `python -m build` to rebuild the wheel
455
+ 3. Run `pipx reinstall dist/*.whl` to install the updated version
456
+ 4. Run `agent-notes validate` to lint configuration files
457
+ 5. Run tests: `python3 -m pytest tests/ -q`
458
+
459
+ ### Test structure
460
+
461
+ - `tests/functional/` — Unit tests
462
+ - `tests/integration/` — Build output and artifact validation
463
+ - `tests/plugins/` — Plugin artifact validation
464
+
465
+ ### Contributing guidelines
466
+
467
+ When adding new content:
468
+
469
+ 1. **Edit source files** — all changes go in `agent_notes/data/` directory
470
+ 2. **Run build** — `python -m build` to generate platform configs
471
+ 3. **Run tests** — `python3 -m pytest tests/ -q` before committing
472
+ 4. **Validate** — `agent-notes validate` before committing
473
+ 5. **Keep it generic** — remove app-specific references
474
+ 6. **Show examples** — include code samples with explanations
475
+ 7. **Stay modular** — each skill should be independently usable
476
+ 8. **Stay concise** — agent prompts under 60 lines
477
+
478
+ ### Architecture
479
+
480
+ agent-notes is a 4-layer engine (domain / registries / services / commands). All extensible content (CLIs, models, roles, agents, skills, rules) lives in `agent_notes/data/` as YAML — adding a new CLI/model/role is a YAML drop, no Python changes. Context is loaded in tiers: always-loaded (CLAUDE.md, rules, skill catalog), lazy-loaded (full skill content, agent prompts), and pull-based (memory notes).
481
+
482
+ 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).
483
+
484
+ </details>
485
+
486
+ ---
487
+
488
+ ## Inspired by
489
+
490
+ - [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)
491
+ - [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)
492
+
493
+ ## License
494
+
495
+ MIT