agent-notes 2.0.4__tar.gz → 2.9.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.
- agent_notes-2.9.0/PKG-INFO +300 -0
- agent_notes-2.9.0/README.md +269 -0
- agent_notes-2.9.0/agent_notes/VERSION +1 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/cli.py +31 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/_install_helpers.py +5 -22
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/build.py +5 -34
- agent_notes-2.9.0/agent_notes/commands/config.py +475 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/doctor.py +3 -4
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/info.py +1 -4
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/install.py +20 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/validate.py +4 -4
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/wizard.py +6 -5
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/config.py +0 -2
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/analyst.md +19 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/api-reviewer.md +16 -2
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/architect.md +19 -1
- agent_notes-2.9.0/agent_notes/data/agents/coder.md +50 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/database-specialist.md +16 -2
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/debugger.md +19 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/devil.md +19 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/devops.md +24 -2
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/explorer.md +19 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/integrations.md +24 -2
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/lead.md +89 -27
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/performance-profiler.md +16 -2
- agent_notes-2.9.0/agent_notes/data/agents/refactorer.md +70 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/reviewer.md +16 -2
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/security-auditor.md +16 -2
- agent_notes-2.9.0/agent_notes/data/agents/shared/cost_reporting.md +7 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/system-auditor.md +16 -2
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/tech-writer.md +27 -1
- agent_notes-2.9.0/agent_notes/data/agents/test-runner.md +58 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/test-writer.md +24 -2
- agent_notes-2.9.0/agent_notes/data/global-claude.md +380 -0
- agent_notes-2.9.0/agent_notes/data/plugin/claude.yaml +15 -0
- agent_notes-2.9.0/agent_notes/data/plugin/opencode-index.js.template +22 -0
- agent_notes-2.9.0/agent_notes/data/plugin/opencode.yaml +7 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/brainstorming/SKILL.md +1 -1
- agent_notes-2.9.0/agent_notes/data/skills/caveman/SKILL.md +28 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/code-review/SKILL.md +1 -1
- agent_notes-2.9.0/agent_notes/data/skills/debugging-protocol/SKILL.md +69 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/docker-compose/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/docker-compose-advanced/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/docker-dockerfile/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/docker-dockerfile-languages/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/git/SKILL.md +1 -1
- agent_notes-2.9.0/agent_notes/data/skills/grill-me/SKILL.md +29 -0
- agent_notes-2.9.0/agent_notes/data/skills/grill-with-docs/SKILL.md +84 -0
- agent_notes-2.9.0/agent_notes/data/skills/improve-codebase-architecture/SKILL.md +51 -0
- agent_notes-2.9.0/agent_notes/data/skills/obsidian-memory/SKILL.md +168 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-active-storage/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-broadcasting/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-concerns/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-controllers/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-controllers-advanced/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-helpers/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-initializers/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-javascript/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-jobs/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-kamal/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-lib/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-mailers/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-migrations/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-models/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-models-advanced/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-routes/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-style/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-testing-controllers/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-testing-models/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-testing-system/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-validations/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-view-components/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-view-components-advanced/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-views/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/rails-views-advanced/SKILL.md +1 -1
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/refactoring-protocol/SKILL.md +1 -1
- agent_notes-2.9.0/agent_notes/data/skills/setup-project-context/SKILL.md +67 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/skills/tdd/SKILL.md +16 -1
- agent_notes-2.9.0/agent_notes/data/skills/zoom-out/SKILL.md +7 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/frontmatter/opencode.py +19 -14
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/doctor_checks.py +3 -9
- agent_notes-2.9.0/agent_notes/scripts/_claude_backend.py +277 -0
- agent_notes-2.9.0/agent_notes/scripts/_formatting.py +49 -0
- agent_notes-2.0.4/agent_notes/data/scripts/cost-report → agent_notes-2.9.0/agent_notes/scripts/_opencode_backend.py +22 -92
- agent_notes-2.9.0/agent_notes/scripts/_pricing.py +56 -0
- agent_notes-2.9.0/agent_notes/scripts/cost_report.py +123 -0
- agent_notes-2.9.0/agent_notes/services/credentials.py +133 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/diagnostics/__init__.py +0 -2
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/diagnostics/_checks.py +1 -29
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/diagnostics/_display.py +0 -23
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/fs.py +14 -4
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/installer.py +27 -49
- agent_notes-2.9.0/agent_notes/services/memory_backend.py +300 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/rendering.py +69 -7
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/settings_writer.py +43 -15
- agent_notes-2.9.0/agent_notes.egg-info/PKG-INFO +300 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes.egg-info/SOURCES.txt +61 -7
- agent_notes-2.9.0/agent_notes.egg-info/requires.txt +7 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes.egg-info/top_level.txt +1 -3
- agent_notes-2.9.0/pyproject.toml +61 -0
- agent_notes-2.9.0/tests/conftest.py +34 -0
- agent_notes-2.9.0/tests/functional/commands/test_config_command.py +198 -0
- agent_notes-2.9.0/tests/functional/commands/test_doctor_command.py +150 -0
- agent_notes-2.9.0/tests/functional/commands/test_info_command.py +98 -0
- agent_notes-2.9.0/tests/functional/commands/test_install_command.py +155 -0
- agent_notes-2.9.0/tests/functional/commands/test_list_command.py +48 -0
- agent_notes-2.9.0/tests/functional/commands/test_regenerate_command.py +82 -0
- agent_notes-2.9.0/tests/functional/commands/test_uninstall_command.py +202 -0
- agent_notes-2.9.0/tests/functional/commands/test_update_command.py +110 -0
- agent_notes-2.9.0/tests/functional/commands/test_validate_command.py +85 -0
- agent_notes-2.9.0/tests/functional/memory/__init__.py +0 -0
- agent_notes-2.9.0/tests/functional/memory/test_memory_command.py +120 -0
- agent_notes-2.9.0/tests/functional/scripts/__init__.py +0 -0
- agent_notes-2.9.0/tests/functional/scripts/test_release_script.py +41 -0
- agent_notes-2.9.0/tests/integration/__init__.py +0 -0
- agent_notes-2.9.0/tests/integration/build_output/__init__.py +0 -0
- {agent_notes-2.0.4/tests/integration → agent_notes-2.9.0/tests/integration/build_output}/test_build_output.py +0 -23
- agent_notes-2.9.0/tests/integration/install/__init__.py +0 -0
- agent_notes-2.9.0/tests/integration/install/test_install_methods.py +72 -0
- agent_notes-2.9.0/tests/integration/plugin_builders/__init__.py +0 -0
- agent_notes-2.9.0/tests/integration/plugin_builders/test_plugin_builders.py +69 -0
- agent_notes-2.9.0/tests/plugins/__init__.py +0 -0
- agent_notes-2.9.0/tests/plugins/claude/__init__.py +0 -0
- {agent_notes-2.0.4/tests/plugins → agent_notes-2.9.0/tests/plugins/claude}/test_agents.py +7 -0
- agent_notes-2.9.0/tests/unit/__init__.py +0 -0
- agent_notes-2.9.0/tests/unit/commands/__init__.py +0 -0
- agent_notes-2.9.0/tests/unit/commands/test_cost_report_subcommand.py +65 -0
- agent_notes-2.9.0/tests/unit/commands/test_count_agents.py +67 -0
- agent_notes-2.9.0/tests/unit/commands/test_wizard_orchestrator_skip.py +86 -0
- agent_notes-2.9.0/tests/unit/registries/__init__.py +0 -0
- agent_notes-2.9.0/tests/unit/scripts/__init__.py +0 -0
- agent_notes-2.9.0/tests/unit/scripts/test_cost_report.py +36 -0
- agent_notes-2.9.0/tests/unit/scripts/test_cost_report_scoping.py +299 -0
- agent_notes-2.9.0/tests/unit/scripts/test_formatting_tty.py +59 -0
- agent_notes-2.9.0/tests/unit/scripts/test_time_aggregation.py +236 -0
- agent_notes-2.9.0/tests/unit/services/__init__.py +0 -0
- agent_notes-2.0.4/tests/functional/test_build_commands.py → agent_notes-2.9.0/tests/unit/services/test_build_functions.py +0 -41
- agent_notes-2.9.0/tests/unit/services/test_credentials.py +87 -0
- agent_notes-2.9.0/tests/unit/services/test_memory_backend.py +122 -0
- agent_notes-2.9.0/tests/unit/services/test_memory_backend_io.py +405 -0
- agent_notes-2.9.0/tests/unit/services/test_rendering_includes.py +84 -0
- agent_notes-2.9.0/tests/unit/services/test_settings_writer.py +166 -0
- agent_notes-2.0.4/PKG-INFO +0 -14
- agent_notes-2.0.4/README.md +0 -493
- agent_notes-2.0.4/agent_notes/VERSION +0 -1
- agent_notes-2.0.4/agent_notes/data/agents/coder.md +0 -28
- agent_notes-2.0.4/agent_notes/data/agents/refactorer.md +0 -48
- agent_notes-2.0.4/agent_notes/data/agents/test-runner.md +0 -36
- agent_notes-2.0.4/agent_notes/data/global-claude.md +0 -290
- agent_notes-2.0.4/agent_notes/data/skills/debugging-protocol/SKILL.md +0 -51
- agent_notes-2.0.4/agent_notes/data/templates/frontmatter/__pycache__/cursor.cpython-314.pyc +0 -0
- agent_notes-2.0.4/agent_notes/services/memory_backend.py +0 -155
- agent_notes-2.0.4/agent_notes.egg-info/PKG-INFO +0 -14
- agent_notes-2.0.4/agent_notes.egg-info/requires.txt +0 -4
- agent_notes-2.0.4/pyproject.toml +0 -38
- agent_notes-2.0.4/tests/conftest.py +0 -20
- {agent_notes-2.0.4 → agent_notes-2.9.0}/LICENSE +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/__init__.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/__main__.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/__init__.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/list.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/memory.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/regenerate.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/set_role.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/uninstall.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/commands/update.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/agents/agents.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/cli/claude.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/cli/copilot.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/cli/opencode.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/commands/brainstorm.md +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/commands/debug.md +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/commands/review.md +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/global-copilot.md +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/global-opencode.md +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/hooks/session-context.md.tpl +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-haiku-4-5.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-opus-4-1.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-opus-4-5.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-opus-4-6.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-opus-4-7.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-sonnet-4-5.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-sonnet-4-6.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/models/claude-sonnet-4.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/pricing.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/roles/orchestrator.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/roles/reasoner.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/roles/scout.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/roles/worker.yaml +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/rules/code-quality.md +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/rules/safety.md +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/__init__.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/__pycache__/__init__.cpython-314.pyc +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/frontmatter/__init__.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-314.pyc +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-314.pyc +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/data/templates/frontmatter/claude.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/__init__.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/agent.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/cli_backend.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/diagnostics.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/diff.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/model.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/role.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/rule.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/skill.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/domain/state.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/install_state.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/__init__.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/_base.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/agent_registry.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/cli_registry.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/model_registry.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/role_registry.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/rule_registry.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/registries/skill_registry.py +0 -0
- {agent_notes-2.0.4/tests/functional → agent_notes-2.9.0/agent_notes/scripts}/__init__.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/__init__.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/diagnostics/_fix.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/diff.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/install_state_builder.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/session_context.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/state_store.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/ui.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/user_config.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/services/validation.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes/state.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes.egg-info/dependency_links.txt +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/agent_notes.egg-info/entry_points.txt +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/setup.cfg +0 -0
- {agent_notes-2.0.4/tests/integration → agent_notes-2.9.0/tests/functional}/__init__.py +0 -0
- {agent_notes-2.0.4/tests/plugins → agent_notes-2.9.0/tests/functional/commands}/__init__.py +0 -0
- {agent_notes-2.0.4 → agent_notes-2.9.0}/tests/plugins/test_skills.py +0 -0
- {agent_notes-2.0.4/tests/functional → agent_notes-2.9.0/tests/unit/registries}/test_registries.py +0 -0
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agent-notes
|
|
3
|
+
Version: 2.9.0
|
|
4
|
+
Summary: AI agent configuration manager for Claude Code, OpenCode, and Copilot
|
|
5
|
+
Author-email: Eugene Naumov <min.verkligheten@gmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/rubakas/agent-notes
|
|
8
|
+
Project-URL: Repository, https://github.com/rubakas/agent-notes
|
|
9
|
+
Project-URL: Issues, https://github.com/rubakas/agent-notes/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/rubakas/agent-notes/tree/main/docs
|
|
11
|
+
Keywords: claude,claude-code,opencode,ai-agent,agent,configuration,claude-cli,github-copilot
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
21
|
+
Classifier: Topic :: Utilities
|
|
22
|
+
Classifier: Environment :: Console
|
|
23
|
+
Requires-Python: >=3.9
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: pyyaml>=6.0
|
|
27
|
+
Requires-Dist: tomli>=1.1.0; python_version < "3.11"
|
|
28
|
+
Provides-Extra: dev
|
|
29
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
|
|
32
|
+
# agent-notes
|
|
33
|
+
|
|
34
|
+
AI agent configuration manager for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) and [OpenCode](https://github.com/opencode-ai/opencode).
|
|
35
|
+
|
|
36
|
+
Configures a Lead agent (Opus) that orchestrates a team of 18 specialized subagents across three model tiers — so Opus plans and reasons, Sonnet executes, and Haiku explores.
|
|
37
|
+
|
|
38
|
+
## Quick Start
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
pip install agent-notes
|
|
42
|
+
agent-notes install # interactive wizard guides you through setup
|
|
43
|
+
agent-notes doctor
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## What's Included
|
|
47
|
+
|
|
48
|
+
| Component | Description |
|
|
49
|
+
|-----------|-------------|
|
|
50
|
+
| **Skills** | 42 on-demand knowledge modules (Rails, Docker, Git, Kamal, Process) |
|
|
51
|
+
| **Agents** | 18 specialized AI subagents with hierarchical model strategy |
|
|
52
|
+
| **Rules** | Global instructions, code quality, and safety guardrails |
|
|
53
|
+
| **Config** | Global instructions for Claude Code, OpenCode, and GitHub Copilot |
|
|
54
|
+
|
|
55
|
+
## Install Methods
|
|
56
|
+
|
|
57
|
+
There are three ways to use agent-notes. Pick the one that matches your intent.
|
|
58
|
+
|
|
59
|
+
### 1. Python package — PyPI (recommended)
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pip install agent-notes
|
|
63
|
+
# or
|
|
64
|
+
pipx install agent-notes
|
|
65
|
+
agent-notes install
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Update anytime:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
pip install --upgrade agent-notes && agent-notes install
|
|
72
|
+
# or
|
|
73
|
+
pipx upgrade agent-notes && agent-notes install
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 2. Python package — from local build (developers)
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
git clone https://github.com/rubakas/agent-notes.git
|
|
80
|
+
cd agent-notes
|
|
81
|
+
python -m build # produces dist/*.whl
|
|
82
|
+
pipx install dist/*.whl # or pip install --user dist/*.whl
|
|
83
|
+
agent-notes install
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Iteration loop: edit source → `python -m build` → `pipx reinstall dist/*.whl`. Not editable mode. Not `pip install -e .`.
|
|
87
|
+
|
|
88
|
+
### 3. Plugin — limited functionality
|
|
89
|
+
|
|
90
|
+
- **Claude Code**: install via the Claude Code plugin marketplace.
|
|
91
|
+
- **OpenCode**: copy or symlink `.opencode-plugin/` into `~/.config/opencode/plugins/agent-notes/` and add `"plugin": ["agent-notes"]` to `opencode.json`.
|
|
92
|
+
|
|
93
|
+
The plugin runs a `session.start` hook that surfaces agent-notes context to the CLI session. It does **not** include the full `agent-notes` CLI (wizard, doctor, config, memory, etc.). For those, use install method 1 or 2.
|
|
94
|
+
|
|
95
|
+
### API keys
|
|
96
|
+
|
|
97
|
+
Provider API keys live in `~/.agent-notes/credentials.toml` (mode 0600, never committed). Add or update via:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
agent-notes config providers
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The wizard prompts for the key with hidden input; agent-notes never logs or prints the value. To check whether a provider is configured without exposing the key:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
agent-notes config provider openrouter # prints "configured" or "no key"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## CLI Reference
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
agent-notes <command> [options]
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
| Command | Description |
|
|
116
|
+
|---------|-------------|
|
|
117
|
+
| `install [--local] [--copy]` | Interactive wizard or direct install |
|
|
118
|
+
| `uninstall [--local]` | Remove installed components |
|
|
119
|
+
| `update` | Pull latest, rebuild, reinstall |
|
|
120
|
+
| `doctor [--local] [--fix]` | Check installation health |
|
|
121
|
+
| `info` | Show status and component counts |
|
|
122
|
+
| `list [clis\|models\|roles\|agents\|skills\|rules\|all]` | List engine components or installed |
|
|
123
|
+
| `set role <role> <model> [--cli <cli>]` | Change model for a role (Phase 10+) |
|
|
124
|
+
| `regenerate [--cli <cli>]` | Rebuild files from state.json (Phase 10+) |
|
|
125
|
+
| `validate` | Lint source configuration files |
|
|
126
|
+
| `memory [list\|size\|show\|reset\|export\|import] [name]` | Manage agent memory |
|
|
127
|
+
|
|
128
|
+
### Supported platforms
|
|
129
|
+
|
|
130
|
+
| Platform | Install target | Config format |
|
|
131
|
+
|----------|---------------|---------------|
|
|
132
|
+
| **Claude Code** | `~/.claude/` | YAML frontmatter + Markdown prompts |
|
|
133
|
+
| **OpenCode** | `~/.config/opencode/` | YAML frontmatter + Markdown prompts |
|
|
134
|
+
| **GitHub Copilot** | `~/.github/` | `copilot-instructions.md` |
|
|
135
|
+
|
|
136
|
+
### Quick usage examples
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Interactive install (recommended)
|
|
140
|
+
agent-notes install
|
|
141
|
+
|
|
142
|
+
# Direct install (scripted)
|
|
143
|
+
agent-notes install --local --copy
|
|
144
|
+
|
|
145
|
+
# Check health and fix issues
|
|
146
|
+
agent-notes doctor --fix
|
|
147
|
+
|
|
148
|
+
# Manage agent memory
|
|
149
|
+
agent-notes memory list
|
|
150
|
+
agent-notes memory add "Rails enum prefix" \
|
|
151
|
+
"Always use _prefix: true to avoid method name collisions" \
|
|
152
|
+
pattern coder
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Agent Team
|
|
156
|
+
|
|
157
|
+
Specialized subagents with hierarchical model strategy: **Opus 4.7 decides, Sonnet 4 executes, Haiku 4.5 explores.**
|
|
158
|
+
|
|
159
|
+
| Agent | Model | Role |
|
|
160
|
+
|-------|-------|------|
|
|
161
|
+
| **lead** | Opus 4.7 | Plans, delegates, reviews. Orchestrator. |
|
|
162
|
+
| **architect** | Opus 4.7 | System architecture, module boundaries, domain models. Read-only. |
|
|
163
|
+
| **debugger** | Opus 4.7 | Bug investigation: reproduces, isolates, identifies root cause. Read-only. |
|
|
164
|
+
| **coder** | Sonnet 4 | Implements features, fixes bugs, edits files. |
|
|
165
|
+
| **reviewer** | Sonnet 4 | Code quality review. Read-only. |
|
|
166
|
+
| **security-auditor** | Sonnet 4 | Security vulnerability analysis. Read-only. |
|
|
167
|
+
| **test-writer** | Sonnet 4 | Writes tests for any framework. |
|
|
168
|
+
| **test-runner** | Sonnet 4 | Diagnoses and fixes failing tests. |
|
|
169
|
+
| **system-auditor** | Sonnet 4 | Codebase health: duplication, N+1, coupling. Read-only. |
|
|
170
|
+
| **database-specialist** | Sonnet 4 | Schema design, indexes, query performance, migrations. Read-only. |
|
|
171
|
+
| **performance-profiler** | Sonnet 4 | Response times, memory, caching, bundle size. Read-only. |
|
|
172
|
+
| **devops** | Sonnet 4 | Docker, CI/CD, deployment configs. |
|
|
173
|
+
| **devil** | Sonnet 4 | Challenges plans to surface hidden risks. Read-only. |
|
|
174
|
+
| **integrations** | Sonnet 4 | Third-party integrations: OAuth, webhooks, payments. |
|
|
175
|
+
| **refactorer** | Sonnet 4 | Improves code structure without changing behavior. |
|
|
176
|
+
| **analyst** | Haiku 4.5 | Requirements analysis: surfaces missing or contradictory requirements. Read-only. |
|
|
177
|
+
| **api-reviewer** | Haiku 4.5 | API design, versioning, error handling, backward compatibility. Read-only. |
|
|
178
|
+
| **tech-writer** | Haiku 4.5 | Documentation: READMEs, API docs, changelogs. |
|
|
179
|
+
| **explorer** | Haiku 4.5 | Fast file discovery and pattern search. Read-only. |
|
|
180
|
+
|
|
181
|
+
## Architecture
|
|
182
|
+
|
|
183
|
+
agent-notes is a 4-layer engine (domain / registries / services / commands). All extensible content (CLIs, models, roles, agents, skills, rules) lives in `agent_notes/data/` as YAML — adding a new CLI/model/role is a YAML drop, no Python changes. See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md), [docs/ADD_CLI.md](docs/ADD_CLI.md), [docs/ADD_MODEL.md](docs/ADD_MODEL.md), [docs/ADD_ROLE.md](docs/ADD_ROLE.md).
|
|
184
|
+
|
|
185
|
+
## Improved Claude Code workflows
|
|
186
|
+
|
|
187
|
+
Four failure modes that derail AI-assisted development, and the skills that address them. Inspired by [Matt Pocock's skills repo](https://github.com/mattpocock/skills).
|
|
188
|
+
|
|
189
|
+
| Failure mode | What goes wrong | Skills that help |
|
|
190
|
+
|---|---|---|
|
|
191
|
+
| **Misalignment** | Claude starts building before the problem is resolved | `/grill-me`, `/grill-with-docs` |
|
|
192
|
+
| **Verbosity** | Responses are bloated; context window fills with noise | `/caveman`, `/setup-project-context` |
|
|
193
|
+
| **Broken code** | Claude codes without a feedback loop or evidence trail | `/tdd` (improved), `/debugging-protocol` (improved) |
|
|
194
|
+
| **Ball of mud** | Architecture drifts; modules grow shallow and tangled | `/improve-codebase-architecture`, `/zoom-out` |
|
|
195
|
+
|
|
196
|
+
- `/grill-me` — interview the user until the problem is fully resolved before touching code
|
|
197
|
+
- `/grill-with-docs` — same, but cross-references CONTEXT.md and ADRs and updates them inline
|
|
198
|
+
- `/caveman` — ultra-compressed reply mode (~75% token savings) for rapid iteration
|
|
199
|
+
- `/setup-project-context` — bootstraps a CONTEXT.md domain glossary (ubiquitous language)
|
|
200
|
+
- `/tdd` — RED-GREEN-REFACTOR with tracer-bullet vertical slices; horizontal-slicing anti-pattern added
|
|
201
|
+
- `/debugging-protocol` — Phase 1 rewritten as "build a feedback loop first" with 9 strategies
|
|
202
|
+
- `/improve-codebase-architecture` — deletion test to find shallow modules; surfaces deepening opportunities
|
|
203
|
+
- `/zoom-out` — quick orientation map of an unfamiliar code area
|
|
204
|
+
|
|
205
|
+
## Skills
|
|
206
|
+
|
|
207
|
+
42 on-demand knowledge modules across Rails, Docker, Kamal, Git, and Process. Run `agent-notes list skills` for the current list, or browse `agent_notes/data/skills/`.
|
|
208
|
+
|
|
209
|
+
### Using skills in Claude Code / OpenCode
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
Use the rails-models skill to help with this association
|
|
213
|
+
Load the docker-compose skill for multi-service setup
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Agent Memory
|
|
217
|
+
|
|
218
|
+
Agents accumulate knowledge across sessions using one of three backends, chosen during `agent-notes install`.
|
|
219
|
+
|
|
220
|
+
### Backends
|
|
221
|
+
|
|
222
|
+
| Backend | Storage | Best for |
|
|
223
|
+
|---------|---------|----------|
|
|
224
|
+
| **Local** | `~/.claude/agent-memory/<agent>/` — plain markdown per agent | Simple setup, no extra tools |
|
|
225
|
+
| **Obsidian** | Category vault with YAML frontmatter and `[[wikilinks]]` | Visual browsing, backlinks, Dataview queries |
|
|
226
|
+
| **None** | Disabled — no files written | Stateless or shared machines |
|
|
227
|
+
|
|
228
|
+
### Obsidian setup
|
|
229
|
+
|
|
230
|
+
Run `agent-notes install` and pick Obsidian when prompted. The wizard auto-detects existing vaults under `~/Documents`, `~/Desktop`, and `~`. To initialize the vault structure:
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
agent-notes memory init
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
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`.
|
|
237
|
+
|
|
238
|
+
### Memory commands
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
agent-notes memory init # create folder structure and Index.md
|
|
242
|
+
agent-notes memory list # list all notes (by category or agent)
|
|
243
|
+
agent-notes memory vault # show backend, path, and init status
|
|
244
|
+
agent-notes memory index # regenerate Index.md
|
|
245
|
+
agent-notes memory add <title> <body> [type] [agent] [project] # type: pattern|decision|mistake|context|session
|
|
246
|
+
agent-notes memory show <agent> # show one agent's notes (local backend)
|
|
247
|
+
agent-notes memory reset [agent] # clear memory (confirmation required)
|
|
248
|
+
agent-notes memory export # back up to memory-backup/
|
|
249
|
+
agent-notes memory import # restore from memory-backup/
|
|
250
|
+
agent-notes install --reconfigure # switch backends
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Note format (Obsidian backend)
|
|
254
|
+
|
|
255
|
+
Every note agent-notes writes includes YAML frontmatter for filtering and Dataview queries:
|
|
256
|
+
|
|
257
|
+
```markdown
|
|
258
|
+
---
|
|
259
|
+
created_at: 2026-04-28T19:30:35Z
|
|
260
|
+
type: pattern
|
|
261
|
+
agent: coder
|
|
262
|
+
project: rubakas
|
|
263
|
+
tags: [rails, models]
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
# Rails Enum Prefix
|
|
267
|
+
|
|
268
|
+
Always use `_prefix: true` with Rails enums to avoid method name collisions.
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## Development
|
|
272
|
+
|
|
273
|
+
Python 3.9+ required. Build from source and run tests:
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
python -m build && pipx install dist/*.whl
|
|
277
|
+
python3 -m pytest tests/
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
Run `agent-notes build` after editing `agent_notes/data/` files, and `agent-notes validate` before committing.
|
|
281
|
+
|
|
282
|
+
Tests live in `tests/functional/` (unit), `tests/integration/` (build output), and `tests/plugins/` (artifact validation).
|
|
283
|
+
|
|
284
|
+
## Contributing
|
|
285
|
+
|
|
286
|
+
When adding new content:
|
|
287
|
+
|
|
288
|
+
1. **Edit source files** — all changes go in `agent_notes/data/` directory
|
|
289
|
+
2. **Run build** — `agent-notes build` to generate platform configs
|
|
290
|
+
3. **Validate** — `agent-notes validate` before committing
|
|
291
|
+
4. **Keep it generic** — remove app-specific references
|
|
292
|
+
5. **Show examples** — include code samples with explanations
|
|
293
|
+
6. **Stay modular** — each skill should be independently usable
|
|
294
|
+
7. **Stay concise** — agent prompts under 60 lines
|
|
295
|
+
|
|
296
|
+
See [docs/](docs/) for full guidelines.
|
|
297
|
+
|
|
298
|
+
## License
|
|
299
|
+
|
|
300
|
+
MIT
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# agent-notes
|
|
2
|
+
|
|
3
|
+
AI agent configuration manager for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) and [OpenCode](https://github.com/opencode-ai/opencode).
|
|
4
|
+
|
|
5
|
+
Configures a Lead agent (Opus) that orchestrates a team of 18 specialized subagents across three model tiers — so Opus plans and reasons, Sonnet executes, and Haiku explores.
|
|
6
|
+
|
|
7
|
+
## Quick Start
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pip install agent-notes
|
|
11
|
+
agent-notes install # interactive wizard guides you through setup
|
|
12
|
+
agent-notes doctor
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## What's Included
|
|
16
|
+
|
|
17
|
+
| Component | Description |
|
|
18
|
+
|-----------|-------------|
|
|
19
|
+
| **Skills** | 42 on-demand knowledge modules (Rails, Docker, Git, Kamal, Process) |
|
|
20
|
+
| **Agents** | 18 specialized AI subagents with hierarchical model strategy |
|
|
21
|
+
| **Rules** | Global instructions, code quality, and safety guardrails |
|
|
22
|
+
| **Config** | Global instructions for Claude Code, OpenCode, and GitHub Copilot |
|
|
23
|
+
|
|
24
|
+
## Install Methods
|
|
25
|
+
|
|
26
|
+
There are three ways to use agent-notes. Pick the one that matches your intent.
|
|
27
|
+
|
|
28
|
+
### 1. Python package — PyPI (recommended)
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pip install agent-notes
|
|
32
|
+
# or
|
|
33
|
+
pipx install agent-notes
|
|
34
|
+
agent-notes install
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Update anytime:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
pip install --upgrade agent-notes && agent-notes install
|
|
41
|
+
# or
|
|
42
|
+
pipx upgrade agent-notes && agent-notes install
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 2. Python package — from local build (developers)
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
git clone https://github.com/rubakas/agent-notes.git
|
|
49
|
+
cd agent-notes
|
|
50
|
+
python -m build # produces dist/*.whl
|
|
51
|
+
pipx install dist/*.whl # or pip install --user dist/*.whl
|
|
52
|
+
agent-notes install
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Iteration loop: edit source → `python -m build` → `pipx reinstall dist/*.whl`. Not editable mode. Not `pip install -e .`.
|
|
56
|
+
|
|
57
|
+
### 3. Plugin — limited functionality
|
|
58
|
+
|
|
59
|
+
- **Claude Code**: install via the Claude Code plugin marketplace.
|
|
60
|
+
- **OpenCode**: copy or symlink `.opencode-plugin/` into `~/.config/opencode/plugins/agent-notes/` and add `"plugin": ["agent-notes"]` to `opencode.json`.
|
|
61
|
+
|
|
62
|
+
The plugin runs a `session.start` hook that surfaces agent-notes context to the CLI session. It does **not** include the full `agent-notes` CLI (wizard, doctor, config, memory, etc.). For those, use install method 1 or 2.
|
|
63
|
+
|
|
64
|
+
### API keys
|
|
65
|
+
|
|
66
|
+
Provider API keys live in `~/.agent-notes/credentials.toml` (mode 0600, never committed). Add or update via:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
agent-notes config providers
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The wizard prompts for the key with hidden input; agent-notes never logs or prints the value. To check whether a provider is configured without exposing the key:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
agent-notes config provider openrouter # prints "configured" or "no key"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## CLI Reference
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
agent-notes <command> [options]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
| Command | Description |
|
|
85
|
+
|---------|-------------|
|
|
86
|
+
| `install [--local] [--copy]` | Interactive wizard or direct install |
|
|
87
|
+
| `uninstall [--local]` | Remove installed components |
|
|
88
|
+
| `update` | Pull latest, rebuild, reinstall |
|
|
89
|
+
| `doctor [--local] [--fix]` | Check installation health |
|
|
90
|
+
| `info` | Show status and component counts |
|
|
91
|
+
| `list [clis\|models\|roles\|agents\|skills\|rules\|all]` | List engine components or installed |
|
|
92
|
+
| `set role <role> <model> [--cli <cli>]` | Change model for a role (Phase 10+) |
|
|
93
|
+
| `regenerate [--cli <cli>]` | Rebuild files from state.json (Phase 10+) |
|
|
94
|
+
| `validate` | Lint source configuration files |
|
|
95
|
+
| `memory [list\|size\|show\|reset\|export\|import] [name]` | Manage agent memory |
|
|
96
|
+
|
|
97
|
+
### Supported platforms
|
|
98
|
+
|
|
99
|
+
| Platform | Install target | Config format |
|
|
100
|
+
|----------|---------------|---------------|
|
|
101
|
+
| **Claude Code** | `~/.claude/` | YAML frontmatter + Markdown prompts |
|
|
102
|
+
| **OpenCode** | `~/.config/opencode/` | YAML frontmatter + Markdown prompts |
|
|
103
|
+
| **GitHub Copilot** | `~/.github/` | `copilot-instructions.md` |
|
|
104
|
+
|
|
105
|
+
### Quick usage examples
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# Interactive install (recommended)
|
|
109
|
+
agent-notes install
|
|
110
|
+
|
|
111
|
+
# Direct install (scripted)
|
|
112
|
+
agent-notes install --local --copy
|
|
113
|
+
|
|
114
|
+
# Check health and fix issues
|
|
115
|
+
agent-notes doctor --fix
|
|
116
|
+
|
|
117
|
+
# Manage agent memory
|
|
118
|
+
agent-notes memory list
|
|
119
|
+
agent-notes memory add "Rails enum prefix" \
|
|
120
|
+
"Always use _prefix: true to avoid method name collisions" \
|
|
121
|
+
pattern coder
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Agent Team
|
|
125
|
+
|
|
126
|
+
Specialized subagents with hierarchical model strategy: **Opus 4.7 decides, Sonnet 4 executes, Haiku 4.5 explores.**
|
|
127
|
+
|
|
128
|
+
| Agent | Model | Role |
|
|
129
|
+
|-------|-------|------|
|
|
130
|
+
| **lead** | Opus 4.7 | Plans, delegates, reviews. Orchestrator. |
|
|
131
|
+
| **architect** | Opus 4.7 | System architecture, module boundaries, domain models. Read-only. |
|
|
132
|
+
| **debugger** | Opus 4.7 | Bug investigation: reproduces, isolates, identifies root cause. Read-only. |
|
|
133
|
+
| **coder** | Sonnet 4 | Implements features, fixes bugs, edits files. |
|
|
134
|
+
| **reviewer** | Sonnet 4 | Code quality review. Read-only. |
|
|
135
|
+
| **security-auditor** | Sonnet 4 | Security vulnerability analysis. Read-only. |
|
|
136
|
+
| **test-writer** | Sonnet 4 | Writes tests for any framework. |
|
|
137
|
+
| **test-runner** | Sonnet 4 | Diagnoses and fixes failing tests. |
|
|
138
|
+
| **system-auditor** | Sonnet 4 | Codebase health: duplication, N+1, coupling. Read-only. |
|
|
139
|
+
| **database-specialist** | Sonnet 4 | Schema design, indexes, query performance, migrations. Read-only. |
|
|
140
|
+
| **performance-profiler** | Sonnet 4 | Response times, memory, caching, bundle size. Read-only. |
|
|
141
|
+
| **devops** | Sonnet 4 | Docker, CI/CD, deployment configs. |
|
|
142
|
+
| **devil** | Sonnet 4 | Challenges plans to surface hidden risks. Read-only. |
|
|
143
|
+
| **integrations** | Sonnet 4 | Third-party integrations: OAuth, webhooks, payments. |
|
|
144
|
+
| **refactorer** | Sonnet 4 | Improves code structure without changing behavior. |
|
|
145
|
+
| **analyst** | Haiku 4.5 | Requirements analysis: surfaces missing or contradictory requirements. Read-only. |
|
|
146
|
+
| **api-reviewer** | Haiku 4.5 | API design, versioning, error handling, backward compatibility. Read-only. |
|
|
147
|
+
| **tech-writer** | Haiku 4.5 | Documentation: READMEs, API docs, changelogs. |
|
|
148
|
+
| **explorer** | Haiku 4.5 | Fast file discovery and pattern search. Read-only. |
|
|
149
|
+
|
|
150
|
+
## Architecture
|
|
151
|
+
|
|
152
|
+
agent-notes is a 4-layer engine (domain / registries / services / commands). All extensible content (CLIs, models, roles, agents, skills, rules) lives in `agent_notes/data/` as YAML — adding a new CLI/model/role is a YAML drop, no Python changes. See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md), [docs/ADD_CLI.md](docs/ADD_CLI.md), [docs/ADD_MODEL.md](docs/ADD_MODEL.md), [docs/ADD_ROLE.md](docs/ADD_ROLE.md).
|
|
153
|
+
|
|
154
|
+
## Improved Claude Code workflows
|
|
155
|
+
|
|
156
|
+
Four failure modes that derail AI-assisted development, and the skills that address them. Inspired by [Matt Pocock's skills repo](https://github.com/mattpocock/skills).
|
|
157
|
+
|
|
158
|
+
| Failure mode | What goes wrong | Skills that help |
|
|
159
|
+
|---|---|---|
|
|
160
|
+
| **Misalignment** | Claude starts building before the problem is resolved | `/grill-me`, `/grill-with-docs` |
|
|
161
|
+
| **Verbosity** | Responses are bloated; context window fills with noise | `/caveman`, `/setup-project-context` |
|
|
162
|
+
| **Broken code** | Claude codes without a feedback loop or evidence trail | `/tdd` (improved), `/debugging-protocol` (improved) |
|
|
163
|
+
| **Ball of mud** | Architecture drifts; modules grow shallow and tangled | `/improve-codebase-architecture`, `/zoom-out` |
|
|
164
|
+
|
|
165
|
+
- `/grill-me` — interview the user until the problem is fully resolved before touching code
|
|
166
|
+
- `/grill-with-docs` — same, but cross-references CONTEXT.md and ADRs and updates them inline
|
|
167
|
+
- `/caveman` — ultra-compressed reply mode (~75% token savings) for rapid iteration
|
|
168
|
+
- `/setup-project-context` — bootstraps a CONTEXT.md domain glossary (ubiquitous language)
|
|
169
|
+
- `/tdd` — RED-GREEN-REFACTOR with tracer-bullet vertical slices; horizontal-slicing anti-pattern added
|
|
170
|
+
- `/debugging-protocol` — Phase 1 rewritten as "build a feedback loop first" with 9 strategies
|
|
171
|
+
- `/improve-codebase-architecture` — deletion test to find shallow modules; surfaces deepening opportunities
|
|
172
|
+
- `/zoom-out` — quick orientation map of an unfamiliar code area
|
|
173
|
+
|
|
174
|
+
## Skills
|
|
175
|
+
|
|
176
|
+
42 on-demand knowledge modules across Rails, Docker, Kamal, Git, and Process. Run `agent-notes list skills` for the current list, or browse `agent_notes/data/skills/`.
|
|
177
|
+
|
|
178
|
+
### Using skills in Claude Code / OpenCode
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
Use the rails-models skill to help with this association
|
|
182
|
+
Load the docker-compose skill for multi-service setup
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Agent Memory
|
|
186
|
+
|
|
187
|
+
Agents accumulate knowledge across sessions using one of three backends, chosen during `agent-notes install`.
|
|
188
|
+
|
|
189
|
+
### Backends
|
|
190
|
+
|
|
191
|
+
| Backend | Storage | Best for |
|
|
192
|
+
|---------|---------|----------|
|
|
193
|
+
| **Local** | `~/.claude/agent-memory/<agent>/` — plain markdown per agent | Simple setup, no extra tools |
|
|
194
|
+
| **Obsidian** | Category vault with YAML frontmatter and `[[wikilinks]]` | Visual browsing, backlinks, Dataview queries |
|
|
195
|
+
| **None** | Disabled — no files written | Stateless or shared machines |
|
|
196
|
+
|
|
197
|
+
### Obsidian setup
|
|
198
|
+
|
|
199
|
+
Run `agent-notes install` and pick Obsidian when prompted. The wizard auto-detects existing vaults under `~/Documents`, `~/Desktop`, and `~`. To initialize the vault structure:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
agent-notes memory init
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
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`.
|
|
206
|
+
|
|
207
|
+
### Memory commands
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
agent-notes memory init # create folder structure and Index.md
|
|
211
|
+
agent-notes memory list # list all notes (by category or agent)
|
|
212
|
+
agent-notes memory vault # show backend, path, and init status
|
|
213
|
+
agent-notes memory index # regenerate Index.md
|
|
214
|
+
agent-notes memory add <title> <body> [type] [agent] [project] # type: pattern|decision|mistake|context|session
|
|
215
|
+
agent-notes memory show <agent> # show one agent's notes (local backend)
|
|
216
|
+
agent-notes memory reset [agent] # clear memory (confirmation required)
|
|
217
|
+
agent-notes memory export # back up to memory-backup/
|
|
218
|
+
agent-notes memory import # restore from memory-backup/
|
|
219
|
+
agent-notes install --reconfigure # switch backends
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Note format (Obsidian backend)
|
|
223
|
+
|
|
224
|
+
Every note agent-notes writes includes YAML frontmatter for filtering and Dataview queries:
|
|
225
|
+
|
|
226
|
+
```markdown
|
|
227
|
+
---
|
|
228
|
+
created_at: 2026-04-28T19:30:35Z
|
|
229
|
+
type: pattern
|
|
230
|
+
agent: coder
|
|
231
|
+
project: rubakas
|
|
232
|
+
tags: [rails, models]
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
# Rails Enum Prefix
|
|
236
|
+
|
|
237
|
+
Always use `_prefix: true` with Rails enums to avoid method name collisions.
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Development
|
|
241
|
+
|
|
242
|
+
Python 3.9+ required. Build from source and run tests:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
python -m build && pipx install dist/*.whl
|
|
246
|
+
python3 -m pytest tests/
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
Run `agent-notes build` after editing `agent_notes/data/` files, and `agent-notes validate` before committing.
|
|
250
|
+
|
|
251
|
+
Tests live in `tests/functional/` (unit), `tests/integration/` (build output), and `tests/plugins/` (artifact validation).
|
|
252
|
+
|
|
253
|
+
## Contributing
|
|
254
|
+
|
|
255
|
+
When adding new content:
|
|
256
|
+
|
|
257
|
+
1. **Edit source files** — all changes go in `agent_notes/data/` directory
|
|
258
|
+
2. **Run build** — `agent-notes build` to generate platform configs
|
|
259
|
+
3. **Validate** — `agent-notes validate` before committing
|
|
260
|
+
4. **Keep it generic** — remove app-specific references
|
|
261
|
+
5. **Show examples** — include code samples with explanations
|
|
262
|
+
6. **Stay modular** — each skill should be independently usable
|
|
263
|
+
7. **Stay concise** — agent prompts under 60 lines
|
|
264
|
+
|
|
265
|
+
See [docs/](docs/) for full guidelines.
|
|
266
|
+
|
|
267
|
+
## License
|
|
268
|
+
|
|
269
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.9.0
|
|
@@ -286,6 +286,19 @@ def main():
|
|
|
286
286
|
help="Memory action")
|
|
287
287
|
p_memory.add_argument("name", nargs="?", help="Agent name / note title (for show/reset/add)")
|
|
288
288
|
p_memory.add_argument("extra", nargs="*", help="Additional args (for add: body [type] [agent] [project])")
|
|
289
|
+
|
|
290
|
+
# cost-report
|
|
291
|
+
p_cost_report = subparsers.add_parser("cost-report", help="Report token usage and cost for the current AI session")
|
|
292
|
+
p_cost_report.add_argument("--since", help="Only include messages at or after this UTC datetime (ISO 8601)")
|
|
293
|
+
p_cost_report.add_argument("--session", help="Session ID to report on (Claude Code only)")
|
|
294
|
+
|
|
295
|
+
# config
|
|
296
|
+
p_config = subparsers.add_parser("config", help="Reconfigure role/agent/model/memory/skill assignments after install")
|
|
297
|
+
p_config.add_argument("action", nargs="?", default="wizard",
|
|
298
|
+
choices=["wizard", "show", "role-model", "role-agent"],
|
|
299
|
+
help="Config action (default: wizard)")
|
|
300
|
+
p_config.add_argument("extra", nargs="*", help="Additional positional args (role, model, agent)")
|
|
301
|
+
p_config.add_argument("--cli", help="Target CLI (claude / opencode / both)")
|
|
289
302
|
|
|
290
303
|
args = parser.parse_args()
|
|
291
304
|
|
|
@@ -343,6 +356,24 @@ def main():
|
|
|
343
356
|
elif args.command == "memory":
|
|
344
357
|
from .commands.memory import memory
|
|
345
358
|
memory(args.action, args.name, getattr(args, "extra", None))
|
|
359
|
+
elif args.command == "config":
|
|
360
|
+
from .commands.config import config
|
|
361
|
+
config(action=args.action, args=getattr(args, "extra", None) or [], cli_filter=args.cli)
|
|
362
|
+
elif args.command == "cost-report":
|
|
363
|
+
# Rebuild sys.argv slice so cost_report.main() can parse it normally
|
|
364
|
+
argv = []
|
|
365
|
+
if args.since:
|
|
366
|
+
argv += ["--since", args.since]
|
|
367
|
+
if args.session:
|
|
368
|
+
argv += ["--session", args.session]
|
|
369
|
+
import sys
|
|
370
|
+
old_argv = sys.argv
|
|
371
|
+
sys.argv = ["agent-notes cost-report"] + argv
|
|
372
|
+
try:
|
|
373
|
+
from .scripts.cost_report import main as _cost_report_main
|
|
374
|
+
sys.exit(_cost_report_main())
|
|
375
|
+
finally:
|
|
376
|
+
sys.argv = old_argv
|
|
346
377
|
|
|
347
378
|
if __name__ == "__main__":
|
|
348
379
|
main()
|
|
@@ -5,7 +5,7 @@ from pathlib import Path
|
|
|
5
5
|
from typing import List
|
|
6
6
|
|
|
7
7
|
from ..config import (
|
|
8
|
-
ROOT, DIST_CLAUDE_DIR, DIST_OPENCODE_DIR, DIST_GITHUB_DIR, DIST_RULES_DIR, DIST_SKILLS_DIR,
|
|
8
|
+
ROOT, DIST_CLAUDE_DIR, DIST_OPENCODE_DIR, DIST_GITHUB_DIR, DIST_RULES_DIR, DIST_SKILLS_DIR,
|
|
9
9
|
CLAUDE_HOME, OPENCODE_HOME, GITHUB_HOME, AGENTS_HOME, BIN_HOME,
|
|
10
10
|
linked, removed, skipped, info, get_version, Color, PKG_DIR
|
|
11
11
|
)
|
|
@@ -17,11 +17,6 @@ from ..services.fs import (
|
|
|
17
17
|
)
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
def install_scripts_global() -> None:
|
|
21
|
-
"""Install scripts to ~/.local/bin/."""
|
|
22
|
-
from ..services.installer import install_scripts_global as _service_impl
|
|
23
|
-
_service_impl()
|
|
24
|
-
|
|
25
20
|
|
|
26
21
|
def _install_skills_to(targets: List[Path], dist_skills_dir: Path, copy_mode: bool) -> None:
|
|
27
22
|
"""Install skills from dist_skills_dir to each directory in targets."""
|
|
@@ -108,11 +103,6 @@ def install_rules_local(copy_mode: bool = False) -> None:
|
|
|
108
103
|
place_dir_contents(DIST_RULES_DIR, Path(".claude/rules"), "*.md", copy_mode)
|
|
109
104
|
|
|
110
105
|
|
|
111
|
-
def uninstall_scripts_global() -> None:
|
|
112
|
-
"""Uninstall scripts from ~/.local/bin/."""
|
|
113
|
-
from ..services.installer import uninstall_scripts_global as _service_impl
|
|
114
|
-
_service_impl()
|
|
115
|
-
|
|
116
106
|
|
|
117
107
|
def _uninstall_skills_from(targets: List[Path]) -> None:
|
|
118
108
|
"""Remove skills from each directory in targets."""
|
|
@@ -183,10 +173,6 @@ def uninstall_rules_local() -> None:
|
|
|
183
173
|
)
|
|
184
174
|
|
|
185
175
|
|
|
186
|
-
def count_scripts() -> int:
|
|
187
|
-
"""Count script files."""
|
|
188
|
-
return len([f for f in DIST_SCRIPTS_DIR.iterdir() if f.is_file()]) if DIST_SCRIPTS_DIR.exists() else 0
|
|
189
|
-
|
|
190
176
|
|
|
191
177
|
def count_skills() -> int:
|
|
192
178
|
"""Count skill directories."""
|
|
@@ -196,16 +182,13 @@ def count_skills() -> int:
|
|
|
196
182
|
|
|
197
183
|
|
|
198
184
|
def count_agents(backend) -> int:
|
|
199
|
-
"""Count
|
|
185
|
+
"""Count agents for backend from the canonical YAML source. Returns 0 if backend
|
|
200
186
|
doesn't support agents."""
|
|
201
|
-
from ..services import installer
|
|
202
|
-
from ..domain.cli_backend import CLIBackend
|
|
203
187
|
if not backend.supports("agents"):
|
|
204
188
|
return 0
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
return len(list(src.glob("*.md")))
|
|
189
|
+
from ..registries.agent_registry import load_agent_registry
|
|
190
|
+
registry = load_agent_registry()
|
|
191
|
+
return sum(1 for a in registry.all() if not a.excluded_from(backend.name))
|
|
209
192
|
|
|
210
193
|
|
|
211
194
|
def count_global() -> int:
|