agent-notes 2.18.0__tar.gz → 2.20.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 (244) hide show
  1. {agent_notes-2.18.0 → agent_notes-2.20.0}/PKG-INFO +1 -1
  2. agent_notes-2.20.0/agent_notes/VERSION +1 -0
  3. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/wizard.py +14 -14
  4. agent_notes-2.20.0/agent_notes/data/skills/docker/SKILL.md +24 -0
  5. agent_notes-2.18.0/agent_notes/data/skills/docker-compose-advanced/SKILL.md → agent_notes-2.20.0/agent_notes/data/skills/docker/compose.md +313 -6
  6. agent_notes-2.18.0/agent_notes/data/skills/docker-dockerfile/SKILL.md → agent_notes-2.20.0/agent_notes/data/skills/docker/dockerfile.md +288 -6
  7. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/skills/git/SKILL.md +1 -1
  8. agent_notes-2.20.0/agent_notes/data/skills/rails/SKILL.md +43 -0
  9. agent_notes-2.20.0/agent_notes/data/skills/rails/controllers.md +770 -0
  10. agent_notes-2.18.0/agent_notes/data/skills/rails-javascript/SKILL.md → agent_notes-2.20.0/agent_notes/data/skills/rails/frontend.md +429 -254
  11. agent_notes-2.20.0/agent_notes/data/skills/rails/infra.md +1121 -0
  12. agent_notes-2.20.0/agent_notes/data/skills/rails/models.md +1105 -0
  13. agent_notes-2.20.0/agent_notes/data/skills/rails/testing.md +566 -0
  14. agent_notes-2.20.0/agent_notes/data/skills/rails/views.md +620 -0
  15. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/doctor_checks.py +4 -4
  16. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/diagnostics/_display.py +2 -2
  17. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes.egg-info/PKG-INFO +1 -1
  18. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes.egg-info/SOURCES.txt +10 -29
  19. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/integration/build_output/test_build_output.py +1 -1
  20. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/registries/test_registries.py +1 -1
  21. agent_notes-2.18.0/agent_notes/VERSION +0 -1
  22. agent_notes-2.18.0/agent_notes/data/skills/docker-compose/SKILL.md +0 -318
  23. agent_notes-2.18.0/agent_notes/data/skills/docker-dockerfile-languages/SKILL.md +0 -293
  24. agent_notes-2.18.0/agent_notes/data/skills/rails-active-storage/SKILL.md +0 -321
  25. agent_notes-2.18.0/agent_notes/data/skills/rails-broadcasting/SKILL.md +0 -374
  26. agent_notes-2.18.0/agent_notes/data/skills/rails-concerns/SKILL.md +0 -806
  27. agent_notes-2.18.0/agent_notes/data/skills/rails-controllers/SKILL.md +0 -510
  28. agent_notes-2.18.0/agent_notes/data/skills/rails-controllers-advanced/SKILL.md +0 -441
  29. agent_notes-2.18.0/agent_notes/data/skills/rails-helpers/SKILL.md +0 -677
  30. agent_notes-2.18.0/agent_notes/data/skills/rails-initializers/SKILL.md +0 -79
  31. agent_notes-2.18.0/agent_notes/data/skills/rails-jobs/SKILL.md +0 -700
  32. agent_notes-2.18.0/agent_notes/data/skills/rails-kamal/SKILL.md +0 -483
  33. agent_notes-2.18.0/agent_notes/data/skills/rails-lib/SKILL.md +0 -101
  34. agent_notes-2.18.0/agent_notes/data/skills/rails-mailers/SKILL.md +0 -321
  35. agent_notes-2.18.0/agent_notes/data/skills/rails-migrations/SKILL.md +0 -268
  36. agent_notes-2.18.0/agent_notes/data/skills/rails-models/SKILL.md +0 -459
  37. agent_notes-2.18.0/agent_notes/data/skills/rails-models-advanced/SKILL.md +0 -398
  38. agent_notes-2.18.0/agent_notes/data/skills/rails-routes/SKILL.md +0 -804
  39. agent_notes-2.18.0/agent_notes/data/skills/rails-style/SKILL.md +0 -538
  40. agent_notes-2.18.0/agent_notes/data/skills/rails-testing-controllers/SKILL.md +0 -343
  41. agent_notes-2.18.0/agent_notes/data/skills/rails-testing-models/SKILL.md +0 -296
  42. agent_notes-2.18.0/agent_notes/data/skills/rails-testing-system/SKILL.md +0 -375
  43. agent_notes-2.18.0/agent_notes/data/skills/rails-validations/SKILL.md +0 -108
  44. agent_notes-2.18.0/agent_notes/data/skills/rails-view-components/SKILL.md +0 -511
  45. agent_notes-2.18.0/agent_notes/data/skills/rails-view-components-advanced/SKILL.md +0 -376
  46. agent_notes-2.18.0/agent_notes/data/skills/rails-views/SKILL.md +0 -413
  47. agent_notes-2.18.0/agent_notes/data/skills/rails-views-advanced/SKILL.md +0 -450
  48. {agent_notes-2.18.0 → agent_notes-2.20.0}/LICENSE +0 -0
  49. {agent_notes-2.18.0 → agent_notes-2.20.0}/README.md +0 -0
  50. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/__init__.py +0 -0
  51. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/__main__.py +0 -0
  52. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/cli.py +0 -0
  53. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/__init__.py +0 -0
  54. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/_install_helpers.py +0 -0
  55. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/build.py +0 -0
  56. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/config.py +0 -0
  57. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/doctor.py +0 -0
  58. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/info.py +0 -0
  59. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/install.py +0 -0
  60. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/list.py +0 -0
  61. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/memory.py +0 -0
  62. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/regenerate.py +0 -0
  63. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/set_role.py +0 -0
  64. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/uninstall.py +0 -0
  65. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/commands/validate.py +0 -0
  66. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/config.py +0 -0
  67. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/agents.yaml +0 -0
  68. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/analyst.md +0 -0
  69. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/api-reviewer.md +0 -0
  70. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/architect.md +0 -0
  71. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/coder.md +0 -0
  72. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/database-specialist.md +0 -0
  73. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/debugger.md +0 -0
  74. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/devil.md +0 -0
  75. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/devops.md +0 -0
  76. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/explorer.md +0 -0
  77. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/integrations.md +0 -0
  78. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/lead.md +0 -0
  79. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/performance-profiler.md +0 -0
  80. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/refactorer.md +0 -0
  81. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/reviewer.md +0 -0
  82. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/security-auditor.md +0 -0
  83. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/shared/cost_reporting.md +0 -0
  84. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/shared/execution.md +0 -0
  85. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/shared/guardrails.md +0 -0
  86. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/shared/hard_limits.md +0 -0
  87. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/shared/phase0.md +0 -0
  88. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/shared/pipelines.md +0 -0
  89. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/shared/review.md +0 -0
  90. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/shared/verification.md +0 -0
  91. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/system-auditor.md +0 -0
  92. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/tech-writer.md +0 -0
  93. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/test-runner.md +0 -0
  94. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/agents/test-writer.md +0 -0
  95. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/cli/claude.yaml +0 -0
  96. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/cli/copilot.yaml +0 -0
  97. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/cli/opencode.yaml +0 -0
  98. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/commands/brainstorm.md +0 -0
  99. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/commands/debug.md +0 -0
  100. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/commands/review.md +0 -0
  101. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/global-claude.md +0 -0
  102. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/global-copilot.md +0 -0
  103. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/global-opencode.md +0 -0
  104. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/hooks/session-context.md.tpl +0 -0
  105. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/models/claude-haiku-4-5.yaml +0 -0
  106. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/models/claude-opus-4-1.yaml +0 -0
  107. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/models/claude-opus-4-5.yaml +0 -0
  108. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/models/claude-opus-4-6.yaml +0 -0
  109. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/models/claude-opus-4-7.yaml +0 -0
  110. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/models/claude-sonnet-4-5.yaml +0 -0
  111. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/models/claude-sonnet-4-6.yaml +0 -0
  112. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/models/claude-sonnet-4.yaml +0 -0
  113. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/plugin/claude.yaml +0 -0
  114. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/plugin/opencode-index.js.template +0 -0
  115. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/plugin/opencode.yaml +0 -0
  116. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/pricing.yaml +0 -0
  117. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/roles/orchestrator.yaml +0 -0
  118. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/roles/reasoner.yaml +0 -0
  119. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/roles/scout.yaml +0 -0
  120. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/roles/worker.yaml +0 -0
  121. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/rules/code-quality.md +0 -0
  122. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/rules/safety.md +0 -0
  123. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/skills/brainstorming/SKILL.md +0 -0
  124. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/skills/caveman/SKILL.md +0 -0
  125. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/skills/code-review/SKILL.md +0 -0
  126. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/skills/debugging-protocol/SKILL.md +0 -0
  127. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/skills/grill-me/SKILL.md +0 -0
  128. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/skills/grill-with-docs/SKILL.md +0 -0
  129. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/skills/improve-codebase-architecture/SKILL.md +0 -0
  130. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/skills/obsidian-memory/SKILL.md +0 -0
  131. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/skills/refactoring-protocol/SKILL.md +0 -0
  132. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/skills/setup-project-context/SKILL.md +0 -0
  133. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/skills/tdd/SKILL.md +0 -0
  134. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/skills/zoom-out/SKILL.md +0 -0
  135. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/templates/__init__.py +0 -0
  136. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/templates/__pycache__/__init__.cpython-314.pyc +0 -0
  137. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/templates/frontmatter/__init__.py +0 -0
  138. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-314.pyc +0 -0
  139. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-314.pyc +0 -0
  140. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
  141. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/templates/frontmatter/claude.py +0 -0
  142. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/data/templates/frontmatter/opencode.py +0 -0
  143. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/domain/__init__.py +0 -0
  144. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/domain/agent.py +0 -0
  145. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/domain/cli_backend.py +0 -0
  146. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/domain/diagnostics.py +0 -0
  147. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/domain/diff.py +0 -0
  148. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/domain/model.py +0 -0
  149. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/domain/role.py +0 -0
  150. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/domain/rule.py +0 -0
  151. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/domain/skill.py +0 -0
  152. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/domain/state.py +0 -0
  153. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/install_state.py +0 -0
  154. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/registries/__init__.py +0 -0
  155. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/registries/_base.py +0 -0
  156. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/registries/agent_registry.py +0 -0
  157. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/registries/cli_registry.py +0 -0
  158. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/registries/model_registry.py +0 -0
  159. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/registries/role_registry.py +0 -0
  160. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/registries/rule_registry.py +0 -0
  161. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/registries/skill_registry.py +0 -0
  162. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/scripts/__init__.py +0 -0
  163. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/scripts/_claude_backend.py +0 -0
  164. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/scripts/_formatting.py +0 -0
  165. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/scripts/_opencode_backend.py +0 -0
  166. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/scripts/_pricing.py +0 -0
  167. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/scripts/cost_report.py +0 -0
  168. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/__init__.py +0 -0
  169. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/counts.py +0 -0
  170. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/credentials.py +0 -0
  171. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/diagnostics/__init__.py +0 -0
  172. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/diagnostics/_checks.py +0 -0
  173. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/diagnostics/_fix.py +0 -0
  174. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/diff.py +0 -0
  175. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/fs.py +0 -0
  176. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/install_state_builder.py +0 -0
  177. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/installer.py +0 -0
  178. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/memory_backend.py +0 -0
  179. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/rendering.py +0 -0
  180. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/session_context.py +0 -0
  181. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/settings_writer.py +0 -0
  182. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/state_store.py +0 -0
  183. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/ui.py +0 -0
  184. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/user_config.py +0 -0
  185. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/validation.py +0 -0
  186. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/services/wiki_backend.py +0 -0
  187. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes/state.py +0 -0
  188. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes.egg-info/dependency_links.txt +0 -0
  189. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes.egg-info/entry_points.txt +0 -0
  190. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes.egg-info/requires.txt +0 -0
  191. {agent_notes-2.18.0 → agent_notes-2.20.0}/agent_notes.egg-info/top_level.txt +0 -0
  192. {agent_notes-2.18.0 → agent_notes-2.20.0}/pyproject.toml +0 -0
  193. {agent_notes-2.18.0 → agent_notes-2.20.0}/setup.cfg +0 -0
  194. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/conftest.py +0 -0
  195. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/__init__.py +0 -0
  196. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/commands/__init__.py +0 -0
  197. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/commands/test_config_command.py +0 -0
  198. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/commands/test_doctor_command.py +0 -0
  199. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/commands/test_info_command.py +0 -0
  200. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/commands/test_install_command.py +0 -0
  201. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/commands/test_list_command.py +0 -0
  202. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/commands/test_regenerate_command.py +0 -0
  203. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/commands/test_uninstall_command.py +0 -0
  204. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/commands/test_validate_command.py +0 -0
  205. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/memory/__init__.py +0 -0
  206. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/memory/test_memory_command.py +0 -0
  207. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/scripts/__init__.py +0 -0
  208. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/functional/scripts/test_release_script.py +0 -0
  209. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/integration/__init__.py +0 -0
  210. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/integration/build_output/__init__.py +0 -0
  211. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/integration/install/__init__.py +0 -0
  212. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/integration/install/test_install_methods.py +0 -0
  213. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/integration/plugin_builders/__init__.py +0 -0
  214. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/integration/plugin_builders/test_plugin_builders.py +0 -0
  215. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/plugins/__init__.py +0 -0
  216. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/plugins/claude/__init__.py +0 -0
  217. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/plugins/claude/test_agents.py +0 -0
  218. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/plugins/test_skills.py +0 -0
  219. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/__init__.py +0 -0
  220. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/commands/__init__.py +0 -0
  221. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/commands/test_cost_report_subcommand.py +0 -0
  222. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/commands/test_count_agents.py +0 -0
  223. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/commands/test_memory_migrate.py +0 -0
  224. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/commands/test_wizard_orchestrator_skip.py +0 -0
  225. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/commands/test_wizard_preflight.py +0 -0
  226. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/registries/__init__.py +0 -0
  227. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/scripts/__init__.py +0 -0
  228. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/scripts/test_cost_report.py +0 -0
  229. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/scripts/test_cost_report_scoping.py +0 -0
  230. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/scripts/test_formatting_tty.py +0 -0
  231. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/scripts/test_time_aggregation.py +0 -0
  232. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/services/__init__.py +0 -0
  233. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/services/test_build_functions.py +0 -0
  234. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/services/test_credentials.py +0 -0
  235. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/services/test_fs.py +0 -0
  236. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/services/test_installer_plan.py +0 -0
  237. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/services/test_memory_backend.py +0 -0
  238. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/services/test_memory_backend_io.py +0 -0
  239. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/services/test_rendering_includes.py +0 -0
  240. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/services/test_session_context.py +0 -0
  241. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/services/test_settings_writer.py +0 -0
  242. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/services/test_wiki_backend.py +0 -0
  243. {agent_notes-2.18.0 → agent_notes-2.20.0}/tests/unit/test_import_health.py +0 -0
  244. {agent_notes-2.18.0 → agent_notes-2.20.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.18.0
3
+ Version: 2.20.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
@@ -0,0 +1 @@
1
+ 2.20.0
@@ -259,28 +259,28 @@ def _select_skills(step: int = 0, total: int = 0, version: str = '') -> List[str
259
259
  selected_skills = list(process_skills)
260
260
 
261
261
  if tech_groups:
262
+ # Build one option per individual skill so users pick by name, not group label.
262
263
  options = []
264
+ all_skill_names = set()
263
265
  for group_name, skills in tech_groups.items():
264
- desc = descriptions.get(group_name, group_name.lower())
265
- count = len(skills)
266
- label = f"{group_name.capitalize()} — {desc} ({count} {'skill' if count == 1 else 'skills'})"
267
- options.append((label, group_name))
268
-
269
- all_group_names = set(tech_groups.keys())
266
+ for skill_name in skills:
267
+ desc = descriptions.get(skill_name, skill_name)
268
+ label = f"{skill_name.capitalize()} — {desc}"
269
+ options.append((label, skill_name))
270
+ all_skill_names.add(skill_name)
270
271
 
271
272
  title = "Which domain skills to include?\n (process skills are always included)"
272
273
  if _can_interactive():
273
- selected_groups = _checkbox_select(title, options, defaults=all_group_names,
274
- step=step, total=total, version=version)
274
+ selected_domain_skills = _checkbox_select(title, options, defaults=all_skill_names,
275
+ step=step, total=total, version=version)
275
276
  else:
276
- selected_groups = _checkbox_select_fallback(title, options, defaults=all_group_names,
277
- step=step, total=total, version=version)
277
+ selected_domain_skills = _checkbox_select_fallback(title, options, defaults=all_skill_names,
278
+ step=step, total=total, version=version)
278
279
 
279
280
  skill_summary_parts = [f"process ({len(process_skills)})"] if process_skills else []
280
- for group_name, skills in tech_groups.items():
281
- if group_name in selected_groups:
282
- selected_skills.extend(skills)
283
- skill_summary_parts.append(f"{group_name.capitalize()} ({len(skills)})")
281
+ for skill_name in selected_domain_skills:
282
+ selected_skills.append(skill_name)
283
+ skill_summary_parts.append(skill_name.capitalize())
284
284
  else:
285
285
  skill_summary_parts = [f"process ({len(process_skills)})"] if process_skills else []
286
286
 
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: docker
3
+ group: domain
4
+ description: "Docker development: Dockerfiles, Compose, multi-stage builds, and service patterns. Context7-style: loads only the relevant reference on demand."
5
+ triggers:
6
+ - docker
7
+ - Dockerfile
8
+ - docker-compose
9
+ - container
10
+ - multi-stage build
11
+ - health check
12
+ - Docker Compose
13
+ ---
14
+
15
+ # Docker Reference
16
+
17
+ Based on the user's current task, use the Read tool to load the relevant reference file from this skill's directory. Only load the file(s) you need — do not load all of them.
18
+
19
+ | Topic | File | Use when |
20
+ |---|---|---|
21
+ | Dockerfile | dockerfile.md | Writing or editing Dockerfiles, multi-stage builds, layer optimization, language-specific patterns |
22
+ | Compose | compose.md | Writing docker-compose.yml, service definitions, health checks, dev/prod configs |
23
+
24
+ The reference files are in the same directory as this skill file. After reading, apply the patterns and conventions to the user's code.
@@ -1,10 +1,317 @@
1
+ # Docker Compose
2
+
3
+ ## Docker Compose Patterns
4
+
5
+ Production-ready Docker Compose configurations for multi-container applications based on official Docker Compose Specification and current best practices.
6
+
7
+ > **Sources**: This guide is based on [Docker Compose Specification](https://docs.docker.com/reference/compose-file/), [Docker Compose Services Reference](https://docs.docker.com/reference/compose-file/services/), and Docker Compose v2 (2022+) best practices.
8
+
9
+ ---
10
+
11
+ ## Important: Version Field is Obsolete
12
+
13
+ **The `version:` field is obsolete** as of Docker Compose v2 (2022). Docker Compose now ignores this field entirely. Modern compose files should **NOT include** a `version:` field.
14
+
15
+ **Why**: Docker Compose v1.27.0+ (2020) introduced the Compose Specification, making the version field optional. The Compose Specification is now the recommended version.
16
+
17
+ **Source**: [Docker Compose Specification](https://docs.docker.com/reference/compose-file/)
18
+
19
+ ---
20
+
21
+ ## Compose File Structure Template
22
+
23
+ ```yaml
24
+ services:
25
+ # Application service
26
+ app:
27
+ build:
28
+ context: .
29
+ dockerfile: Dockerfile
30
+ target: production
31
+ args:
32
+ NODE_ENV: production
33
+ image: myapp:latest
34
+ container_name: myapp
35
+ restart: unless-stopped
36
+ ports:
37
+ - "3000:3000"
38
+ environment:
39
+ - NODE_ENV=production
40
+ - DATABASE_URL=postgresql://postgres:password@db:5432/myapp
41
+ - REDIS_URL=redis://redis:6379
42
+ env_file:
43
+ - .env
44
+ depends_on:
45
+ db:
46
+ condition: service_healthy
47
+ redis:
48
+ condition: service_healthy
49
+ volumes:
50
+ - ./uploads:/app/uploads
51
+ - app_logs:/app/logs
52
+ networks:
53
+ - app_network
54
+ healthcheck:
55
+ test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
56
+ interval: 30s
57
+ timeout: 10s
58
+ retries: 3
59
+ start_period: 40s
60
+
61
+ # Database service
62
+ db:
63
+ image: postgres:16-alpine
64
+ container_name: myapp_db
65
+ restart: unless-stopped
66
+ environment:
67
+ - POSTGRES_USER=postgres
68
+ - POSTGRES_PASSWORD=password
69
+ - POSTGRES_DB=myapp
70
+ volumes:
71
+ - postgres_data:/var/lib/postgresql/data
72
+ - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
73
+ networks:
74
+ - app_network
75
+ healthcheck:
76
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
77
+ interval: 10s
78
+ timeout: 5s
79
+ retries: 5
80
+
81
+ # Redis service
82
+ redis:
83
+ image: redis:7-alpine
84
+ container_name: myapp_redis
85
+ restart: unless-stopped
86
+ command: redis-server --appendonly yes
87
+ volumes:
88
+ - redis_data:/data
89
+ networks:
90
+ - app_network
91
+ healthcheck:
92
+ test: ["CMD", "redis-cli", "ping"]
93
+ interval: 10s
94
+ timeout: 5s
95
+ retries: 5
96
+
97
+ volumes:
98
+ postgres_data:
99
+ driver: local
100
+ redis_data:
101
+ driver: local
102
+ app_logs:
103
+ driver: local
104
+
105
+ networks:
106
+ app_network:
107
+ driver: bridge
108
+ ```
109
+
110
+ ---
111
+
112
+ ## Health Checks in Compose
113
+
114
+ Health checks work the same way as Dockerfile HEALTHCHECK and use the same default values. Your Compose file can override values set in the Dockerfile.
115
+
116
+ ```yaml
117
+ services:
118
+ web:
119
+ image: myapp:latest
120
+ healthcheck:
121
+ test: ["CMD", "curl", "-f", "http://localhost/health"]
122
+ interval: 30s
123
+ timeout: 10s
124
+ retries: 3
125
+ start_period: 40s
126
+ ```
127
+
128
+ **Health check attributes**:
129
+ - `test`: Command to run (can be string or array)
130
+ - `interval`: Time between checks (default: 30s)
131
+ - `timeout`: Maximum time for check to complete (default: 30s)
132
+ - `retries`: Consecutive failures before marking unhealthy (default: 3)
133
+ - `start_period`: Grace period for container initialization (default: 0s)
134
+
135
+ **Source**: [Docker Compose Health Checks](https://docs.docker.com/reference/compose-file/services/#healthcheck)
136
+
1
137
  ---
2
- name: docker-compose-advanced
3
- description: "Docker Compose advanced: database services, caches, proxies, dev/prod configs, and full stack examples. Use when user needs multi-service compose setups or environment-specific overrides."
4
- group: docker
138
+
139
+ ## Depends_on with Conditions
140
+
141
+ Use `condition` to wait for services to be healthy before starting dependent services.
142
+
143
+ ```yaml
144
+ services:
145
+ app:
146
+ depends_on:
147
+ db:
148
+ condition: service_healthy # Wait for health check to pass
149
+ redis:
150
+ condition: service_started # Just wait for container to start
151
+ ```
152
+
153
+ **Available conditions**:
154
+ - `service_started`: Default, just waits for container to start
155
+ - `service_healthy`: Waits for health check to pass
156
+ - `service_completed_successfully`: Waits for one-time task to complete
157
+
158
+ **Source**: [Docker Compose depends_on](https://docs.docker.com/reference/compose-file/services/#depends_on)
159
+
5
160
  ---
6
161
 
7
- # Docker Compose (Advanced)
162
+ ## Common Service Patterns
163
+
164
+ ### Node.js Application
165
+
166
+ ```yaml
167
+ services:
168
+ app:
169
+ build:
170
+ context: .
171
+ dockerfile: Dockerfile
172
+ target: ${BUILD_TARGET:-production}
173
+ image: ${APP_NAME}:${VERSION:-latest}
174
+ restart: unless-stopped
175
+ ports:
176
+ - "${APP_PORT:-3000}:3000"
177
+ environment:
178
+ NODE_ENV: ${NODE_ENV:-production}
179
+ DATABASE_URL: ${DATABASE_URL}
180
+ REDIS_URL: redis://redis:6379
181
+ env_file:
182
+ - .env
183
+ depends_on:
184
+ db:
185
+ condition: service_healthy
186
+ volumes:
187
+ # Development: mount source code
188
+ - ./src:/app/src:ro
189
+ # Production: named volumes for data
190
+ - uploads:/app/uploads
191
+ - logs:/app/logs
192
+ networks:
193
+ - app_network
194
+ healthcheck:
195
+ test: ["CMD", "node", "healthcheck.js"]
196
+ interval: 30s
197
+ timeout: 10s
198
+ retries: 3
199
+ deploy:
200
+ resources:
201
+ limits:
202
+ cpus: '1'
203
+ memory: 1G
204
+ reservations:
205
+ cpus: '0.5'
206
+ memory: 512M
207
+ ```
208
+
209
+ ### Rails with Background Workers
210
+
211
+ ```yaml
212
+ services:
213
+ web:
214
+ build:
215
+ context: .
216
+ dockerfile: Dockerfile
217
+ command: bundle exec rails server -b 0.0.0.0
218
+ restart: unless-stopped
219
+ ports:
220
+ - "3000:3000"
221
+ environment:
222
+ RAILS_ENV: ${RAILS_ENV:-production}
223
+ DATABASE_URL: postgresql://postgres:password@db:5432/myapp
224
+ REDIS_URL: redis://redis:6379/0
225
+ SECRET_KEY_BASE: ${SECRET_KEY_BASE}
226
+ depends_on:
227
+ db:
228
+ condition: service_healthy
229
+ redis:
230
+ condition: service_started
231
+ volumes:
232
+ - ./storage:/app/storage
233
+ - ./log:/app/log
234
+ networks:
235
+ - app_network
236
+
237
+ sidekiq:
238
+ build:
239
+ context: .
240
+ dockerfile: Dockerfile
241
+ command: bundle exec sidekiq
242
+ restart: unless-stopped
243
+ environment:
244
+ RAILS_ENV: ${RAILS_ENV:-production}
245
+ DATABASE_URL: postgresql://postgres:password@db:5432/myapp
246
+ REDIS_URL: redis://redis:6379/0
247
+ depends_on:
248
+ - db
249
+ - redis
250
+ volumes:
251
+ - ./storage:/app/storage
252
+ - ./log:/app/log
253
+ networks:
254
+ - app_network
255
+ ```
256
+
257
+ ### Python/Django with Celery
258
+
259
+ ```yaml
260
+ services:
261
+ web:
262
+ build:
263
+ context: .
264
+ dockerfile: Dockerfile
265
+ command: gunicorn myapp.wsgi:application --bind 0.0.0.0:8000 --workers 4
266
+ restart: unless-stopped
267
+ ports:
268
+ - "8000:8000"
269
+ environment:
270
+ DJANGO_SETTINGS_MODULE: myapp.settings.production
271
+ DATABASE_URL: postgresql://postgres:password@db:5432/myapp
272
+ REDIS_URL: redis://redis:6379/0
273
+ SECRET_KEY: ${SECRET_KEY}
274
+ depends_on:
275
+ db:
276
+ condition: service_healthy
277
+ volumes:
278
+ - ./media:/app/media
279
+ - ./static:/app/static
280
+ networks:
281
+ - app_network
282
+
283
+ celery_worker:
284
+ build:
285
+ context: .
286
+ dockerfile: Dockerfile
287
+ command: celery -A myapp worker -l info
288
+ restart: unless-stopped
289
+ environment:
290
+ DJANGO_SETTINGS_MODULE: myapp.settings.production
291
+ DATABASE_URL: postgresql://postgres:password@db:5432/myapp
292
+ REDIS_URL: redis://redis:6379/0
293
+ depends_on:
294
+ - db
295
+ - redis
296
+ networks:
297
+ - app_network
298
+
299
+ celery_beat:
300
+ build:
301
+ context: .
302
+ dockerfile: Dockerfile
303
+ command: celery -A myapp beat -l info
304
+ restart: unless-stopped
305
+ environment:
306
+ DJANGO_SETTINGS_MODULE: myapp.settings.production
307
+ REDIS_URL: redis://redis:6379/0
308
+ depends_on:
309
+ - redis
310
+ networks:
311
+ - app_network
312
+ ```
313
+
314
+ ---
8
315
 
9
316
  ## Database Services
10
317
 
@@ -494,7 +801,7 @@ networks:
494
801
 
495
802
  ## Best Practices
496
803
 
497
- ### DO
804
+ ### DO
498
805
 
499
806
  1. **Remove version field** - It's obsolete in Compose v2
500
807
  2. **Use health checks** - Essential for orchestration
@@ -507,7 +814,7 @@ networks:
507
814
  9. **Separate dev/prod configs** - Different requirements
508
815
  10. **Use depends_on conditions** - Proper startup order
509
816
 
510
- ### DON'T
817
+ ### DON'T
511
818
 
512
819
  1. **Include version field** - Generates warnings in Compose v2
513
820
  2. **Use :latest in production** - Unpredictable