agent-notes 2.27.0__tar.gz → 2.29.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 (293) hide show
  1. {agent_notes-2.27.0 → agent_notes-2.29.0}/PKG-INFO +113 -145
  2. {agent_notes-2.27.0 → agent_notes-2.29.0}/README.md +110 -144
  3. agent_notes-2.29.0/agent_notes/VERSION +1 -0
  4. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/config.py +5 -15
  5. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/memory/reset.py +2 -1
  6. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/validate.py +1 -1
  7. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/wizard/__init__.py +4 -14
  8. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/wizard/execute.py +13 -11
  9. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/agents.yaml +1 -0
  10. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/coder.md +2 -0
  11. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/refactorer.md +2 -0
  12. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/reviewer.md +1 -0
  13. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/execution.md +8 -0
  14. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/guardrails.md +1 -0
  15. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/pipelines.md +2 -0
  16. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/verification.md +4 -0
  17. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/test-writer.md +1 -0
  18. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/cli/claude.yaml +5 -0
  19. agent_notes-2.29.0/agent_notes/data/cli/codex.yaml +29 -0
  20. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/cli/opencode.yaml +5 -0
  21. agent_notes-2.29.0/agent_notes/data/global-codex.md +40 -0
  22. agent_notes-2.29.0/agent_notes/data/models/gpt-5-4-mini.yaml +14 -0
  23. agent_notes-2.29.0/agent_notes/data/models/gpt-5-4.yaml +14 -0
  24. agent_notes-2.29.0/agent_notes/data/models/gpt-5-5.yaml +14 -0
  25. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/plugin/claude.yaml +1 -0
  26. agent_notes-2.29.0/agent_notes/data/skills/chrome-test/SKILL.md +262 -0
  27. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/code-review/SKILL.md +6 -0
  28. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/debugging-protocol/SKILL.md +2 -1
  29. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/refactoring-protocol/SKILL.md +1 -0
  30. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/rsi/SKILL.md +4 -3
  31. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/tdd/SKILL.md +2 -1
  32. agent_notes-2.29.0/agent_notes/data/templates/__pycache__/__init__.cpython-312.pyc +0 -0
  33. agent_notes-2.29.0/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-312.pyc +0 -0
  34. agent_notes-2.29.0/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-312.pyc +0 -0
  35. agent_notes-2.29.0/agent_notes/data/templates/frontmatter/__pycache__/codex.cpython-312.pyc +0 -0
  36. agent_notes-2.29.0/agent_notes/data/templates/frontmatter/__pycache__/codex.cpython-314.pyc +0 -0
  37. agent_notes-2.29.0/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-312.pyc +0 -0
  38. agent_notes-2.29.0/agent_notes/data/templates/frontmatter/codex.py +106 -0
  39. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/domain/cli_backend.py +1 -0
  40. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/registries/agent_registry.py +3 -3
  41. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/registries/cli_registry.py +2 -1
  42. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/scripts/_opencode_backend.py +3 -1
  43. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/credentials.py +14 -16
  44. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/diagnostics/_fix.py +23 -21
  45. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/fs.py +17 -4
  46. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/installer.py +131 -104
  47. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/rendering.py +194 -113
  48. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/state_store.py +2 -3
  49. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/validation.py +1 -5
  50. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/wiki/_wiki_utils.py +4 -1
  51. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes.egg-info/PKG-INFO +113 -145
  52. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes.egg-info/SOURCES.txt +24 -1
  53. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes.egg-info/requires.txt +2 -0
  54. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes.egg-info/top_level.txt +0 -1
  55. {agent_notes-2.27.0 → agent_notes-2.29.0}/pyproject.toml +2 -2
  56. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/conftest.py +2 -1
  57. agent_notes-2.29.0/tests/functional/commands/test_validate_path_filter.py +100 -0
  58. agent_notes-2.29.0/tests/plugins/codex/test_agents.py +138 -0
  59. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/commands/test_wizard_steps.py +3 -5
  60. agent_notes-2.29.0/tests/unit/registries/test_cli_registry.py +184 -0
  61. agent_notes-2.29.0/tests/unit/scripts/test_opencode_backend_connection.py +118 -0
  62. agent_notes-2.29.0/tests/unit/services/__init__.py +0 -0
  63. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_credentials.py +74 -0
  64. agent_notes-2.29.0/tests/unit/services/test_installer_codex.py +460 -0
  65. agent_notes-2.29.0/tests/unit/services/test_installer_hook_quoting.py +85 -0
  66. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_validation.py +9 -3
  67. agent_notes-2.29.0/tests/unit/services/test_wiki_atomic_write.py +73 -0
  68. agent_notes-2.29.0/tests/unit/templates/__init__.py +0 -0
  69. agent_notes-2.29.0/tests/unit/templates/test_codex_frontmatter.py +383 -0
  70. agent_notes-2.27.0/agent_notes/VERSION +0 -1
  71. {agent_notes-2.27.0 → agent_notes-2.29.0}/LICENSE +0 -0
  72. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/__init__.py +0 -0
  73. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/__main__.py +0 -0
  74. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/cli.py +0 -0
  75. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/__init__.py +0 -0
  76. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/_install_helpers.py +0 -0
  77. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/build.py +0 -0
  78. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/doctor.py +0 -0
  79. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/hook.py +0 -0
  80. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/info.py +0 -0
  81. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/install.py +0 -0
  82. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/list.py +0 -0
  83. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/memory/__init__.py +0 -0
  84. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/memory/_common.py +0 -0
  85. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/memory/migrate.py +0 -0
  86. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/memory/notes.py +0 -0
  87. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/memory/transfer.py +0 -0
  88. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/memory/vault.py +0 -0
  89. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/memory/wiki.py +0 -0
  90. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/regenerate.py +0 -0
  91. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/set_role.py +0 -0
  92. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/uninstall.py +0 -0
  93. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/wizard/_common.py +0 -0
  94. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/wizard/cost_report.py +0 -0
  95. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/commands/wizard/orchestrator.py +0 -0
  96. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/config.py +0 -0
  97. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/constants.py +0 -0
  98. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/analyst.md +0 -0
  99. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/api-reviewer.md +0 -0
  100. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/architect.md +0 -0
  101. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/database-specialist.md +0 -0
  102. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/debugger.md +0 -0
  103. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/devil.md +0 -0
  104. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/devops.md +0 -0
  105. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/explorer.md +0 -0
  106. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/integrations.md +0 -0
  107. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/lead.md +0 -0
  108. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/performance-profiler.md +0 -0
  109. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/security-auditor.md +0 -0
  110. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/cost_reporting.md +0 -0
  111. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/hard_limits.md +0 -0
  112. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/phase0.md +0 -0
  113. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/review.md +0 -0
  114. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/wiki_compile.md +0 -0
  115. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/system-auditor.md +0 -0
  116. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/tech-writer.md +0 -0
  117. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/test-runner.md +0 -0
  118. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/agents/wiki-compiler.md +0 -0
  119. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/cli/copilot.yaml +0 -0
  120. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/commands/brainstorm.md +0 -0
  121. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/commands/debug.md +0 -0
  122. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/commands/review.md +0 -0
  123. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/global-claude.md +0 -0
  124. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/global-copilot.md +0 -0
  125. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/global-opencode.md +0 -0
  126. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/hooks/session-context.md.tpl +0 -0
  127. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-haiku-4-5.yaml +0 -0
  128. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-opus-4-1.yaml +0 -0
  129. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-opus-4-5.yaml +0 -0
  130. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-opus-4-6.yaml +0 -0
  131. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-opus-4-7.yaml +0 -0
  132. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-opus-4-8.yaml +0 -0
  133. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-sonnet-4-5.yaml +0 -0
  134. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-sonnet-4-6.yaml +0 -0
  135. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-sonnet-4.yaml +0 -0
  136. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/plugin/opencode-index.js.template +0 -0
  137. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/plugin/opencode.yaml +0 -0
  138. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/pricing.yaml +0 -0
  139. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/roles/orchestrator.yaml +0 -0
  140. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/roles/reasoner.yaml +0 -0
  141. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/roles/scout.yaml +0 -0
  142. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/roles/worker.yaml +0 -0
  143. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/rules/code-quality.md +0 -0
  144. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/rules/safety.md +0 -0
  145. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/brainstorming/SKILL.md +0 -0
  146. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/caveman/SKILL.md +0 -0
  147. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/docker/SKILL.md +0 -0
  148. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/docker/compose.md +0 -0
  149. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/docker/dockerfile.md +0 -0
  150. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/git/SKILL.md +0 -0
  151. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/grill-me/SKILL.md +0 -0
  152. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/grill-with-docs/SKILL.md +0 -0
  153. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/handoff/SKILL.md +0 -0
  154. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/improve-codebase-architecture/SKILL.md +0 -0
  155. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/ingest/SKILL.md +0 -0
  156. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/migrate-memory/SKILL.md +0 -0
  157. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/obsidian-memory/SKILL.md +0 -0
  158. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/prototype/LOGIC.md +0 -0
  159. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/prototype/SKILL.md +0 -0
  160. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/prototype/UI.md +0 -0
  161. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/SKILL.md +0 -0
  162. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/controllers.md +0 -0
  163. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/frontend.md +0 -0
  164. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/infra.md +0 -0
  165. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/models.md +0 -0
  166. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/testing.md +0 -0
  167. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/views.md +0 -0
  168. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/setup-project-context/SKILL.md +0 -0
  169. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/to-issues/SKILL.md +0 -0
  170. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/to-prd/SKILL.md +0 -0
  171. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/write-a-skill/SKILL.md +0 -0
  172. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/skills/zoom-out/SKILL.md +0 -0
  173. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/templates/__init__.py +0 -0
  174. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/templates/__pycache__/__init__.cpython-314.pyc +0 -0
  175. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/__init__.py +0 -0
  176. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-314.pyc +0 -0
  177. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-314.pyc +0 -0
  178. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
  179. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/claude.py +0 -0
  180. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/opencode.py +0 -0
  181. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/doctor_checks.py +0 -0
  182. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/domain/__init__.py +0 -0
  183. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/domain/agent.py +0 -0
  184. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/domain/diagnostics.py +0 -0
  185. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/domain/diff.py +0 -0
  186. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/domain/model.py +0 -0
  187. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/domain/role.py +0 -0
  188. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/domain/rule.py +0 -0
  189. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/domain/skill.py +0 -0
  190. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/domain/state.py +0 -0
  191. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/registries/__init__.py +0 -0
  192. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/registries/_base.py +0 -0
  193. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/registries/model_registry.py +0 -0
  194. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/registries/role_registry.py +0 -0
  195. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/registries/rule_registry.py +0 -0
  196. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/registries/skill_registry.py +0 -0
  197. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/scripts/__init__.py +0 -0
  198. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/scripts/_claude_backend.py +0 -0
  199. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/scripts/_formatting.py +0 -0
  200. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/scripts/_pricing.py +0 -0
  201. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/scripts/cost_report.py +0 -0
  202. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/__init__.py +0 -0
  203. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/_memory_utils.py +0 -0
  204. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/counts.py +0 -0
  205. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/diagnostics/__init__.py +0 -0
  206. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/diagnostics/_checks.py +0 -0
  207. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/diagnostics/_display.py +0 -0
  208. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/diff.py +0 -0
  209. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/install_state_builder.py +0 -0
  210. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/local_backend.py +0 -0
  211. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/memory_router.py +0 -0
  212. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/migrations/__init__.py +0 -0
  213. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/obsidian_backend.py +0 -0
  214. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/session_context.py +0 -0
  215. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/settings_writer.py +0 -0
  216. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/ui.py +0 -0
  217. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/user_config.py +0 -0
  218. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/wiki/__init__.py +0 -0
  219. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/wiki/wiki_index.py +0 -0
  220. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/wiki/wiki_ingest.py +0 -0
  221. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/wiki/wiki_lint.py +0 -0
  222. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/wiki/wiki_query.py +0 -0
  223. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/wiki/wiki_storage.py +0 -0
  224. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes/services/wiki_backend.py +0 -0
  225. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes.egg-info/dependency_links.txt +0 -0
  226. {agent_notes-2.27.0 → agent_notes-2.29.0}/agent_notes.egg-info/entry_points.txt +0 -0
  227. {agent_notes-2.27.0 → agent_notes-2.29.0}/setup.cfg +0 -0
  228. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/__init__.py +0 -0
  229. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/commands/__init__.py +0 -0
  230. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/commands/test_config_command.py +0 -0
  231. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/commands/test_doctor_command.py +0 -0
  232. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/commands/test_info_command.py +0 -0
  233. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/commands/test_install_command.py +0 -0
  234. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/commands/test_list_command.py +0 -0
  235. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/commands/test_regenerate_command.py +0 -0
  236. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/commands/test_uninstall_command.py +0 -0
  237. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/commands/test_validate_command.py +0 -0
  238. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/memory/__init__.py +0 -0
  239. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/memory/test_memory_add_local_backend.py +0 -0
  240. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/memory/test_memory_command.py +0 -0
  241. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/scripts/__init__.py +0 -0
  242. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/functional/scripts/test_release_script.py +0 -0
  243. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/integration/__init__.py +0 -0
  244. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/integration/build_output/__init__.py +0 -0
  245. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/integration/build_output/test_build_output.py +0 -0
  246. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/integration/install/__init__.py +0 -0
  247. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/integration/install/test_install_methods.py +0 -0
  248. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/integration/plugin_builders/__init__.py +0 -0
  249. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/integration/plugin_builders/test_plugin_builders.py +0 -0
  250. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/plugins/__init__.py +0 -0
  251. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/plugins/claude/__init__.py +0 -0
  252. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/plugins/claude/test_agents.py +0 -0
  253. {agent_notes-2.27.0/tests/unit → agent_notes-2.29.0/tests/plugins/codex}/__init__.py +0 -0
  254. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/plugins/test_skills.py +0 -0
  255. {agent_notes-2.27.0/tests/unit/commands → agent_notes-2.29.0/tests/unit}/__init__.py +0 -0
  256. {agent_notes-2.27.0/tests/unit/registries → agent_notes-2.29.0/tests/unit/commands}/__init__.py +0 -0
  257. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/commands/test_cost_report_subcommand.py +0 -0
  258. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/commands/test_count_agents.py +0 -0
  259. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/commands/test_info.py +0 -0
  260. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/commands/test_memory_add_description.py +0 -0
  261. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/commands/test_memory_imports.py +0 -0
  262. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/commands/test_memory_migrate.py +0 -0
  263. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/commands/test_wizard_imports.py +0 -0
  264. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/commands/test_wizard_orchestrator_skip.py +0 -0
  265. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/commands/test_wizard_preflight.py +0 -0
  266. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/commands/wizard/test_cost_report_step.py +0 -0
  267. {agent_notes-2.27.0/tests/unit/scripts → agent_notes-2.29.0/tests/unit/registries}/__init__.py +0 -0
  268. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/registries/test_registries.py +0 -0
  269. {agent_notes-2.27.0/tests/unit/services → agent_notes-2.29.0/tests/unit/scripts}/__init__.py +0 -0
  270. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/scripts/test_cost_report.py +0 -0
  271. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/scripts/test_cost_report_scoping.py +0 -0
  272. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/scripts/test_formatting_tty.py +0 -0
  273. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/scripts/test_opencode_backend_pricing.py +0 -0
  274. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/scripts/test_time_aggregation.py +0 -0
  275. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_build_functions.py +0 -0
  276. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_credential_filter.py +0 -0
  277. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_fs.py +0 -0
  278. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_installer_hooks.py +0 -0
  279. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_installer_plan.py +0 -0
  280. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_local_backend.py +0 -0
  281. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_memory_backend.py +0 -0
  282. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_memory_backend_io.py +0 -0
  283. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_memory_router.py +0 -0
  284. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_rendering_includes.py +0 -0
  285. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_session_context.py +0 -0
  286. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_settings_writer.py +0 -0
  287. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_skill_filtering.py +0 -0
  288. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_state_store.py +0 -0
  289. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_user_config_cost_report.py +0 -0
  290. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_wiki_backend.py +0 -0
  291. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/services/test_wiki_imports.py +0 -0
  292. {agent_notes-2.27.0 → agent_notes-2.29.0}/tests/unit/test_import_health.py +0 -0
  293. {agent_notes-2.27.0 → agent_notes-2.29.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.27.0
3
+ Version: 2.29.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
@@ -24,8 +24,10 @@ Description-Content-Type: text/markdown
24
24
  License-File: LICENSE
25
25
  Requires-Dist: pyyaml>=6.0
26
26
  Requires-Dist: tomli>=1.1.0; python_version < "3.11"
27
+ Requires-Dist: tomli-w>=1.0.0
27
28
  Provides-Extra: dev
28
29
  Requires-Dist: pytest>=7.0; extra == "dev"
30
+ Requires-Dist: build>=1.0; extra == "dev"
29
31
  Dynamic: license-file
30
32
 
31
33
  # agent-notes
@@ -54,9 +56,9 @@ agent-notes doctor
54
56
 
55
57
  ### PyPI (recommended)
56
58
 
59
+ **pipx (isolated environment, no manual venv needed):**
60
+
57
61
  ```bash
58
- pip install agent-notes
59
- # or
60
62
  pipx install agent-notes
61
63
  agent-notes install
62
64
  ```
@@ -64,22 +66,35 @@ agent-notes install
64
66
  Update anytime:
65
67
 
66
68
  ```bash
67
- pip install --upgrade agent-notes && agent-notes install
68
- # or
69
69
  pipx upgrade agent-notes && agent-notes install
70
70
  ```
71
71
 
72
+ **venv + pip (if you prefer to manage your own environment):**
73
+
74
+ ```bash
75
+ python -m venv .venv && source .venv/bin/activate
76
+ pip install agent-notes
77
+ agent-notes install
78
+ ```
79
+
80
+ Update anytime:
81
+
82
+ ```bash
83
+ pip install --upgrade agent-notes && agent-notes install
84
+ ```
85
+
72
86
  ### Local build (developers)
73
87
 
74
88
  ```bash
75
89
  git clone https://github.com/rubakas/agent-notes.git
76
90
  cd agent-notes
77
- python -m build # produces dist/*.whl
78
- pipx install dist/*.whl # or pip install --user dist/*.whl
91
+ pipx install -e . # editable: CLI runs live from the working tree
79
92
  agent-notes install
80
93
  ```
81
94
 
82
- Iteration loop: edit source `python -m build` `pipx reinstall dist/*.whl`. Not editable mode. Not `pip install -e .`.
95
+ With editable mode, the CLI runs directly from your source files. After edits, run `agent-notes install` to rebuild `dist/` and reinstall into your Claude config. No rebuild command needed between iterations.
96
+
97
+ To produce a release artifact (wheel for distribution), use `python -m build` + `pipx reinstall dist/*.whl` — this is separate from local development.
83
98
 
84
99
  ### Plugin (limited functionality)
85
100
 
@@ -162,148 +177,57 @@ Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonn
162
177
  <details>
163
178
  <summary>Memory Storage</summary>
164
179
 
165
- Agents accumulate knowledge across sessions using one of three storage options, chosen during `agent-notes install`.
166
-
167
- ### Storage comparison
180
+ Agents accumulate knowledge across sessions. Choose a backend during `agent-notes install`:
168
181
 
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 |
182
+ **Backends:**
183
+ - **`default - Claude Code built-in md files`** (default) — Plain markdown in `~/.claude/agent-memory/<agent>/`. No external tools. Simple, portable.
184
+ - **`Obsidian - session`** — Per-project session notes in Obsidian vault. Auto-creates `<vault>/<project>/` with categories: `Patterns/`, `Decisions/`, `Mistakes/`, `Context/`, `Sessions/`. Includes YAML frontmatter and `[[wikilinks]]`.
185
+ - **`Obsidian - brain`** Karpathy's LLM Wiki pattern. Per-project knowledge brain in `<vault>/<project>/raw/` and `wiki/` (sources, concepts, entities, synthesis, sessions). Supports ingest/query/lint operations.
186
+ - **`None`** Disables memory.
175
187
 
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:**
188
+ **To reconfigure after install:**
181
189
  ```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/
190
+ agent-notes install --reconfigure # switch storage
191
+ agent-notes config memory # interactive backend selector
188
192
  ```
189
193
 
190
- ### Obsidian (per-project sessions)
194
+ ### Local (default)
191
195
 
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/`.
196
+ **Storage:** `~/.claude/agent-memory/<agent>/`
193
197
 
194
- **Structure:**
195
- ```
196
- <vault-root>/<project-name>/
197
- ├── Patterns/
198
- ├── Decisions/
199
- ├── Mistakes/
200
- ├── Context/
201
- ├── Sessions/
202
- └── Index.md
198
+ ```bash
199
+ agent-notes memory list # list all notes by agent
200
+ agent-notes memory show <agent> # show one agent's notes
201
+ agent-notes memory size # disk usage
202
+ agent-notes memory reset [agent] # clear memory (confirmation required)
203
+ agent-notes memory export # back up to memory-backup/
204
+ agent-notes memory import # restore from memory-backup/
203
205
  ```
204
206
 
205
- **Note types:** pattern, decision, mistake, context, session
207
+ ### Obsidian (session or brain mode)
206
208
 
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
209
+ **Storage:** `<vault-root>/<project-name>/` (auto-created per CWD)
212
210
 
213
- **Commands:**
211
+ **Session mode commands:**
214
212
  ```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
213
+ agent-notes memory init # create folder structure and Index.md
214
+ agent-notes memory list # list all notes (by category or agent)
215
+ agent-notes memory vault # show storage path and init status
216
+ agent-notes memory index # regenerate Index.md
219
217
  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
218
+ agent-notes memory reset [agent] # clear memory (confirmation required)
219
+ agent-notes memory export # back up to memory-backup/
220
+ agent-notes memory import # restore from memory-backup/
258
221
  ```
259
222
 
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 pages, data gaps, orphan pages, missing cross-references
271
-
272
- **Commands:**
223
+ **Brain mode adds:**
273
224
  ```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
225
  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
226
+ agent-notes memory query <question> # search wiki pages
227
+ agent-notes memory lint # health-check
286
228
  ```
287
229
 
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`.
230
+ **Setup:** Run `agent-notes install` and choose `Obsidian - session` or `Obsidian - brain`. The wizard auto-detects vaults under `~/Documents`, `~/Desktop`, and `~`. Then run `agent-notes memory init`.
307
231
 
308
232
  </details>
309
233
 
@@ -446,20 +370,44 @@ agent-notes config provider <name> # check if configured (without exposing
446
370
 
447
371
  ### Building and testing
448
372
 
449
- Python 3.10+ required. Build from source and run tests:
373
+ Python 3.10+ required. Create an isolated environment and run tests:
450
374
 
451
375
  ```bash
452
- python -m build && pipx install dist/*.whl
453
- python3 -m pytest tests/ -q
376
+ python -m venv .venv && source .venv/bin/activate
377
+ pip install -e ".[dev]" # installs runtime deps + pytest
378
+ pytest -q
454
379
  ```
455
380
 
381
+ The test suite automatically builds `dist/` before collection (via the `pytest_sessionstart` hook in `tests/conftest.py`), so you do not need to run `python -m build` manually before testing.
382
+
456
383
  ### Development workflow
457
384
 
458
- 1. Edit source files in `agent_notes/data/` or Python modules
459
- 2. Run `python -m build` to rebuild the wheel
460
- 3. Run `pipx reinstall dist/*.whl` to install the updated version
385
+ **One-time setup (choose one):**
386
+
387
+ - Inside a venv: `python -m venv .venv && source .venv/bin/activate && pip install -e ".[dev]"`
388
+ - Or expose the CLI globally via pipx (editable): `pipx install -e .`
389
+
390
+ **Iteration loop:**
391
+
392
+ 1. Edit source in `agent_notes/data/` (skills, rules, agents, etc.) or Python modules
393
+ 2. Run `agent-notes install` to rebuild `dist/` and reinstall into your Claude config
394
+ 3. For a clean reset, run `agent-notes uninstall && agent-notes install`
461
395
  4. Run `agent-notes validate` to lint configuration files
462
- 5. Run tests: `python3 -m pytest tests/ -q`
396
+ 5. Run tests: `pytest -q` (the suite auto-builds `dist/` first via the conftest hook)
397
+
398
+ **Full local reset (one-liner):**
399
+
400
+ ```bash
401
+ pipx uninstall agent-notes && pipx install -e . && agent-notes uninstall && agent-notes install
402
+ ```
403
+
404
+ This command swaps any wheel install for an editable one and clears your Claude config. After this, future edits only need `agent-notes install` (or `agent-notes uninstall && agent-notes install` for a clean wipe).
405
+
406
+ **Profiles:**
407
+
408
+ By default, `agent-notes install` re-runs the interactive wizard and prompts for an optional profile label. To reinstall non-interactively into the same profile, use `agent-notes install --profile <label>` (e.g. `work` → installs into `~/.claude-work`).
409
+
410
+ The plugin build scripts (`scripts/build-claude-plugin.sh`, `scripts/build-opencode-plugin.sh`) automatically use `.venv/bin/python` when present, fall back to system `python3`, and honor a `PYTHON=` override.
463
411
 
464
412
  ### Test structure
465
413
 
@@ -467,18 +415,38 @@ python3 -m pytest tests/ -q
467
415
  - `tests/integration/` — Build output and artifact validation
468
416
  - `tests/plugins/` — Plugin artifact validation
469
417
 
418
+ ### Releasing
419
+
420
+ The release process is automated via `scripts/release`, which runs **exclusively against the project `.venv`** (invoking `.venv/bin/python` directly, never system `python3`). The pre-flight phase aborts with a clear error if `.venv` does not exist or cannot import `agent_notes`, `tomli_w`, `build`, and `twine`.
421
+
422
+ **Provision the release environment once:**
423
+
424
+ ```bash
425
+ pip install -e ".[dev]" twine
426
+ ```
427
+
428
+ **Run the release:**
429
+
430
+ ```bash
431
+ scripts/release # Full release: tests, build, PyPI upload, git tag, marketplace bundle
432
+ scripts/release --dry-run # Check-only: tests, build, twine check, smoke install; skip upload
433
+ ```
434
+
435
+ The `--dry-run` flag is useful to validate the entire workflow before committing tags and pushing to PyPI.
436
+
470
437
  ### Contributing guidelines
471
438
 
472
439
  When adding new content:
473
440
 
474
441
  1. **Edit source files** — all changes go in `agent_notes/data/` directory
475
- 2. **Run build** — `python -m build` to generate platform configs
476
- 3. **Run tests** — `python3 -m pytest tests/ -q` before committing
477
- 4. **Validate** — `agent-notes validate` before committing
478
- 5. **Keep it generic** — remove app-specific references
479
- 6. **Show examples** — include code samples with explanations
480
- 7. **Stay modular** — each skill should be independently usable
481
- 8. **Stay concise** — agent prompts under 60 lines
442
+ 2. **Rebuild and test** — `agent-notes install` rebuilds `dist/` and reinstalls; `pytest -q` auto-builds first
443
+ 3. **Validate** — `agent-notes validate` before committing
444
+ 4. **Keep it generic** — remove app-specific references
445
+ 5. **Show examples** — include code samples with explanations
446
+ 6. **Stay modular** — each skill should be independently usable
447
+ 7. **Stay concise** — agent prompts under 60 lines
448
+
449
+ (Note: `python -m build` is only needed to produce a release wheel for distribution, not for local development.)
482
450
 
483
451
  ### Architecture
484
452