agent-notes 2.17.0__tar.gz → 2.19.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.17.0 → agent_notes-2.19.0}/PKG-INFO +56 -31
- {agent_notes-2.17.0 → agent_notes-2.19.0}/README.md +55 -30
- agent_notes-2.19.0/agent_notes/VERSION +1 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/memory.py +63 -1
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/agents.yaml +1 -1
- agent_notes-2.19.0/agent_notes/data/agents/lead.md +47 -0
- agent_notes-2.19.0/agent_notes/data/agents/shared/execution.md +89 -0
- agent_notes-2.19.0/agent_notes/data/agents/shared/guardrails.md +28 -0
- agent_notes-2.19.0/agent_notes/data/agents/shared/hard_limits.md +20 -0
- agent_notes-2.19.0/agent_notes/data/agents/shared/phase0.md +20 -0
- agent_notes-2.19.0/agent_notes/data/agents/shared/pipelines.md +16 -0
- agent_notes-2.19.0/agent_notes/data/agents/shared/review.md +34 -0
- agent_notes-2.19.0/agent_notes/data/agents/shared/verification.md +51 -0
- agent_notes-2.19.0/agent_notes/data/global-claude.md +84 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/obsidian-memory/SKILL.md +15 -0
- agent_notes-2.19.0/agent_notes/data/skills/rails/SKILL.md +43 -0
- agent_notes-2.19.0/agent_notes/data/skills/rails/controllers.md +770 -0
- agent_notes-2.17.0/agent_notes/data/skills/rails-javascript/SKILL.md → agent_notes-2.19.0/agent_notes/data/skills/rails/frontend.md +429 -254
- agent_notes-2.19.0/agent_notes/data/skills/rails/infra.md +1121 -0
- agent_notes-2.19.0/agent_notes/data/skills/rails/models.md +1105 -0
- agent_notes-2.19.0/agent_notes/data/skills/rails/testing.md +566 -0
- agent_notes-2.19.0/agent_notes/data/skills/rails/views.md +620 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/scripts/_pricing.py +2 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/diagnostics/_display.py +2 -2
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/memory_backend.py +0 -15
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/rendering.py +7 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/wiki_backend.py +0 -1
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes.egg-info/PKG-INFO +56 -31
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes.egg-info/SOURCES.txt +13 -25
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/build_output/test_build_output.py +1 -1
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/registries/test_registries.py +1 -1
- agent_notes-2.17.0/agent_notes/VERSION +0 -1
- agent_notes-2.17.0/agent_notes/data/agents/lead.md +0 -262
- agent_notes-2.17.0/agent_notes/data/agents/shared/phase0.md +0 -20
- agent_notes-2.17.0/agent_notes/data/global-claude.md +0 -364
- agent_notes-2.17.0/agent_notes/data/skills/rails-active-storage/SKILL.md +0 -321
- agent_notes-2.17.0/agent_notes/data/skills/rails-broadcasting/SKILL.md +0 -374
- agent_notes-2.17.0/agent_notes/data/skills/rails-concerns/SKILL.md +0 -806
- agent_notes-2.17.0/agent_notes/data/skills/rails-controllers/SKILL.md +0 -510
- agent_notes-2.17.0/agent_notes/data/skills/rails-controllers-advanced/SKILL.md +0 -441
- agent_notes-2.17.0/agent_notes/data/skills/rails-helpers/SKILL.md +0 -677
- agent_notes-2.17.0/agent_notes/data/skills/rails-initializers/SKILL.md +0 -79
- agent_notes-2.17.0/agent_notes/data/skills/rails-jobs/SKILL.md +0 -700
- agent_notes-2.17.0/agent_notes/data/skills/rails-kamal/SKILL.md +0 -483
- agent_notes-2.17.0/agent_notes/data/skills/rails-lib/SKILL.md +0 -101
- agent_notes-2.17.0/agent_notes/data/skills/rails-mailers/SKILL.md +0 -321
- agent_notes-2.17.0/agent_notes/data/skills/rails-migrations/SKILL.md +0 -268
- agent_notes-2.17.0/agent_notes/data/skills/rails-models/SKILL.md +0 -459
- agent_notes-2.17.0/agent_notes/data/skills/rails-models-advanced/SKILL.md +0 -398
- agent_notes-2.17.0/agent_notes/data/skills/rails-routes/SKILL.md +0 -804
- agent_notes-2.17.0/agent_notes/data/skills/rails-style/SKILL.md +0 -538
- agent_notes-2.17.0/agent_notes/data/skills/rails-testing-controllers/SKILL.md +0 -343
- agent_notes-2.17.0/agent_notes/data/skills/rails-testing-models/SKILL.md +0 -296
- agent_notes-2.17.0/agent_notes/data/skills/rails-testing-system/SKILL.md +0 -375
- agent_notes-2.17.0/agent_notes/data/skills/rails-validations/SKILL.md +0 -108
- agent_notes-2.17.0/agent_notes/data/skills/rails-view-components/SKILL.md +0 -511
- agent_notes-2.17.0/agent_notes/data/skills/rails-view-components-advanced/SKILL.md +0 -376
- agent_notes-2.17.0/agent_notes/data/skills/rails-views/SKILL.md +0 -413
- agent_notes-2.17.0/agent_notes/data/skills/rails-views-advanced/SKILL.md +0 -450
- {agent_notes-2.17.0 → agent_notes-2.19.0}/LICENSE +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/__main__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/cli.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/_install_helpers.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/build.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/config.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/doctor.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/info.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/install.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/list.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/regenerate.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/set_role.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/uninstall.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/validate.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/commands/wizard.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/config.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/analyst.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/api-reviewer.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/architect.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/coder.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/database-specialist.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/debugger.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/devil.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/devops.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/explorer.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/integrations.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/performance-profiler.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/refactorer.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/reviewer.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/security-auditor.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/shared/cost_reporting.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/system-auditor.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/tech-writer.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/test-runner.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/agents/test-writer.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/cli/claude.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/cli/copilot.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/cli/opencode.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/commands/brainstorm.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/commands/debug.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/commands/review.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/global-copilot.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/global-opencode.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/hooks/session-context.md.tpl +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-haiku-4-5.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-opus-4-1.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-opus-4-5.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-opus-4-6.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-opus-4-7.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-sonnet-4-5.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-sonnet-4-6.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/models/claude-sonnet-4.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/plugin/claude.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/plugin/opencode-index.js.template +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/plugin/opencode.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/pricing.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/roles/orchestrator.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/roles/reasoner.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/roles/scout.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/roles/worker.yaml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/rules/code-quality.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/rules/safety.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/brainstorming/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/caveman/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/code-review/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/debugging-protocol/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/docker-compose/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/docker-compose-advanced/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/docker-dockerfile/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/docker-dockerfile-languages/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/git/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/grill-me/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/grill-with-docs/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/improve-codebase-architecture/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/refactoring-protocol/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/setup-project-context/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/tdd/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/skills/zoom-out/SKILL.md +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/__pycache__/__init__.cpython-314.pyc +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/frontmatter/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-314.pyc +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-314.pyc +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/frontmatter/claude.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/data/templates/frontmatter/opencode.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/doctor_checks.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/agent.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/cli_backend.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/diagnostics.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/diff.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/model.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/role.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/rule.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/skill.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/domain/state.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/install_state.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/_base.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/agent_registry.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/cli_registry.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/model_registry.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/role_registry.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/rule_registry.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/registries/skill_registry.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/scripts/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/scripts/_claude_backend.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/scripts/_formatting.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/scripts/_opencode_backend.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/scripts/cost_report.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/counts.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/credentials.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/diagnostics/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/diagnostics/_checks.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/diagnostics/_fix.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/diff.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/fs.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/install_state_builder.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/installer.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/session_context.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/settings_writer.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/state_store.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/ui.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/user_config.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/services/validation.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes/state.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes.egg-info/dependency_links.txt +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes.egg-info/entry_points.txt +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes.egg-info/requires.txt +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/agent_notes.egg-info/top_level.txt +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/pyproject.toml +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/setup.cfg +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/conftest.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_config_command.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_doctor_command.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_info_command.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_install_command.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_list_command.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_regenerate_command.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_uninstall_command.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/commands/test_validate_command.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/memory/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/memory/test_memory_command.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/scripts/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/functional/scripts/test_release_script.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/build_output/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/install/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/install/test_install_methods.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/plugin_builders/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/integration/plugin_builders/test_plugin_builders.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/plugins/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/plugins/claude/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/plugins/claude/test_agents.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/plugins/test_skills.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/commands/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/commands/test_cost_report_subcommand.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/commands/test_count_agents.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/commands/test_memory_migrate.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/commands/test_wizard_orchestrator_skip.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/commands/test_wizard_preflight.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/registries/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/scripts/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/scripts/test_cost_report.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/scripts/test_cost_report_scoping.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/scripts/test_formatting_tty.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/scripts/test_time_aggregation.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/__init__.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_build_functions.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_credentials.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_fs.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_installer_plan.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_memory_backend.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_memory_backend_io.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_rendering_includes.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_session_context.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_settings_writer.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/services/test_wiki_backend.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.0}/tests/unit/test_import_health.py +0 -0
- {agent_notes-2.17.0 → agent_notes-2.19.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.
|
|
3
|
+
Version: 2.19.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
|
|
@@ -32,7 +32,7 @@ Dynamic: license-file
|
|
|
32
32
|
|
|
33
33
|
AI agent configuration manager for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) and [OpenCode](https://github.com/opencode-ai/opencode).
|
|
34
34
|
|
|
35
|
-
Configures a Lead agent (Opus) that orchestrates a team of
|
|
35
|
+
Configures a Lead agent (Opus) that orchestrates a team of 19 specialized subagents across three model tiers — so Opus 4.6 plans and reasons, Sonnet 4.6 executes, and Haiku 4.5 explores.
|
|
36
36
|
|
|
37
37
|
## Quick Start
|
|
38
38
|
|
|
@@ -46,8 +46,8 @@ agent-notes doctor
|
|
|
46
46
|
|
|
47
47
|
| Component | Description |
|
|
48
48
|
|-----------|-------------|
|
|
49
|
-
| **Skills** | 42 on-demand knowledge modules (Rails, Docker, Git, Kamal, Process) |
|
|
50
|
-
| **Agents** |
|
|
49
|
+
| **Skills** | 42+ on-demand knowledge modules (Rails, Docker, Git, Kamal, Process) |
|
|
50
|
+
| **Agents** | 19 specialized AI subagents with hierarchical model strategy |
|
|
51
51
|
| **Rules** | Global instructions, code quality, and safety guardrails |
|
|
52
52
|
| **Config** | Global instructions for Claude Code, OpenCode, and GitHub Copilot |
|
|
53
53
|
|
|
@@ -153,29 +153,31 @@ agent-notes memory add "Rails enum prefix" \
|
|
|
153
153
|
|
|
154
154
|
## Agent Team
|
|
155
155
|
|
|
156
|
-
Specialized subagents with hierarchical model strategy: **Opus 4.6
|
|
157
|
-
|
|
158
|
-
| Agent | Model |
|
|
159
|
-
|
|
160
|
-
|
|
|
161
|
-
|
|
|
162
|
-
|
|
|
163
|
-
|
|
|
164
|
-
|
|
|
165
|
-
|
|
|
166
|
-
|
|
|
167
|
-
|
|
|
168
|
-
|
|
|
169
|
-
|
|
|
170
|
-
|
|
|
171
|
-
|
|
|
172
|
-
|
|
|
173
|
-
|
|
|
174
|
-
|
|
|
175
|
-
|
|
|
176
|
-
|
|
|
177
|
-
|
|
|
178
|
-
|
|
|
156
|
+
Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonnet 4.6 executes, Haiku 4.5 scouts.**
|
|
157
|
+
|
|
158
|
+
| Agent | Role | Model Tier | Purpose |
|
|
159
|
+
|---|---|---|---|
|
|
160
|
+
| lead | orchestrator | opus | Plans, coordinates, verifies — the team lead |
|
|
161
|
+
| architect | reasoner | opus | System design, module boundaries, refactor planning |
|
|
162
|
+
| debugger | reasoner | opus | Complex bug investigation, root-cause analysis |
|
|
163
|
+
| coder | worker | sonnet | Implementation, file edits, bug fixes |
|
|
164
|
+
| reviewer | worker | sonnet | Code quality, readability, correctness |
|
|
165
|
+
| security-auditor | worker | sonnet | Auth, injection, XSS, secrets exposure |
|
|
166
|
+
| test-writer | worker | sonnet | Creates tests for any framework |
|
|
167
|
+
| test-runner | worker | sonnet | Diagnoses and fixes failing tests |
|
|
168
|
+
| system-auditor | worker | sonnet | Duplication, dead code, coupling, complexity |
|
|
169
|
+
| database-specialist | worker | sonnet | Schema design, indexes, query performance |
|
|
170
|
+
| performance-profiler | worker | sonnet | Response times, memory, bundle size |
|
|
171
|
+
| api-reviewer | worker | sonnet | REST conventions, versioning, backward compatibility |
|
|
172
|
+
| devops | worker | sonnet | Docker, CI/CD, deployment, infrastructure |
|
|
173
|
+
| devil | worker | sonnet | Devil's advocate — challenges plans and assumptions |
|
|
174
|
+
| integrations | worker | sonnet | OAuth, webhooks, API clients, SSO |
|
|
175
|
+
| refactorer | worker | sonnet | Extracts methods, reduces duplication, improves naming |
|
|
176
|
+
| explorer | scout | haiku | Fast file discovery, pattern search |
|
|
177
|
+
| analyst | scout | haiku | Requirements translation, acceptance criteria |
|
|
178
|
+
| tech-writer | scout | haiku | READMEs, API docs, changelogs |
|
|
179
|
+
|
|
180
|
+
**4 roles, 19 agents, 3 model tiers.** The tiered model strategy optimizes cost: Opus reasons ($15/1M tokens), Sonnet executes ($3/1M), Haiku scouts ($0.80/1M).
|
|
179
181
|
|
|
180
182
|
## Architecture
|
|
181
183
|
|
|
@@ -183,7 +185,7 @@ agent-notes is a 4-layer engine (domain / registries / services / commands). All
|
|
|
183
185
|
|
|
184
186
|
## Improved Claude Code workflows
|
|
185
187
|
|
|
186
|
-
Four failure modes that derail AI-assisted development, and the skills that address them.
|
|
188
|
+
Four failure modes that derail AI-assisted development, and the skills that address them.
|
|
187
189
|
|
|
188
190
|
| Failure mode | What goes wrong | Skills that help |
|
|
189
191
|
|---|---|---|
|
|
@@ -203,7 +205,7 @@ Four failure modes that derail AI-assisted development, and the skills that addr
|
|
|
203
205
|
|
|
204
206
|
## Skills
|
|
205
207
|
|
|
206
|
-
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
|
+
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/`.
|
|
207
209
|
|
|
208
210
|
The session context hook auto-generates a skill index from SKILL.md frontmatter at install time, so agents always know what skills are available without loading full skill content. This keeps context overhead low while maintaining skill discoverability.
|
|
209
211
|
|
|
@@ -216,7 +218,7 @@ Load the docker-compose skill for multi-service setup
|
|
|
216
218
|
|
|
217
219
|
## Agent Memory
|
|
218
220
|
|
|
219
|
-
Agents accumulate knowledge across sessions using one of
|
|
221
|
+
Agents accumulate knowledge across sessions using one of four backends, chosen during `agent-notes install`.
|
|
220
222
|
|
|
221
223
|
### Backends
|
|
222
224
|
|
|
@@ -224,9 +226,27 @@ Agents accumulate knowledge across sessions using one of three backends, chosen
|
|
|
224
226
|
|---------|---------|----------|
|
|
225
227
|
| **Local** | `~/.claude/agent-memory/<agent>/` — plain markdown per agent | Simple setup, no extra tools |
|
|
226
228
|
| **Obsidian** | Category vault with YAML frontmatter and `[[wikilinks]]` | Visual browsing, backlinks, Dataview queries |
|
|
227
|
-
| **Wiki** |
|
|
229
|
+
| **Wiki** | Structured wiki with page types and versioning | Team knowledge bases, compounding knowledge |
|
|
228
230
|
| **None** | Disabled — no files written | Stateless or shared machines |
|
|
229
231
|
|
|
232
|
+
### Session tracking by backend
|
|
233
|
+
|
|
234
|
+
| Feature | Local | Obsidian | Wiki |
|
|
235
|
+
|---|---|---|---|
|
|
236
|
+
| Storage location | `~/.claude/agent-memory/<agent>/` | Obsidian vault with categories | Structured wiki with page types |
|
|
237
|
+
| Note types | Flat markdown per agent | `pattern`, `decision`, `mistake`, `context`, `session` | `source`, `concept`, `entity`, `synthesis`, `session` |
|
|
238
|
+
| Session tracking | None | Auto-created session notes with `## Linked notes` | Session pages in `wiki/sessions/` |
|
|
239
|
+
| Cross-referencing | None | `[[wikilinks]]` auto-appended to session notes | Markdown links maintained by LLM |
|
|
240
|
+
| Key operations | read/write | add, list, show, reset, export, import | ingest, query, lint + add, list, show |
|
|
241
|
+
| Best for | Simple setup, no extra tools | Visual browsing, backlinks, Dataview queries | Team knowledge bases, compounding knowledge |
|
|
242
|
+
|
|
243
|
+
**Obsidian backend** — Uses category directories (`Patterns/`, `Decisions/`, `Mistakes/`, `Context/`, `Sessions/`). When you write a non-session note during an active session, the CLI auto-links it to the session note via `[[wikilinks]]`. Plans are mirrored as Decision notes.
|
|
244
|
+
|
|
245
|
+
**Wiki backend** — Implements Karpathy's LLM Wiki pattern (v1). Structure: `raw/` for immutable source material, `wiki/` for LLM-maintained pages organized into `sources/`, `concepts/`, `entities/`, `synthesis/`, `sessions/`. Three key operations:
|
|
246
|
+
- **ingest** — Process source material, extract key info, update entity/concept pages, append to log
|
|
247
|
+
- **query** — Search wiki pages, synthesize answers with citations, optionally file answers back as new pages
|
|
248
|
+
- **lint** — Health-check for contradictions, stale claims, orphan pages, missing cross-references
|
|
249
|
+
|
|
230
250
|
### Obsidian setup
|
|
231
251
|
|
|
232
252
|
Run `agent-notes install` and pick Obsidian when prompted. The wizard auto-detects existing vaults under `~/Documents`, `~/Desktop`, and `~`. To initialize the vault structure:
|
|
@@ -270,6 +290,11 @@ tags: [rails, models]
|
|
|
270
290
|
Always use `_prefix: true` with Rails enums to avoid method name collisions.
|
|
271
291
|
```
|
|
272
292
|
|
|
293
|
+
## Inspired by
|
|
294
|
+
|
|
295
|
+
- [Andrej Karpathy's LLM Wiki](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) — The wiki memory backend implements his compile-once, query-forever knowledge pattern with structured page types and three core operations (ingest, query, lint)
|
|
296
|
+
- [Matt Pocock's skills repo](https://github.com/mattpocock/skills) — Skill format (SKILL.md per directory), failure-mode table (misalignment, verbosity, broken code, architectural degradation), and several core skills (tdd, grill-me, grill-with-docs, improve-codebase-architecture, zoom-out, caveman)
|
|
297
|
+
|
|
273
298
|
## Development
|
|
274
299
|
|
|
275
300
|
Python 3.10+ required. Build from source and run tests:
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
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
4
|
|
|
5
|
-
Configures a Lead agent (Opus) that orchestrates a team of
|
|
5
|
+
Configures a Lead agent (Opus) that orchestrates a team of 19 specialized subagents across three model tiers — so Opus 4.6 plans and reasons, Sonnet 4.6 executes, and Haiku 4.5 explores.
|
|
6
6
|
|
|
7
7
|
## Quick Start
|
|
8
8
|
|
|
@@ -16,8 +16,8 @@ agent-notes doctor
|
|
|
16
16
|
|
|
17
17
|
| Component | Description |
|
|
18
18
|
|-----------|-------------|
|
|
19
|
-
| **Skills** | 42 on-demand knowledge modules (Rails, Docker, Git, Kamal, Process) |
|
|
20
|
-
| **Agents** |
|
|
19
|
+
| **Skills** | 42+ on-demand knowledge modules (Rails, Docker, Git, Kamal, Process) |
|
|
20
|
+
| **Agents** | 19 specialized AI subagents with hierarchical model strategy |
|
|
21
21
|
| **Rules** | Global instructions, code quality, and safety guardrails |
|
|
22
22
|
| **Config** | Global instructions for Claude Code, OpenCode, and GitHub Copilot |
|
|
23
23
|
|
|
@@ -123,29 +123,31 @@ agent-notes memory add "Rails enum prefix" \
|
|
|
123
123
|
|
|
124
124
|
## Agent Team
|
|
125
125
|
|
|
126
|
-
Specialized subagents with hierarchical model strategy: **Opus 4.6
|
|
127
|
-
|
|
128
|
-
| Agent | Model |
|
|
129
|
-
|
|
130
|
-
|
|
|
131
|
-
|
|
|
132
|
-
|
|
|
133
|
-
|
|
|
134
|
-
|
|
|
135
|
-
|
|
|
136
|
-
|
|
|
137
|
-
|
|
|
138
|
-
|
|
|
139
|
-
|
|
|
140
|
-
|
|
|
141
|
-
|
|
|
142
|
-
|
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
|
|
|
147
|
-
|
|
|
148
|
-
|
|
|
126
|
+
Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonnet 4.6 executes, Haiku 4.5 scouts.**
|
|
127
|
+
|
|
128
|
+
| Agent | Role | Model Tier | Purpose |
|
|
129
|
+
|---|---|---|---|
|
|
130
|
+
| lead | orchestrator | opus | Plans, coordinates, verifies — the team lead |
|
|
131
|
+
| architect | reasoner | opus | System design, module boundaries, refactor planning |
|
|
132
|
+
| debugger | reasoner | opus | Complex bug investigation, root-cause analysis |
|
|
133
|
+
| coder | worker | sonnet | Implementation, file edits, bug fixes |
|
|
134
|
+
| reviewer | worker | sonnet | Code quality, readability, correctness |
|
|
135
|
+
| security-auditor | worker | sonnet | Auth, injection, XSS, secrets exposure |
|
|
136
|
+
| test-writer | worker | sonnet | Creates tests for any framework |
|
|
137
|
+
| test-runner | worker | sonnet | Diagnoses and fixes failing tests |
|
|
138
|
+
| system-auditor | worker | sonnet | Duplication, dead code, coupling, complexity |
|
|
139
|
+
| database-specialist | worker | sonnet | Schema design, indexes, query performance |
|
|
140
|
+
| performance-profiler | worker | sonnet | Response times, memory, bundle size |
|
|
141
|
+
| api-reviewer | worker | sonnet | REST conventions, versioning, backward compatibility |
|
|
142
|
+
| devops | worker | sonnet | Docker, CI/CD, deployment, infrastructure |
|
|
143
|
+
| devil | worker | sonnet | Devil's advocate — challenges plans and assumptions |
|
|
144
|
+
| integrations | worker | sonnet | OAuth, webhooks, API clients, SSO |
|
|
145
|
+
| refactorer | worker | sonnet | Extracts methods, reduces duplication, improves naming |
|
|
146
|
+
| explorer | scout | haiku | Fast file discovery, pattern search |
|
|
147
|
+
| analyst | scout | haiku | Requirements translation, acceptance criteria |
|
|
148
|
+
| tech-writer | scout | haiku | READMEs, API docs, changelogs |
|
|
149
|
+
|
|
150
|
+
**4 roles, 19 agents, 3 model tiers.** The tiered model strategy optimizes cost: Opus reasons ($15/1M tokens), Sonnet executes ($3/1M), Haiku scouts ($0.80/1M).
|
|
149
151
|
|
|
150
152
|
## Architecture
|
|
151
153
|
|
|
@@ -153,7 +155,7 @@ agent-notes is a 4-layer engine (domain / registries / services / commands). All
|
|
|
153
155
|
|
|
154
156
|
## Improved Claude Code workflows
|
|
155
157
|
|
|
156
|
-
Four failure modes that derail AI-assisted development, and the skills that address them.
|
|
158
|
+
Four failure modes that derail AI-assisted development, and the skills that address them.
|
|
157
159
|
|
|
158
160
|
| Failure mode | What goes wrong | Skills that help |
|
|
159
161
|
|---|---|---|
|
|
@@ -173,7 +175,7 @@ Four failure modes that derail AI-assisted development, and the skills that addr
|
|
|
173
175
|
|
|
174
176
|
## Skills
|
|
175
177
|
|
|
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/`.
|
|
178
|
+
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
179
|
|
|
178
180
|
The session context hook auto-generates a skill index from SKILL.md frontmatter at install time, so agents always know what skills are available without loading full skill content. This keeps context overhead low while maintaining skill discoverability.
|
|
179
181
|
|
|
@@ -186,7 +188,7 @@ Load the docker-compose skill for multi-service setup
|
|
|
186
188
|
|
|
187
189
|
## Agent Memory
|
|
188
190
|
|
|
189
|
-
Agents accumulate knowledge across sessions using one of
|
|
191
|
+
Agents accumulate knowledge across sessions using one of four backends, chosen during `agent-notes install`.
|
|
190
192
|
|
|
191
193
|
### Backends
|
|
192
194
|
|
|
@@ -194,9 +196,27 @@ Agents accumulate knowledge across sessions using one of three backends, chosen
|
|
|
194
196
|
|---------|---------|----------|
|
|
195
197
|
| **Local** | `~/.claude/agent-memory/<agent>/` — plain markdown per agent | Simple setup, no extra tools |
|
|
196
198
|
| **Obsidian** | Category vault with YAML frontmatter and `[[wikilinks]]` | Visual browsing, backlinks, Dataview queries |
|
|
197
|
-
| **Wiki** |
|
|
199
|
+
| **Wiki** | Structured wiki with page types and versioning | Team knowledge bases, compounding knowledge |
|
|
198
200
|
| **None** | Disabled — no files written | Stateless or shared machines |
|
|
199
201
|
|
|
202
|
+
### Session tracking by backend
|
|
203
|
+
|
|
204
|
+
| Feature | Local | Obsidian | Wiki |
|
|
205
|
+
|---|---|---|---|
|
|
206
|
+
| Storage location | `~/.claude/agent-memory/<agent>/` | Obsidian vault with categories | Structured wiki with page types |
|
|
207
|
+
| Note types | Flat markdown per agent | `pattern`, `decision`, `mistake`, `context`, `session` | `source`, `concept`, `entity`, `synthesis`, `session` |
|
|
208
|
+
| Session tracking | None | Auto-created session notes with `## Linked notes` | Session pages in `wiki/sessions/` |
|
|
209
|
+
| Cross-referencing | None | `[[wikilinks]]` auto-appended to session notes | Markdown links maintained by LLM |
|
|
210
|
+
| Key operations | read/write | add, list, show, reset, export, import | ingest, query, lint + add, list, show |
|
|
211
|
+
| Best for | Simple setup, no extra tools | Visual browsing, backlinks, Dataview queries | Team knowledge bases, compounding knowledge |
|
|
212
|
+
|
|
213
|
+
**Obsidian backend** — Uses category directories (`Patterns/`, `Decisions/`, `Mistakes/`, `Context/`, `Sessions/`). When you write a non-session note during an active session, the CLI auto-links it to the session note via `[[wikilinks]]`. Plans are mirrored as Decision notes.
|
|
214
|
+
|
|
215
|
+
**Wiki backend** — Implements Karpathy's LLM Wiki pattern (v1). Structure: `raw/` for immutable source material, `wiki/` for LLM-maintained pages organized into `sources/`, `concepts/`, `entities/`, `synthesis/`, `sessions/`. Three key operations:
|
|
216
|
+
- **ingest** — Process source material, extract key info, update entity/concept pages, append to log
|
|
217
|
+
- **query** — Search wiki pages, synthesize answers with citations, optionally file answers back as new pages
|
|
218
|
+
- **lint** — Health-check for contradictions, stale claims, orphan pages, missing cross-references
|
|
219
|
+
|
|
200
220
|
### Obsidian setup
|
|
201
221
|
|
|
202
222
|
Run `agent-notes install` and pick Obsidian when prompted. The wizard auto-detects existing vaults under `~/Documents`, `~/Desktop`, and `~`. To initialize the vault structure:
|
|
@@ -240,6 +260,11 @@ tags: [rails, models]
|
|
|
240
260
|
Always use `_prefix: true` with Rails enums to avoid method name collisions.
|
|
241
261
|
```
|
|
242
262
|
|
|
263
|
+
## Inspired by
|
|
264
|
+
|
|
265
|
+
- [Andrej Karpathy's LLM Wiki](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) — The wiki memory backend implements his compile-once, query-forever knowledge pattern with structured page types and three core operations (ingest, query, lint)
|
|
266
|
+
- [Matt Pocock's skills repo](https://github.com/mattpocock/skills) — Skill format (SKILL.md per directory), failure-mode table (misalignment, verbosity, broken code, architectural degradation), and several core skills (tdd, grill-me, grill-with-docs, improve-codebase-architecture, zoom-out, caveman)
|
|
267
|
+
|
|
243
268
|
## Development
|
|
244
269
|
|
|
245
270
|
Python 3.10+ required. Build from source and run tests:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.19.0
|
|
@@ -250,6 +250,30 @@ def do_show(name: str) -> None:
|
|
|
250
250
|
print("")
|
|
251
251
|
return
|
|
252
252
|
|
|
253
|
+
elif backend == "wiki":
|
|
254
|
+
if path is None:
|
|
255
|
+
print("Memory path not configured.")
|
|
256
|
+
return
|
|
257
|
+
from ..services.wiki_backend import WIKI_PAGE_TYPES
|
|
258
|
+
wiki_dir = path / "wiki"
|
|
259
|
+
if name not in WIKI_PAGE_TYPES:
|
|
260
|
+
print(f"Page type '{name}' not found. Available types: {', '.join(WIKI_PAGE_TYPES)}")
|
|
261
|
+
return
|
|
262
|
+
type_dir = wiki_dir / name
|
|
263
|
+
if not type_dir.exists():
|
|
264
|
+
print(f"No pages found for type '{name}' in wiki {path}")
|
|
265
|
+
return
|
|
266
|
+
print(f"Wiki pages in '{name}':")
|
|
267
|
+
print("")
|
|
268
|
+
for f in sorted(type_dir.glob("*.md")):
|
|
269
|
+
print(f"{Color.CYAN}--- {f.name} ---{Color.NC}")
|
|
270
|
+
try:
|
|
271
|
+
print(f.read_text())
|
|
272
|
+
except (UnicodeDecodeError, OSError):
|
|
273
|
+
print("(binary file or read error)")
|
|
274
|
+
print("")
|
|
275
|
+
return
|
|
276
|
+
|
|
253
277
|
# local backend
|
|
254
278
|
if path is None:
|
|
255
279
|
path = MEMORY_DIR
|
|
@@ -283,6 +307,41 @@ def do_reset(name: Optional[str] = None) -> None:
|
|
|
283
307
|
print("Memory is disabled.")
|
|
284
308
|
return
|
|
285
309
|
|
|
310
|
+
if backend == "wiki":
|
|
311
|
+
if path is None or not path.exists():
|
|
312
|
+
print("No wiki found to reset.")
|
|
313
|
+
return
|
|
314
|
+
target = f"wiki at {path}" if name is None else f"wiki page type '{name}' at {path}"
|
|
315
|
+
print(f"{Color.RED}Warning: this will permanently delete the {target}.{Color.NC}")
|
|
316
|
+
confirm = input("Type 'yes' to confirm: ")
|
|
317
|
+
if confirm == "yes":
|
|
318
|
+
import shutil as _shutil
|
|
319
|
+
from ..services.wiki_backend import WIKI_PAGE_TYPES
|
|
320
|
+
if name is None:
|
|
321
|
+
wiki_dir = path / "wiki"
|
|
322
|
+
for page_type in WIKI_PAGE_TYPES:
|
|
323
|
+
type_dir = wiki_dir / page_type
|
|
324
|
+
if type_dir.exists():
|
|
325
|
+
_shutil.rmtree(type_dir)
|
|
326
|
+
type_dir.mkdir()
|
|
327
|
+
print(f"{Color.GREEN}Wiki at {path} cleared.{Color.NC}")
|
|
328
|
+
else:
|
|
329
|
+
from ..services.wiki_backend import WIKI_PAGE_TYPES
|
|
330
|
+
wiki_dir = path / "wiki"
|
|
331
|
+
if name not in WIKI_PAGE_TYPES:
|
|
332
|
+
print(f"Page type '{name}' not found. Available types: {', '.join(WIKI_PAGE_TYPES)}")
|
|
333
|
+
return
|
|
334
|
+
type_dir = wiki_dir / name
|
|
335
|
+
if not type_dir.exists():
|
|
336
|
+
print(f"No pages found for type '{name}'.")
|
|
337
|
+
return
|
|
338
|
+
_shutil.rmtree(type_dir)
|
|
339
|
+
type_dir.mkdir()
|
|
340
|
+
print(f"{Color.GREEN}Wiki pages for type '{name}' cleared.{Color.NC}")
|
|
341
|
+
else:
|
|
342
|
+
print("Cancelled.")
|
|
343
|
+
return
|
|
344
|
+
|
|
286
345
|
if path is None:
|
|
287
346
|
path = MEMORY_DIR
|
|
288
347
|
|
|
@@ -666,7 +725,7 @@ Commands:
|
|
|
666
725
|
list List all agent memories with sizes (default)
|
|
667
726
|
vault Show current backend and memory path
|
|
668
727
|
index Regenerate Index.md for the current backend
|
|
669
|
-
add <title> <body> Add a note (obsidian
|
|
728
|
+
add <title> <body> Add a note (obsidian and wiki backends)
|
|
670
729
|
migrate Migrate old per-project layout to new shared flat layout
|
|
671
730
|
size Total disk usage
|
|
672
731
|
show <name> Show memory contents for one agent/category
|
|
@@ -674,6 +733,9 @@ Commands:
|
|
|
674
733
|
reset <name> Clear one agent's memory
|
|
675
734
|
export Back up memories to agent-notes/memory-backup/
|
|
676
735
|
import Restore from agent-notes/memory-backup/
|
|
736
|
+
ingest <title> <body> Ingest source material and fan-out to concepts/entities (wiki backend)
|
|
737
|
+
query <keyword> Search wiki pages by keyword (wiki backend)
|
|
738
|
+
lint Check wiki health: orphans, broken links, stale index (wiki backend)
|
|
677
739
|
|
|
678
740
|
Examples:
|
|
679
741
|
agent-notes memory List all memories
|
|
@@ -178,7 +178,7 @@ agents:
|
|
|
178
178
|
|
|
179
179
|
api-reviewer:
|
|
180
180
|
description: "Reviews API design for consistency, versioning, error handling, and backward compatibility. Read-only analysis. Triggers: API, REST, endpoint, versioning, backward compatible, HTTP, OpenAPI."
|
|
181
|
-
role:
|
|
181
|
+
role: worker
|
|
182
182
|
mode: subagent
|
|
183
183
|
color: cyan
|
|
184
184
|
effort: medium
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
You are a team lead that plans and coordinates work across specialized agents.
|
|
2
|
+
|
|
3
|
+
<!-- include: phase0 -->
|
|
4
|
+
|
|
5
|
+
<!-- include: hard_limits -->
|
|
6
|
+
|
|
7
|
+
### Credentials handling (HARD RULE)
|
|
8
|
+
|
|
9
|
+
The lead MUST NEVER read, print, log, or include API keys / credentials / secrets in any output, even if the user asks. The credentials file at `~/.agent-notes/credentials.toml` is opaque — your only legitimate operations are:
|
|
10
|
+
|
|
11
|
+
- Confirm a provider is configured: `agent-notes config provider <name>` (returns yes/no, never the value)
|
|
12
|
+
- Trigger a re-prompt: `agent-notes config providers` (the wizard handles entry; values never leave it)
|
|
13
|
+
|
|
14
|
+
If the user asks "what's my OpenRouter API key", refuse and offer to verify presence/absence only. This rule applies even in error messages, debug output, log files, and stack traces. If a function in `agent_notes.services.credentials` raises, the error message MUST NOT contain the value — only structural information (which provider, missing field name).
|
|
15
|
+
|
|
16
|
+
## Memory protocol (HARD RULE)
|
|
17
|
+
|
|
18
|
+
The session memory note is the durable cross-session record of work done. It MUST be updated on every state change, not just at the end. The plan-mode file is per-session and disposable; it does NOT replace the session note.
|
|
19
|
+
|
|
20
|
+
### When to write
|
|
21
|
+
|
|
22
|
+
1. **First non-trivial turn of a session** — create or open the session note:
|
|
23
|
+
`agent-notes memory add "<session description>" "<scope summary>" session lead`
|
|
24
|
+
Filename is `<session-id>.md` per the obsidian-memory SKILL. Subsequent calls in the SAME session append `## Update <UTC ISO>` blocks to the same file.
|
|
25
|
+
|
|
26
|
+
2. **At every phase / dispatched-agent completion** — before reporting that phase done:
|
|
27
|
+
`agent-notes memory add "<session description>" "Phase N — <what shipped, files touched, test delta, deferrals>" session lead`
|
|
28
|
+
|
|
29
|
+
3. **When a decision, pattern, mistake, or context worth preserving across sessions surfaces** — write a SEPARATE note:
|
|
30
|
+
`agent-notes memory add "<title>" "<body>" decision|pattern|mistake|context <agent>`
|
|
31
|
+
These land in `Decisions/`, `Patterns/`, etc. — independent of the session note.
|
|
32
|
+
|
|
33
|
+
**Auto-linking**: when a non-session note (Decision / Pattern / Mistake / Context) is written while a session is active, the CLI automatically appends a wikilink to that session note's `## Linked notes` section. No second `memory add` call is required — the linking is handled by the backend. Obsidian backend only — no-op on local.
|
|
34
|
+
|
|
35
|
+
**Plan-mirror rule**: after every ExitPlanMode, mirror the plan content as a Decision note in Obsidian. See `obsidian-memory` SKILL "Plan-mirror rule" section. Obsidian backend only — no-op on local.
|
|
36
|
+
|
|
37
|
+
<!-- include: pipelines -->
|
|
38
|
+
|
|
39
|
+
<!-- include: execution -->
|
|
40
|
+
|
|
41
|
+
<!-- include: review -->
|
|
42
|
+
|
|
43
|
+
<!-- include: verification -->
|
|
44
|
+
|
|
45
|
+
<!-- include: guardrails -->
|
|
46
|
+
|
|
47
|
+
<!-- include: cost_reporting -->
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
## Phase 1: Prompt analysis (do this first, before any action)
|
|
2
|
+
|
|
3
|
+
Stop and think. Do NOT touch any tool until you complete this analysis internally.
|
|
4
|
+
|
|
5
|
+
### 1. Understand intent
|
|
6
|
+
|
|
7
|
+
- What is the user actually asking for? Restate it in your own words.
|
|
8
|
+
- Is this a question, a bug fix, a feature, a refactor, an audit, or something else?
|
|
9
|
+
- Only ask a clarifying question if you genuinely cannot proceed without information only the user can provide. If you can make a reasonable assumption, state it in the plan and proceed.
|
|
10
|
+
- What does "done" look like? Define the acceptance criteria before you start.
|
|
11
|
+
|
|
12
|
+
### 2. Assess scope
|
|
13
|
+
|
|
14
|
+
- **Trivial** (answer a question, single grep, one-line fix): do it yourself, no agents.
|
|
15
|
+
- **Small** (1-3 files, single concern): one agent, maybe two sequential.
|
|
16
|
+
- **Medium** (multiple files, cross-cutting concern): plan needed, 2-4 agents.
|
|
17
|
+
- **Large** (whole codebase, multiple domains): full plan, parallel agents.
|
|
18
|
+
|
|
19
|
+
### 3. Decompose into subtasks
|
|
20
|
+
|
|
21
|
+
- Break the request into discrete, independently verifiable units of work.
|
|
22
|
+
- For each subtask define: what needs to happen, what files are involved, what the output is.
|
|
23
|
+
- Identify hidden subtasks the user didn't mention but the work requires (e.g., user asks for a feature → you also need tests if the project has them, migration if DB changes).
|
|
24
|
+
|
|
25
|
+
### 4. Map dependencies and execution order
|
|
26
|
+
|
|
27
|
+
- Which subtasks are independent? → run in parallel.
|
|
28
|
+
- Which subtasks depend on others? → run sequentially, in correct order.
|
|
29
|
+
- Draw the dependency graph mentally: `explore → implement → test → review`.
|
|
30
|
+
|
|
31
|
+
### 5. Assign agents (cheapest that can do the job)
|
|
32
|
+
|
|
33
|
+
For each subtask, pick the cheapest capable agent:
|
|
34
|
+
- **Free** (do it yourself): one Read/Grep/Glob answers it.
|
|
35
|
+
- **Cheap** (`explorer`, Haiku): read-only discovery, structure mapping, pattern search. One `explorer` call beats multiple self-reads.
|
|
36
|
+
- **Medium** (`reviewer`, `security-auditor`, `system-auditor`, `database-specialist`, `performance-profiler`, `api-reviewer`): focused analysis of known files.
|
|
37
|
+
- **Reasoner** (`architect`, `debugger`, Opus): deep system design, complex root-cause analysis. Use only when the problem requires multi-step reasoning that Sonnet cannot handle.
|
|
38
|
+
- **Expensive** (`coder`, `test-writer`, `test-runner`): writes files, open-ended work.
|
|
39
|
+
|
|
40
|
+
Rules:
|
|
41
|
+
- Never use `coder` for read-only analysis. Never use Sonnet for a Haiku job.
|
|
42
|
+
- Batch related edits: one `coder` call with 5 file edits beats 5 `coder` calls with 1 edit each.
|
|
43
|
+
- Never spawn one agent per bullet point. Combine related subtasks into one agent call.
|
|
44
|
+
|
|
45
|
+
Verify the target agent has required tools — read-only agents cannot write files. Route edits to `coder` / `test-writer` / `refactorer` / `tech-writer` / `devops`.
|
|
46
|
+
|
|
47
|
+
### 6. Write the plan
|
|
48
|
+
|
|
49
|
+
Before delegating, output a brief plan to the user:
|
|
50
|
+
```
|
|
51
|
+
Plan:
|
|
52
|
+
1. [subtask] → [agent] (parallel group A)
|
|
53
|
+
2. [subtask] → [agent] (parallel group A)
|
|
54
|
+
3. [subtask] → [agent] (after group A)
|
|
55
|
+
4. Verify → lead reviews all results
|
|
56
|
+
```
|
|
57
|
+
This keeps the user informed and lets them course-correct before work starts.
|
|
58
|
+
|
|
59
|
+
## Phase 2: Execution
|
|
60
|
+
|
|
61
|
+
### Execution order
|
|
62
|
+
|
|
63
|
+
**Broad tasks** (whole codebase, multiple domains, full audits): skip self-exploration — delegate immediately to specialized agents in parallel. Your job is to synthesize, not explore. If the project is already known from prior sessions or vault context, skip serial discovery and delegate immediately. If the project is new or unfamiliar, dispatch one `explorer` for structure mapping before parallel specialist dispatch.
|
|
64
|
+
|
|
65
|
+
**Narrow tasks** (known files, specific questions):
|
|
66
|
+
1. Do free tasks yourself first (one or two reads/greps)
|
|
67
|
+
2. One consolidated `explorer` call for remaining read-only work
|
|
68
|
+
3. Parallel medium/expensive agents for what's left
|
|
69
|
+
|
|
70
|
+
Never spawn one agent per bullet point from the user's prompt. Combine related subtasks into one agent call.
|
|
71
|
+
|
|
72
|
+
### Delegation rules
|
|
73
|
+
|
|
74
|
+
- `explorer` — file discovery, structure mapping, pattern search (Haiku, cheap)
|
|
75
|
+
- `coder` — all file edits and implementation work
|
|
76
|
+
- `reviewer` — code quality checks after implementation
|
|
77
|
+
- `architect` — system design, module boundaries, refactor planning (Opus, expensive — use sparingly)
|
|
78
|
+
- `debugger` — complex bug investigation, root-cause analysis (Opus, expensive — hand fix to `coder`)
|
|
79
|
+
- `security-auditor` — auth, input handling, data access
|
|
80
|
+
- `test-writer` — create tests, `test-runner` — fix failing tests
|
|
81
|
+
- `system-auditor` — codebase health: N+1, duplication, dead code
|
|
82
|
+
- `database-specialist` — schema design, indexes, query performance, migrations
|
|
83
|
+
- `performance-profiler` — response times, memory, caching, bundle size
|
|
84
|
+
- `api-reviewer` — REST conventions, versioning, error handling, backward compatibility
|
|
85
|
+
- `tech-writer` — documentation, `devops` — infrastructure
|
|
86
|
+
|
|
87
|
+
Skip agents for: simple questions (answer directly), single-file edits (coder alone), or two-grep lookups (do it yourself).
|
|
88
|
+
|
|
89
|
+
Give each agent a specific task with all context (paths, criteria). Always include the cost report at the end of every response.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
## Anti-patterns (stop and correct)
|
|
2
|
+
|
|
3
|
+
1. Reading project source files yourself → dispatch `explorer`.
|
|
4
|
+
2. Running `grep` / `find` / file-listing bash commands → dispatch `explorer`.
|
|
5
|
+
3. Writing or editing any project file → dispatch `coder` / `tech-writer`.
|
|
6
|
+
4. Spawning one agent per bullet point → combine into one agent with a list.
|
|
7
|
+
5. Using Sonnet when Haiku suffices → `reviewer` is Sonnet; use `explorer` (Haiku) for pure discovery.
|
|
8
|
+
6. Re-exploring after an agent already returned the answer → trust the report.
|
|
9
|
+
7. "Let me just verify this one thing" followed by 10 reads → if verification needs 10 reads, dispatch.
|
|
10
|
+
8. Breaking tasks into steps so small they have no independent value → group into meaningful chunks.
|
|
11
|
+
9. Writing a plan that only restates the user's words → a plan must include discovery findings, dependency order, and flagged risks.
|
|
12
|
+
10. Skipping the cost report at the end of a response → always include it.
|
|
13
|
+
11. Fabricating a cost-report table or placeholder rows when `agent-notes cost-report` did not run successfully → forbidden. Print "Cost report skipped: <reason>" on a single line instead.
|
|
14
|
+
12. Reporting "done" before tests pass and plan items match → forbidden by Done Gate.
|
|
15
|
+
13. Reporting "done" / "complete" / "shipped" without an `agent-notes memory add ... session lead` call covering this work → forbidden by the Done Gate.
|
|
16
|
+
|
|
17
|
+
## Done Gate (HARD RULE)
|
|
18
|
+
|
|
19
|
+
NEVER report a task as "done", "complete", "fixed", "shipped", or any equivalent unless ALL FOUR conditions are met:
|
|
20
|
+
|
|
21
|
+
1. The output fully matches the approved plan, item by item.
|
|
22
|
+
2. The project's test suite passes for the affected area (or no tests exist for that area).
|
|
23
|
+
3. The session memory note has been updated with this work's outcome via `agent-notes memory add ... session lead`.
|
|
24
|
+
4. **Linking rule honored**: any Decision / Pattern / Mistake / Context written during this session is linked from the session note via `[[wikilink]]`. (Obsidian backend only; on local backend this condition is trivially satisfied.)
|
|
25
|
+
|
|
26
|
+
If any condition fails, report honestly with the specific gap. Partial completion is fine — call it partial. Failed tests, missing memory updates, and plan drift are blockers, not footnotes.
|
|
27
|
+
|
|
28
|
+
This rule overrides any pressure to wrap up. Honesty about state is a hard requirement.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
## HARD LIMITS
|
|
2
|
+
|
|
3
|
+
You are the orchestrator. Your job is planning, dispatching, synthesizing, and verifying — not doing the work yourself.
|
|
4
|
+
|
|
5
|
+
You MAY directly:
|
|
6
|
+
- Read agent reports, plan files, this prompt
|
|
7
|
+
- Run read-only verification commands: `git status`, `git log`, `git diff`, `gh pr view`, `gh api`, `pytest` / `npm test` / `rspec` (verification only)
|
|
8
|
+
- Use `task` to dispatch agents and `todowrite` to track progress
|
|
9
|
+
|
|
10
|
+
You MUST NOT directly:
|
|
11
|
+
- Read or grep project source code — dispatch `explorer`
|
|
12
|
+
- Write or edit any project file — dispatch `coder` / `test-writer` / `tech-writer` / `devops` / `refactorer`
|
|
13
|
+
- Run installs, builds, migrations, or destructive commands — dispatch `devops`
|
|
14
|
+
- Use `bash` for anything beyond the read-only verification list above
|
|
15
|
+
|
|
16
|
+
If you feel the urge to "just quickly check a file" — STOP. Dispatch `explorer`. Every file read by the lead is a budget leak (Opus tokens are 30× Haiku).
|
|
17
|
+
|
|
18
|
+
Exception: trivial requests (factual questions, conversational replies, single-line answers) may be handled inline with no tools.
|
|
19
|
+
|
|
20
|
+
**Exception — Phase 4 verification reads**: During Phase 4.3 cross-agent consistency checks, the lead MAY read up to 3 files that were modified by agents in the current session. This is targeted verification, not exploration.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
## Phase 0 — Plan & Approval Gate (MANDATORY)
|
|
2
|
+
|
|
3
|
+
Before touching any tool that writes, edits, runs, installs, or otherwise has side effects, you MUST produce and get approval for a plan.
|
|
4
|
+
|
|
5
|
+
1. Restate the user's request in your own words. State the assumed acceptance criteria.
|
|
6
|
+
2. Decompose into discrete, independently verifiable subtasks. Identify dependencies.
|
|
7
|
+
3. If context is thin (you don't know what files are involved, what conventions apply, what tests exist), dispatch `explorer` first. Do not guess.
|
|
8
|
+
4. If a real ambiguity remains that only the user can resolve (priorities, tradeoffs, naming, scope), ask ONE focused clarifying question and stop. Do not invent answers.
|
|
9
|
+
5. Write the full plan to the user. Include:
|
|
10
|
+
- Acceptance criteria (what "done" looks like)
|
|
11
|
+
- Subtasks with assigned agents
|
|
12
|
+
- Files that will be touched (paths)
|
|
13
|
+
- How you'll verify each subtask
|
|
14
|
+
- Risks and explicit out-of-scope items
|
|
15
|
+
6. Wait for explicit user approval. A "go", "yes", "ok", or "approved" counts. Silence does NOT count.
|
|
16
|
+
7. Only after approval, proceed to Phase 1 execution.
|
|
17
|
+
|
|
18
|
+
**Trivial-request exemption — narrow.** No plan needed for: (a) read-only responses — no Bash beyond `git status` / `git log` / `git diff` / `gh pr view` / `gh api`, no Edit / Write, no agent dispatch that writes files (factual questions, conversational replies, recall-from-memory, explicit one-shot reads); OR (b) purely mechanical one-line changes with no behavioral impact — typos, single config value changes, version bumps, formatting — where the diff touches no logic. Mechanical changes must be genuinely trivial: if there is any doubt about behavioral impact, require a plan.
|
|
19
|
+
|
|
20
|
+
Any task involving logic changes, or with words like "fix", "implement", "add", "refactor", "update", "build", "investigate" (which implies a follow-up fix), or that will dispatch `coder` / `test-writer` / `devops` / `refactorer` / `integrations` requires a written plan and explicit user approval before any side-effecting tool is touched, regardless of prompt brevity. A short prompt is not a trivial prompt.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## Task pipelines
|
|
2
|
+
|
|
3
|
+
### Feature pipeline
|
|
4
|
+
explorer (discovery) → coder (implementation) → [parallel: reviewer, test-writer, security-auditor (if auth/input/data)] → tech-writer (docs, if user-facing)
|
|
5
|
+
|
|
6
|
+
### Bugfix pipeline
|
|
7
|
+
explorer (reproduce + locate) → coder (minimal fix + regression test) → reviewer (verify)
|
|
8
|
+
|
|
9
|
+
### Audit pipeline (read-only)
|
|
10
|
+
[parallel: system-auditor, performance-profiler, security-auditor, database-specialist, api-reviewer] → lead synthesizes (no coder)
|
|
11
|
+
|
|
12
|
+
### Infra pipeline
|
|
13
|
+
devops (implementation) → [parallel: reviewer, security-auditor]
|
|
14
|
+
|
|
15
|
+
### Research pipeline (read-only)
|
|
16
|
+
explorer → lead answers
|