agent-notes 2.28.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.28.0 → agent_notes-2.29.0}/PKG-INFO +112 -145
  2. {agent_notes-2.28.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.28.0 → agent_notes-2.29.0}/agent_notes/commands/config.py +5 -15
  5. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/wizard/__init__.py +4 -14
  6. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/coder.md +1 -0
  7. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/refactorer.md +1 -0
  8. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/execution.md +8 -0
  9. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/guardrails.md +1 -0
  10. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/pipelines.md +2 -0
  11. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/verification.md +4 -0
  12. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/plugin/claude.yaml +1 -0
  13. agent_notes-2.29.0/agent_notes/data/skills/chrome-test/SKILL.md +262 -0
  14. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/__pycache__/codex.cpython-314.pyc +0 -0
  15. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes.egg-info/PKG-INFO +112 -145
  16. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes.egg-info/SOURCES.txt +1 -0
  17. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes.egg-info/requires.txt +1 -0
  18. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes.egg-info/top_level.txt +0 -1
  19. {agent_notes-2.28.0 → agent_notes-2.29.0}/pyproject.toml +1 -1
  20. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/conftest.py +2 -1
  21. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/commands/test_wizard_steps.py +3 -5
  22. agent_notes-2.28.0/agent_notes/VERSION +0 -1
  23. {agent_notes-2.28.0 → agent_notes-2.29.0}/LICENSE +0 -0
  24. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/__init__.py +0 -0
  25. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/__main__.py +0 -0
  26. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/cli.py +0 -0
  27. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/__init__.py +0 -0
  28. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/_install_helpers.py +0 -0
  29. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/build.py +0 -0
  30. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/doctor.py +0 -0
  31. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/hook.py +0 -0
  32. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/info.py +0 -0
  33. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/install.py +0 -0
  34. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/list.py +0 -0
  35. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/memory/__init__.py +0 -0
  36. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/memory/_common.py +0 -0
  37. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/memory/migrate.py +0 -0
  38. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/memory/notes.py +0 -0
  39. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/memory/reset.py +0 -0
  40. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/memory/transfer.py +0 -0
  41. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/memory/vault.py +0 -0
  42. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/memory/wiki.py +0 -0
  43. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/regenerate.py +0 -0
  44. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/set_role.py +0 -0
  45. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/uninstall.py +0 -0
  46. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/validate.py +0 -0
  47. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/wizard/_common.py +0 -0
  48. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/wizard/cost_report.py +0 -0
  49. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/wizard/execute.py +0 -0
  50. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/commands/wizard/orchestrator.py +0 -0
  51. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/config.py +0 -0
  52. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/constants.py +0 -0
  53. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/agents.yaml +0 -0
  54. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/analyst.md +0 -0
  55. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/api-reviewer.md +0 -0
  56. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/architect.md +0 -0
  57. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/database-specialist.md +0 -0
  58. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/debugger.md +0 -0
  59. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/devil.md +0 -0
  60. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/devops.md +0 -0
  61. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/explorer.md +0 -0
  62. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/integrations.md +0 -0
  63. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/lead.md +0 -0
  64. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/performance-profiler.md +0 -0
  65. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/reviewer.md +0 -0
  66. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/security-auditor.md +0 -0
  67. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/cost_reporting.md +0 -0
  68. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/hard_limits.md +0 -0
  69. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/phase0.md +0 -0
  70. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/review.md +0 -0
  71. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/shared/wiki_compile.md +0 -0
  72. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/system-auditor.md +0 -0
  73. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/tech-writer.md +0 -0
  74. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/test-runner.md +0 -0
  75. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/test-writer.md +0 -0
  76. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/agents/wiki-compiler.md +0 -0
  77. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/cli/claude.yaml +0 -0
  78. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/cli/codex.yaml +0 -0
  79. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/cli/copilot.yaml +0 -0
  80. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/cli/opencode.yaml +0 -0
  81. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/commands/brainstorm.md +0 -0
  82. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/commands/debug.md +0 -0
  83. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/commands/review.md +0 -0
  84. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/global-claude.md +0 -0
  85. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/global-codex.md +0 -0
  86. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/global-copilot.md +0 -0
  87. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/global-opencode.md +0 -0
  88. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/hooks/session-context.md.tpl +0 -0
  89. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-haiku-4-5.yaml +0 -0
  90. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-opus-4-1.yaml +0 -0
  91. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-opus-4-5.yaml +0 -0
  92. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-opus-4-6.yaml +0 -0
  93. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-opus-4-7.yaml +0 -0
  94. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-opus-4-8.yaml +0 -0
  95. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-sonnet-4-5.yaml +0 -0
  96. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-sonnet-4-6.yaml +0 -0
  97. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/models/claude-sonnet-4.yaml +0 -0
  98. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/models/gpt-5-4-mini.yaml +0 -0
  99. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/models/gpt-5-4.yaml +0 -0
  100. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/models/gpt-5-5.yaml +0 -0
  101. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/plugin/opencode-index.js.template +0 -0
  102. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/plugin/opencode.yaml +0 -0
  103. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/pricing.yaml +0 -0
  104. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/roles/orchestrator.yaml +0 -0
  105. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/roles/reasoner.yaml +0 -0
  106. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/roles/scout.yaml +0 -0
  107. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/roles/worker.yaml +0 -0
  108. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/rules/code-quality.md +0 -0
  109. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/rules/safety.md +0 -0
  110. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/brainstorming/SKILL.md +0 -0
  111. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/caveman/SKILL.md +0 -0
  112. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/code-review/SKILL.md +0 -0
  113. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/debugging-protocol/SKILL.md +0 -0
  114. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/docker/SKILL.md +0 -0
  115. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/docker/compose.md +0 -0
  116. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/docker/dockerfile.md +0 -0
  117. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/git/SKILL.md +0 -0
  118. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/grill-me/SKILL.md +0 -0
  119. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/grill-with-docs/SKILL.md +0 -0
  120. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/handoff/SKILL.md +0 -0
  121. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/improve-codebase-architecture/SKILL.md +0 -0
  122. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/ingest/SKILL.md +0 -0
  123. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/migrate-memory/SKILL.md +0 -0
  124. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/obsidian-memory/SKILL.md +0 -0
  125. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/prototype/LOGIC.md +0 -0
  126. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/prototype/SKILL.md +0 -0
  127. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/prototype/UI.md +0 -0
  128. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/SKILL.md +0 -0
  129. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/controllers.md +0 -0
  130. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/frontend.md +0 -0
  131. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/infra.md +0 -0
  132. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/models.md +0 -0
  133. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/testing.md +0 -0
  134. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/rails/views.md +0 -0
  135. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/refactoring-protocol/SKILL.md +0 -0
  136. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/rsi/SKILL.md +0 -0
  137. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/setup-project-context/SKILL.md +0 -0
  138. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/tdd/SKILL.md +0 -0
  139. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/to-issues/SKILL.md +0 -0
  140. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/to-prd/SKILL.md +0 -0
  141. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/write-a-skill/SKILL.md +0 -0
  142. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/skills/zoom-out/SKILL.md +0 -0
  143. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/__init__.py +0 -0
  144. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/__pycache__/__init__.cpython-312.pyc +0 -0
  145. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/__pycache__/__init__.cpython-314.pyc +0 -0
  146. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/__init__.py +0 -0
  147. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-312.pyc +0 -0
  148. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-314.pyc +0 -0
  149. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-312.pyc +0 -0
  150. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-314.pyc +0 -0
  151. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/__pycache__/codex.cpython-312.pyc +0 -0
  152. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-312.pyc +0 -0
  153. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
  154. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/claude.py +0 -0
  155. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/codex.py +0 -0
  156. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/data/templates/frontmatter/opencode.py +0 -0
  157. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/doctor_checks.py +0 -0
  158. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/domain/__init__.py +0 -0
  159. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/domain/agent.py +0 -0
  160. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/domain/cli_backend.py +0 -0
  161. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/domain/diagnostics.py +0 -0
  162. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/domain/diff.py +0 -0
  163. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/domain/model.py +0 -0
  164. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/domain/role.py +0 -0
  165. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/domain/rule.py +0 -0
  166. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/domain/skill.py +0 -0
  167. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/domain/state.py +0 -0
  168. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/registries/__init__.py +0 -0
  169. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/registries/_base.py +0 -0
  170. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/registries/agent_registry.py +0 -0
  171. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/registries/cli_registry.py +0 -0
  172. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/registries/model_registry.py +0 -0
  173. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/registries/role_registry.py +0 -0
  174. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/registries/rule_registry.py +0 -0
  175. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/registries/skill_registry.py +0 -0
  176. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/scripts/__init__.py +0 -0
  177. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/scripts/_claude_backend.py +0 -0
  178. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/scripts/_formatting.py +0 -0
  179. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/scripts/_opencode_backend.py +0 -0
  180. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/scripts/_pricing.py +0 -0
  181. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/scripts/cost_report.py +0 -0
  182. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/__init__.py +0 -0
  183. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/_memory_utils.py +0 -0
  184. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/counts.py +0 -0
  185. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/credentials.py +0 -0
  186. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/diagnostics/__init__.py +0 -0
  187. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/diagnostics/_checks.py +0 -0
  188. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/diagnostics/_display.py +0 -0
  189. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/diagnostics/_fix.py +0 -0
  190. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/diff.py +0 -0
  191. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/fs.py +0 -0
  192. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/install_state_builder.py +0 -0
  193. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/installer.py +0 -0
  194. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/local_backend.py +0 -0
  195. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/memory_router.py +0 -0
  196. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/migrations/__init__.py +0 -0
  197. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/obsidian_backend.py +0 -0
  198. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/rendering.py +0 -0
  199. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/session_context.py +0 -0
  200. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/settings_writer.py +0 -0
  201. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/state_store.py +0 -0
  202. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/ui.py +0 -0
  203. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/user_config.py +0 -0
  204. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/validation.py +0 -0
  205. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/wiki/__init__.py +0 -0
  206. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/wiki/_wiki_utils.py +0 -0
  207. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/wiki/wiki_index.py +0 -0
  208. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/wiki/wiki_ingest.py +0 -0
  209. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/wiki/wiki_lint.py +0 -0
  210. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/wiki/wiki_query.py +0 -0
  211. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/wiki/wiki_storage.py +0 -0
  212. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes/services/wiki_backend.py +0 -0
  213. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes.egg-info/dependency_links.txt +0 -0
  214. {agent_notes-2.28.0 → agent_notes-2.29.0}/agent_notes.egg-info/entry_points.txt +0 -0
  215. {agent_notes-2.28.0 → agent_notes-2.29.0}/setup.cfg +0 -0
  216. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/__init__.py +0 -0
  217. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/commands/__init__.py +0 -0
  218. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/commands/test_config_command.py +0 -0
  219. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/commands/test_doctor_command.py +0 -0
  220. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/commands/test_info_command.py +0 -0
  221. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/commands/test_install_command.py +0 -0
  222. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/commands/test_list_command.py +0 -0
  223. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/commands/test_regenerate_command.py +0 -0
  224. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/commands/test_uninstall_command.py +0 -0
  225. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/commands/test_validate_command.py +0 -0
  226. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/commands/test_validate_path_filter.py +0 -0
  227. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/memory/__init__.py +0 -0
  228. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/memory/test_memory_add_local_backend.py +0 -0
  229. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/memory/test_memory_command.py +0 -0
  230. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/scripts/__init__.py +0 -0
  231. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/functional/scripts/test_release_script.py +0 -0
  232. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/integration/__init__.py +0 -0
  233. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/integration/build_output/__init__.py +0 -0
  234. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/integration/build_output/test_build_output.py +0 -0
  235. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/integration/install/__init__.py +0 -0
  236. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/integration/install/test_install_methods.py +0 -0
  237. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/integration/plugin_builders/__init__.py +0 -0
  238. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/integration/plugin_builders/test_plugin_builders.py +0 -0
  239. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/plugins/__init__.py +0 -0
  240. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/plugins/claude/__init__.py +0 -0
  241. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/plugins/claude/test_agents.py +0 -0
  242. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/plugins/codex/__init__.py +0 -0
  243. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/plugins/codex/test_agents.py +0 -0
  244. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/plugins/test_skills.py +0 -0
  245. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/__init__.py +0 -0
  246. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/commands/__init__.py +0 -0
  247. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/commands/test_cost_report_subcommand.py +0 -0
  248. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/commands/test_count_agents.py +0 -0
  249. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/commands/test_info.py +0 -0
  250. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/commands/test_memory_add_description.py +0 -0
  251. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/commands/test_memory_imports.py +0 -0
  252. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/commands/test_memory_migrate.py +0 -0
  253. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/commands/test_wizard_imports.py +0 -0
  254. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/commands/test_wizard_orchestrator_skip.py +0 -0
  255. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/commands/test_wizard_preflight.py +0 -0
  256. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/commands/wizard/test_cost_report_step.py +0 -0
  257. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/registries/__init__.py +0 -0
  258. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/registries/test_cli_registry.py +0 -0
  259. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/registries/test_registries.py +0 -0
  260. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/scripts/__init__.py +0 -0
  261. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/scripts/test_cost_report.py +0 -0
  262. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/scripts/test_cost_report_scoping.py +0 -0
  263. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/scripts/test_formatting_tty.py +0 -0
  264. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/scripts/test_opencode_backend_connection.py +0 -0
  265. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/scripts/test_opencode_backend_pricing.py +0 -0
  266. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/scripts/test_time_aggregation.py +0 -0
  267. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/__init__.py +0 -0
  268. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_build_functions.py +0 -0
  269. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_credential_filter.py +0 -0
  270. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_credentials.py +0 -0
  271. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_fs.py +0 -0
  272. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_installer_codex.py +0 -0
  273. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_installer_hook_quoting.py +0 -0
  274. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_installer_hooks.py +0 -0
  275. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_installer_plan.py +0 -0
  276. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_local_backend.py +0 -0
  277. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_memory_backend.py +0 -0
  278. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_memory_backend_io.py +0 -0
  279. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_memory_router.py +0 -0
  280. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_rendering_includes.py +0 -0
  281. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_session_context.py +0 -0
  282. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_settings_writer.py +0 -0
  283. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_skill_filtering.py +0 -0
  284. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_state_store.py +0 -0
  285. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_user_config_cost_report.py +0 -0
  286. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_validation.py +0 -0
  287. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_wiki_atomic_write.py +0 -0
  288. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_wiki_backend.py +0 -0
  289. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/services/test_wiki_imports.py +0 -0
  290. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/templates/__init__.py +0 -0
  291. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/templates/test_codex_frontmatter.py +0 -0
  292. {agent_notes-2.28.0 → agent_notes-2.29.0}/tests/unit/test_import_health.py +0 -0
  293. {agent_notes-2.28.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.28.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
@@ -27,6 +27,7 @@ Requires-Dist: tomli>=1.1.0; python_version < "3.11"
27
27
  Requires-Dist: tomli-w>=1.0.0
28
28
  Provides-Extra: dev
29
29
  Requires-Dist: pytest>=7.0; extra == "dev"
30
+ Requires-Dist: build>=1.0; extra == "dev"
30
31
  Dynamic: license-file
31
32
 
32
33
  # agent-notes
@@ -55,9 +56,9 @@ agent-notes doctor
55
56
 
56
57
  ### PyPI (recommended)
57
58
 
59
+ **pipx (isolated environment, no manual venv needed):**
60
+
58
61
  ```bash
59
- pip install agent-notes
60
- # or
61
62
  pipx install agent-notes
62
63
  agent-notes install
63
64
  ```
@@ -65,22 +66,35 @@ agent-notes install
65
66
  Update anytime:
66
67
 
67
68
  ```bash
68
- pip install --upgrade agent-notes && agent-notes install
69
- # or
70
69
  pipx upgrade agent-notes && agent-notes install
71
70
  ```
72
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
+
73
86
  ### Local build (developers)
74
87
 
75
88
  ```bash
76
89
  git clone https://github.com/rubakas/agent-notes.git
77
90
  cd agent-notes
78
- python -m build # produces dist/*.whl
79
- pipx install dist/*.whl # or pip install --user dist/*.whl
91
+ pipx install -e . # editable: CLI runs live from the working tree
80
92
  agent-notes install
81
93
  ```
82
94
 
83
- 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.
84
98
 
85
99
  ### Plugin (limited functionality)
86
100
 
@@ -163,148 +177,57 @@ Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonn
163
177
  <details>
164
178
  <summary>Memory Storage</summary>
165
179
 
166
- Agents accumulate knowledge across sessions using one of three storage options, chosen during `agent-notes install`.
167
-
168
- ### Storage comparison
180
+ Agents accumulate knowledge across sessions. Choose a backend during `agent-notes install`:
169
181
 
170
- | Feature | Local | Obsidian | Wiki |
171
- |---|---|---|---|
172
- | Location | `~/.claude/agent-memory/` | Obsidian vault | Obsidian vault |
173
- | Project scoping | No | Yes (per CWD) | Yes (per CWD) |
174
- | Organization | Per-agent folders | Categories (Patterns, Decisions, etc.) | Wiki pages (sources, concepts, entities) |
175
- | 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.
176
187
 
177
- ### Local (default)
178
-
179
- Plain markdown storage in `~/.claude/agent-memory/<agent>/` — one folder per agent, no project scoping or cross-referencing. Simplest setup, no external tools needed.
180
-
181
- **Commands:**
188
+ **To reconfigure after install:**
182
189
  ```bash
183
- agent-notes memory list # list all notes by agent
184
- agent-notes memory show <agent> # show one agent's notes
185
- agent-notes memory size # disk usage
186
- agent-notes memory reset [agent] # clear memory (confirmation required)
187
- agent-notes memory export # back up to memory-backup/
188
- agent-notes memory import # restore from memory-backup/
190
+ agent-notes install --reconfigure # switch storage
191
+ agent-notes config memory # interactive backend selector
189
192
  ```
190
193
 
191
- ### Obsidian (per-project sessions)
194
+ ### Local (default)
192
195
 
193
- 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>/`
194
197
 
195
- **Structure:**
196
- ```
197
- <vault-root>/<project-name>/
198
- ├── Patterns/
199
- ├── Decisions/
200
- ├── Mistakes/
201
- ├── Context/
202
- ├── Sessions/
203
- └── 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/
204
205
  ```
205
206
 
206
- **Note types:** pattern, decision, mistake, context, session
207
+ ### Obsidian (session or brain mode)
207
208
 
208
- **Key features:**
209
- - YAML frontmatter for filtering and Dataview queries (created_at, type, agent, project, tags)
210
- - 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]]`
211
- - Plan mirroring: plans created during a session are automatically mirrored as Decision notes
212
- - Visual browsing in Obsidian with backlinks and Dataview queries
209
+ **Storage:** `<vault-root>/<project-name>/` (auto-created per CWD)
213
210
 
214
- **Commands:**
211
+ **Session mode commands:**
215
212
  ```bash
216
- agent-notes memory init # create folder structure and Index.md
217
- agent-notes memory list # list all notes (by category or agent)
218
- agent-notes memory vault # show storage, path, and init status
219
- 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
220
217
  agent-notes memory add <title> <body> [type] [agent] # type: pattern|decision|mistake|context|session
221
- agent-notes memory show <agent> # show one agent's notes
222
- agent-notes memory reset [agent] # clear memory (confirmation required)
223
- agent-notes memory export # back up to memory-backup/
224
- agent-notes memory import # restore from memory-backup/
225
- agent-notes install --reconfigure # switch storage
226
- ```
227
-
228
- **Note format example:**
229
- ```markdown
230
- ---
231
- created_at: 2026-04-28T19:30:35Z
232
- type: pattern
233
- agent: coder
234
- project: rubakas
235
- tags: [rails, models]
236
- ---
237
-
238
- # Rails Enum Prefix
239
-
240
- Always use `_prefix: true` with Rails enums to avoid method name collisions.
241
- ```
242
-
243
- ### Wiki (per-project knowledge brain)
244
-
245
- 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.
246
-
247
- **Structure:**
248
- ```
249
- <vault-root>/<project-name>/
250
- ├── raw/ # immutable source material
251
- └── wiki/
252
- ├── sources/ # ingested source pages
253
- ├── concepts/ # domain concepts
254
- ├── entities/ # external tools/services
255
- ├── synthesis/ # cross-cutting themes
256
- ├── sessions/ # session logs
257
- ├── index.md
258
- └── 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/
259
221
  ```
260
222
 
261
- **Key operations:**
262
-
263
- - **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.
264
-
265
- Use during Claude Code sessions: `/ingest https://docs.example.com/api` or `/ingest ./path/to/file.py`
266
-
267
- CLI fallback: `agent-notes memory ingest "<title>" "<body>" "<concepts>" "<entities>" "<tags>"`
268
-
269
- - **Query** — Search wiki pages, synthesize answers with citations, optionally file answers back as new pages
270
-
271
- - **Lint** — Health-check for contradictions, stale pages, data gaps, orphan pages, missing cross-references
272
-
273
- **Commands:**
223
+ **Brain mode adds:**
274
224
  ```bash
275
- agent-notes memory init # create folder structure and Index.md
276
- agent-notes memory list # list all notes
277
- agent-notes memory vault # show storage, path, and init status
278
- agent-notes memory index # regenerate Index.md
279
- agent-notes memory add <title> <body> [type] # type: source|concept|entity|synthesis|session
280
225
  agent-notes memory ingest <title> <body> <concepts> <entities> <tags> # manual ingest
281
- agent-notes memory query <question> # search wiki pages
282
- agent-notes memory lint # health-check
283
- agent-notes memory reset # clear memory (confirmation required)
284
- agent-notes memory export # back up to memory-backup/
285
- agent-notes memory import # restore from memory-backup/
286
- agent-notes install --reconfigure # switch storage
226
+ agent-notes memory query <question> # search wiki pages
227
+ agent-notes memory lint # health-check
287
228
  ```
288
229
 
289
- ### Project scoping (Obsidian + Wiki only)
290
-
291
- Both Obsidian and Wiki storage modes auto-create a folder named after the current working directory, isolating different projects' memory.
292
-
293
- **Example:**
294
- - Working in `~/code/my-app/` → memory stored at `<vault>/my-app/`
295
- - Working in `~/code/another-project/` → memory stored at `<vault>/another-project/`
296
-
297
- The vault root is configured once during `agent-notes install`; the project path is resolved at runtime from the current working directory.
298
-
299
- ### Obsidian setup
300
-
301
- Run `agent-notes install` and pick Obsidian when prompted. The wizard auto-detects existing vaults under `~/Documents`, `~/Desktop`, and `~`. To initialize the vault structure:
302
-
303
- ```bash
304
- agent-notes memory init
305
- ```
306
-
307
- 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`.
308
231
 
309
232
  </details>
310
233
 
@@ -447,20 +370,44 @@ agent-notes config provider <name> # check if configured (without exposing
447
370
 
448
371
  ### Building and testing
449
372
 
450
- Python 3.10+ required. Build from source and run tests:
373
+ Python 3.10+ required. Create an isolated environment and run tests:
451
374
 
452
375
  ```bash
453
- python -m build && pipx install dist/*.whl
454
- 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
455
379
  ```
456
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
+
457
383
  ### Development workflow
458
384
 
459
- 1. Edit source files in `agent_notes/data/` or Python modules
460
- 2. Run `python -m build` to rebuild the wheel
461
- 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`
462
395
  4. Run `agent-notes validate` to lint configuration files
463
- 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.
464
411
 
465
412
  ### Test structure
466
413
 
@@ -468,18 +415,38 @@ python3 -m pytest tests/ -q
468
415
  - `tests/integration/` — Build output and artifact validation
469
416
  - `tests/plugins/` — Plugin artifact validation
470
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
+
471
437
  ### Contributing guidelines
472
438
 
473
439
  When adding new content:
474
440
 
475
441
  1. **Edit source files** — all changes go in `agent_notes/data/` directory
476
- 2. **Run build** — `python -m build` to generate platform configs
477
- 3. **Run tests** — `python3 -m pytest tests/ -q` before committing
478
- 4. **Validate** — `agent-notes validate` before committing
479
- 5. **Keep it generic** — remove app-specific references
480
- 6. **Show examples** — include code samples with explanations
481
- 7. **Stay modular** — each skill should be independently usable
482
- 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.)
483
450
 
484
451
  ### Architecture
485
452