@agentikos/omega-os 0.2.0 → 0.19.6
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.
- package/README.md +33 -3
- package/bootstrap/lib/__pycache__/claude-code-settings.cpython-313.pyc +0 -0
- package/bootstrap/lib/__pycache__/llm-clis.cpython-313.pyc +0 -0
- package/bootstrap/lib/__pycache__/manifest-helpers.cpython-313.pyc +0 -0
- package/bootstrap/lib/claude-code-settings.py +176 -0
- package/bootstrap/lib/common.sh +457 -1
- package/bootstrap/lib/llm-clis.py +341 -0
- package/bootstrap/lib/manifest-helpers.py +384 -0
- package/bootstrap/lib/steps.sh +790 -21
- package/bootstrap/manifest.example.yaml +87 -1
- package/bootstrap/templates/aisb/CLAUDE.md +305 -0
- package/bootstrap/templates/aisb/architect.md +204 -0
- package/bootstrap/templates/aisb/checkers/CLAUDE.md +9 -0
- package/bootstrap/templates/aisb/checkers/checker-architect.md +151 -0
- package/bootstrap/templates/aisb/checkers/checker-common.md +171 -0
- package/bootstrap/templates/aisb/checkers/checker-construct.md +129 -0
- package/bootstrap/templates/aisb/checkers/checker-keymaker.md +204 -0
- package/bootstrap/templates/aisb/checkers/checker-link.md +205 -0
- package/bootstrap/templates/aisb/checkers/checker-merovingian.md +219 -0
- package/bootstrap/templates/aisb/checkers/checker-morpheus.md +211 -0
- package/bootstrap/templates/aisb/checkers/checker-neo.md +177 -0
- package/bootstrap/templates/aisb/checkers/checker-niobe.md +156 -0
- package/bootstrap/templates/aisb/checkers/checker-oracle.md +164 -0
- package/bootstrap/templates/aisb/checkers/checker-seraph.md +187 -0
- package/bootstrap/templates/aisb/checkers/checker-smith.md +195 -0
- package/bootstrap/templates/aisb/checkers/checker-zion.md +113 -0
- package/bootstrap/templates/aisb/construct.md +135 -0
- package/bootstrap/templates/aisb/keymaker.md +227 -0
- package/bootstrap/templates/aisb/link.md +170 -0
- package/bootstrap/templates/aisb/lmc-protocol.md +57 -0
- package/bootstrap/templates/aisb/merovingian.md +159 -0
- package/bootstrap/templates/aisb/morpheus.md +243 -0
- package/bootstrap/templates/aisb/neo.md +147 -0
- package/bootstrap/templates/aisb/niobe.md +197 -0
- package/bootstrap/templates/aisb/oracle.md +244 -0
- package/bootstrap/templates/aisb/protocols/handoff-templates.md +204 -0
- package/bootstrap/templates/aisb/protocols/shared-protocol.md +248 -0
- package/bootstrap/templates/aisb/pythia.md +153 -0
- package/bootstrap/templates/aisb/seraph.md +315 -0
- package/bootstrap/templates/aisb/smith.md +202 -0
- package/bootstrap/templates/aisb/zion.md +172 -0
- package/bootstrap/templates/autonomous/audit-patrol.yaml +41 -0
- package/bootstrap/templates/autonomous/smith-reflect.yaml +43 -0
- package/bootstrap/templates/autonomous/ssh-key-rotate.yaml +46 -0
- package/bootstrap/templates/autonomous/support-agent.yaml +38 -0
- package/docs/AUDITS.md +85 -0
- package/docs/GAP-ANALYSIS.md +214 -0
- package/docs/INSTALL.md +47 -9
- package/docs/MCP-AND-PLUGINS.md +31 -4
- package/docs/SIMULATION.md +171 -0
- package/docs/simulate.sh +211 -0
- package/install.sh +164 -17
- package/omega/Agentik_Engine/README.md +4 -2
- package/omega/Agentik_Engine/omega_engine/__init__.py +147 -1
- package/omega/Agentik_Engine/omega_engine/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/account.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/agent_messages.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/aisb_chat.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/audit.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/audit_arsenal.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/audit_diff.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/audit_gate.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/auto_update.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/autonomous.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/backup.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/barrier.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/bus.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/cadence.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/classifier.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/cleanup.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/cli.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/completions.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/costs.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/done_signal.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/envelope.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/events.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/executor.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/handoff.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/hermes.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/hermes_bootstrap.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/hermes_desktop.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/learning.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/managed_agent.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/memory.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/menu.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/mission.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/plan.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/progress.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/project.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/prompts.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/provider.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/prune.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/pursue.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/reducer.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/report.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/router.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/skill_routing.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/smoke.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/store.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/supervisor.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/sync.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/task.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/telegram.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/telegram_history.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/tmux.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/tools.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/understand_anything.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/updater.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/validate.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/vault.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/webhooks.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/worker.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/account.py +28 -31
- package/omega/Agentik_Engine/omega_engine/agent_messages.py +167 -0
- package/omega/Agentik_Engine/omega_engine/aisb_chat.py +128 -0
- package/omega/Agentik_Engine/omega_engine/audit_diff.py +99 -0
- package/omega/Agentik_Engine/omega_engine/audit_gate.py +149 -0
- package/omega/Agentik_Engine/omega_engine/audits/__init__.py +60 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/batcher.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/dispatcher.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/generator.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/history.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/pipeline.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/batcher.py +218 -0
- package/omega/Agentik_Engine/omega_engine/audits/dispatcher.py +92 -0
- package/omega/Agentik_Engine/omega_engine/audits/generator.py +234 -0
- package/omega/Agentik_Engine/omega_engine/audits/history.py +168 -0
- package/omega/Agentik_Engine/omega_engine/audits/pipeline.py +198 -0
- package/omega/Agentik_Engine/omega_engine/auto_update.py +339 -0
- package/omega/Agentik_Engine/omega_engine/backup.py +215 -0
- package/omega/Agentik_Engine/omega_engine/cadence.py +158 -0
- package/omega/Agentik_Engine/omega_engine/classifier.py +215 -0
- package/omega/Agentik_Engine/omega_engine/cleanup.py +673 -0
- package/omega/Agentik_Engine/omega_engine/cli.py +4156 -86
- package/omega/Agentik_Engine/omega_engine/completions.py +260 -0
- package/omega/Agentik_Engine/omega_engine/costs.py +100 -0
- package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/autonomous.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/engine.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/telegram.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/daemons/engine.py +53 -4
- package/omega/Agentik_Engine/omega_engine/daemons/telegram.py +101 -17
- package/omega/Agentik_Engine/omega_engine/done_signal.py +154 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/artifact.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/automation.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/base.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/claudecode.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/connection.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/coworker.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/loop.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/prompt.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/skill.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/envelope.py +219 -0
- package/omega/Agentik_Engine/omega_engine/executor.py +149 -10
- package/omega/Agentik_Engine/omega_engine/genesis/__init__.py +134 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/orchestrator.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/phases.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/stack.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/state.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/orchestrator.py +262 -0
- package/omega/Agentik_Engine/omega_engine/genesis/phases.py +950 -0
- package/omega/Agentik_Engine/omega_engine/genesis/stack.py +324 -0
- package/omega/Agentik_Engine/omega_engine/genesis/state.py +353 -0
- package/omega/Agentik_Engine/omega_engine/handoff.py +459 -0
- package/omega/Agentik_Engine/omega_engine/hermes.py +426 -0
- package/omega/Agentik_Engine/omega_engine/hermes_bootstrap.py +382 -0
- package/omega/Agentik_Engine/omega_engine/hermes_desktop.py +469 -0
- package/omega/Agentik_Engine/omega_engine/integrations/__init__.py +30 -0
- package/omega/Agentik_Engine/omega_engine/integrations/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/integrations/__pycache__/graphify.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/integrations/graphify.py +234 -0
- package/omega/Agentik_Engine/omega_engine/learning.py +268 -0
- package/omega/Agentik_Engine/omega_engine/managed_agent.py +467 -0
- package/omega/Agentik_Engine/omega_engine/memory.py +271 -0
- package/omega/Agentik_Engine/omega_engine/menu.py +1065 -0
- package/omega/Agentik_Engine/omega_engine/migrations/__init__.py +144 -0
- package/omega/Agentik_Engine/omega_engine/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/migrations/__pycache__/v0_14_0.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/migrations/v0_14_0.py +29 -0
- package/omega/Agentik_Engine/omega_engine/mission.py +16 -13
- package/omega/Agentik_Engine/omega_engine/plan.py +846 -0
- package/omega/Agentik_Engine/omega_engine/prompts.py +158 -0
- package/omega/Agentik_Engine/omega_engine/provider.py +161 -12
- package/omega/Agentik_Engine/omega_engine/prune.py +151 -0
- package/omega/Agentik_Engine/omega_engine/pursue.py +205 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/agentic.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/base.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/corrective.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/graph.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/hybrid.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/multimodal.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/router.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/router.py +28 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__init__.py +48 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/auditor.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/finder.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/installer.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/marketplaces.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/auditor.py +232 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/finder.py +94 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/installer.py +129 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/marketplaces.py +80 -0
- package/omega/Agentik_Engine/omega_engine/skill_routing.py +388 -0
- package/omega/Agentik_Engine/omega_engine/smoke.py +81 -0
- package/omega/Agentik_Engine/omega_engine/store.py +88 -41
- package/omega/Agentik_Engine/omega_engine/sync.py +142 -1
- package/omega/Agentik_Engine/omega_engine/telegram_history.py +260 -0
- package/omega/Agentik_Engine/omega_engine/tmux.py +526 -0
- package/omega/Agentik_Engine/omega_engine/understand_anything.py +275 -0
- package/omega/Agentik_Engine/omega_engine/updater.py +70 -0
- package/omega/Agentik_Engine/omega_engine/validate.py +186 -0
- package/omega/Agentik_Engine/omega_engine/vault.py +342 -0
- package/omega/Agentik_Engine/omega_engine/webhooks.py +262 -0
- package/omega/Agentik_Engine/omega_engine/worker.py +526 -0
- package/omega/Agentik_Engine/pyproject.toml +1 -1
- package/omega/Agentik_Engine/tests/__pycache__/test_account.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_account.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_adversarial.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_adversarial.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_agents_envelope.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_agents_envelope.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_audit_arsenal.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_audit_arsenal.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_audits_pipeline.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_audits_pipeline.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_auto_update_and_migrations.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_auto_update_and_migrations.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_autonomous.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_autonomous.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_educators.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_educators.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_executor.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_executor.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_genesis_and_plan.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_genesis_and_plan.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_graphify.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_graphify.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_handoff.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_handoff.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_hermes_and_ua.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_hermes_and_ua.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_hermes_bootstrap_and_desktop.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_hermes_bootstrap_and_desktop.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_install_steps.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_install_steps.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_install_ux.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_install_ux.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_installer_wiring.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_installer_wiring.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_intelligence.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_intelligence.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_llm_clis_and_uninstall.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_llm_clis_and_uninstall.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_managed_agent.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_managed_agent.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_max_provider_and_menu.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_max_provider_and_menu.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_menu_coverage.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_menu_coverage.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_mission.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_mission.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_progress.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_progress.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_project.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_project.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_pursue_cadence.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_pursue_cadence.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_rag.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_rag.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_reducer.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_reducer.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_report.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_report.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_role_aliases_and_ssot.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_role_aliases_and_ssot.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_discovery_and_gate.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_discovery_and_gate.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_power.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_power.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_routing.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_routing.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_snapshot_partial.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_snapshot_partial.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_telegram_history.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_telegram_history.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_tmux_and_aisb_chat.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_tmux_and_aisb_chat.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_tools_and_sync.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_tools_and_sync.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_v06_features.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_v06_features.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_vault.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_vault.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_webhooks_and_readiness.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_webhooks_and_readiness.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_worker_and_cleanup.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_worker_and_cleanup.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/test_account.py +8 -3
- package/omega/Agentik_Engine/tests/test_adversarial.py +351 -0
- package/omega/Agentik_Engine/tests/test_agents_envelope.py +274 -0
- package/omega/Agentik_Engine/tests/test_audits_pipeline.py +348 -0
- package/omega/Agentik_Engine/tests/test_auto_update_and_migrations.py +394 -0
- package/omega/Agentik_Engine/tests/test_genesis_and_plan.py +573 -0
- package/omega/Agentik_Engine/tests/test_graphify.py +190 -0
- package/omega/Agentik_Engine/tests/test_handoff.py +311 -0
- package/omega/Agentik_Engine/tests/test_hermes_and_ua.py +387 -0
- package/omega/Agentik_Engine/tests/test_hermes_bootstrap_and_desktop.py +358 -0
- package/omega/Agentik_Engine/tests/test_install_steps.py +359 -0
- package/omega/Agentik_Engine/tests/test_install_ux.py +151 -0
- package/omega/Agentik_Engine/tests/test_installer_wiring.py +496 -0
- package/omega/Agentik_Engine/tests/test_intelligence.py +285 -0
- package/omega/Agentik_Engine/tests/test_llm_clis_and_uninstall.py +228 -0
- package/omega/Agentik_Engine/tests/test_managed_agent.py +363 -0
- package/omega/Agentik_Engine/tests/test_max_provider_and_menu.py +231 -0
- package/omega/Agentik_Engine/tests/test_menu_coverage.py +72 -0
- package/omega/Agentik_Engine/tests/test_pursue_cadence.py +217 -0
- package/omega/Agentik_Engine/tests/test_role_aliases_and_ssot.py +207 -0
- package/omega/Agentik_Engine/tests/test_skill_discovery_and_gate.py +337 -0
- package/omega/Agentik_Engine/tests/test_skill_power.py +259 -0
- package/omega/Agentik_Engine/tests/test_skill_routing.py +189 -0
- package/omega/Agentik_Engine/tests/test_telegram_history.py +209 -0
- package/omega/Agentik_Engine/tests/test_tmux_and_aisb_chat.py +223 -0
- package/omega/Agentik_Engine/tests/test_v06_features.py +370 -0
- package/omega/Agentik_Engine/tests/test_vault.py +173 -0
- package/omega/Agentik_Engine/tests/test_webhooks_and_readiness.py +277 -0
- package/omega/Agentik_Engine/tests/test_worker_and_cleanup.py +541 -0
- package/omega/Agentik_Extra/etc/secrets/.vault-key +3 -0
- package/omega/Agentik_Extra/etc/secrets/.vault-pub +1 -0
- package/omega/Agentik_Runtime/audits.db +0 -0
- package/omega/Agentik_SSOT/VERSION +1 -1
- package/omega/Agentik_SSOT/claude-plugins/claude-plugins.yaml +100 -0
- package/omega/Agentik_SSOT/docs/LAYERS.md +90 -0
- package/omega/Agentik_SSOT/docs/USER-JOURNEY.md +283 -0
- package/omega/Agentik_SSOT/docs/quality-arsenal/ARSENAL-INTERCONNECTIONS.md +283 -0
- package/omega/Agentik_SSOT/docs/quality-arsenal/ARSENAL-ORCHESTRATION-PLAYBOOK.md +364 -0
- package/omega/Agentik_SSOT/docs/quality-arsenal/AUDIT-VERIFICATION-CONTRACT.md +272 -0
- package/omega/Agentik_SSOT/docs/quality-arsenal/QUALITY-ARSENAL-PREAMBLE.md +462 -0
- package/omega/Agentik_SSOT/marketplaces/design-discipline.yaml +86 -0
- package/omega/Agentik_SSOT/skills/a11yaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/apiaudit/SKILL.md +157 -0
- package/omega/Agentik_SSOT/skills/audit-orchestrator.md +212 -0
- package/omega/Agentik_SSOT/skills/audit-pilot.md +466 -0
- package/omega/Agentik_SSOT/skills/audit-tracker.md +147 -0
- package/omega/Agentik_SSOT/skills/automationaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/cadence/SKILL.md +76 -0
- package/omega/Agentik_SSOT/skills/codeaudit/SKILL.md +153 -0
- package/omega/Agentik_SSOT/skills/copyaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/dataaudit/SKILL.md +157 -0
- package/omega/Agentik_SSOT/skills/debugaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/dispatch/SKILL.md +79 -0
- package/omega/Agentik_SSOT/skills/dxaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/featureaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/flowaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/genesis/SKILL.md +116 -0
- package/omega/Agentik_SSOT/skills/handoff/SKILL.md +117 -0
- package/omega/Agentik_SSOT/skills/logicaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/motionaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/newcmd.md +300 -0
- package/omega/Agentik_SSOT/skills/perfaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/plan/SKILL.md +127 -0
- package/omega/Agentik_SSOT/skills/pursue/SKILL.md +68 -0
- package/omega/Agentik_SSOT/skills/quality-arsenal.md +180 -0
- package/omega/Agentik_SSOT/skills/rag-route.md +9 -0
- package/omega/Agentik_SSOT/skills/refontaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/retentionaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/secaudit/SKILL.md +157 -0
- package/omega/Agentik_SSOT/skills/seoaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/skill-auditor/SKILL.md +83 -0
- package/omega/Agentik_SSOT/skills/skill-finder/SKILL.md +116 -0
- package/omega/Agentik_SSOT/skills/uiuxaudit/SKILL.md +165 -0
- package/package.json +2 -2
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: a11yaudit
|
|
3
|
+
description: Forensic accessibility audit — Can EVERYONE use it — keyboard-only, screen reader, low vision, reduced motion?. Runs the gather (deterministic) + falsify (agentic) pipeline, batches fixes, dispatches capped workers, re-audits, and persists scores. Use when the user says "/a11yaudit", "audit accessibility", or asks to verify the accessibility health of the project.
|
|
4
|
+
when_to_use: User says /a11yaudit, audit accessibility, check accessibility, verify accessibility, is accessibility healthy.
|
|
5
|
+
argument-hint: "[--scope <path>] [--fix] [--max-workers N]"
|
|
6
|
+
arguments: [args]
|
|
7
|
+
allowed-tools: Bash Read Edit Grep Glob Write
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# a11yaudit — forensic audit (Agentik OS Quality Arsenal)
|
|
11
|
+
|
|
12
|
+
> Can EVERYONE use it — keyboard-only, screen reader, low vision, reduced motion?
|
|
13
|
+
|
|
14
|
+
You are running the a11yaudit forensic audit. Apply the **Gestalt-Popper
|
|
15
|
+
doctrine**: identify the hinge point, scrutinise it 10x, then assume
|
|
16
|
+
every name is a CLAIM and look for the divergence between the claim and
|
|
17
|
+
the reality. Bias toward FAIL. A perfect score is earned by finding zero
|
|
18
|
+
falsifiable claims, never by absence of effort.
|
|
19
|
+
|
|
20
|
+
## Run
|
|
21
|
+
|
|
22
|
+
The audit is one engine call — gather (deterministic) + falsify (agentic)
|
|
23
|
+
+ optional fix-dispatch (capped) + re-audit. Invoke the unified pipeline:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
omega audit run a11yaudit $args
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Common options:
|
|
30
|
+
|
|
31
|
+
| Flag | Effect |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `--scope <path>` | scope the audit (file or directory) |
|
|
34
|
+
| `--fix` | after analysing, batch findings + dispatch up to N workers + re-audit |
|
|
35
|
+
| `--max-workers N` | cap parallel fix workers (default 3) |
|
|
36
|
+
| `--min-severity high` | only batch + fix findings at or above this severity |
|
|
37
|
+
|
|
38
|
+
Read-only by default. Add `--fix` to enable the dispatch + re-audit loop.
|
|
39
|
+
|
|
40
|
+
## Phases under investigation
|
|
41
|
+
|
|
42
|
+
The agentic pass walks each phase below and emits structured findings
|
|
43
|
+
(claim vs. reality). Every PASS must cite ≥3 concrete checks.
|
|
44
|
+
|
|
45
|
+
### 1. hinge-keyboard-navigation
|
|
46
|
+
|
|
47
|
+
HINGE — disconnect the mouse and complete the primary user journey keyboard-only; logical tab order matching visual flow, no tabindex>0, no non-interactive element focusable; every button activates with Enter AND Space, links with Enter, Escape closes overlays.
|
|
48
|
+
|
|
49
|
+
### 2. keyboard-traps-focus-visibility
|
|
50
|
+
|
|
51
|
+
Focus can always escape every modal, dropdown, menu and date picker (no infinite tab loop); focus indicator ALWAYS visible, >=2px and >=3:1 contrast, in light/dark/high-contrast; no outline:none without a replacement.
|
|
52
|
+
|
|
53
|
+
### 3. wcag-aa-compliance
|
|
54
|
+
|
|
55
|
+
Per page verify WCAG 2.1 AA across the four principles — Perceivable, Operable, Understandable, Robust; lang attribute, valid HTML with no duplicate IDs, reflow at 320px, text resize to 200%; treat the 70% of failures automation misses as the real work.
|
|
56
|
+
|
|
57
|
+
### 4. screen-reader-semantics
|
|
58
|
+
|
|
59
|
+
Page title, headings, landmarks and list/table structure announced; buttons announce name+role, inputs announce label+type+state; reading order matches visual layout; nothing meaningful hidden from the screen reader, nothing decorative announced.
|
|
60
|
+
|
|
61
|
+
### 5. aria-correctness
|
|
62
|
+
|
|
63
|
+
First rule of ARIA — if native HTML can do it, ARIA is wrong; custom widgets have correct roles with required children; aria-expanded/selected/checked/current reflect real state; aria-labelledby/describedby/controls reference existing visible elements; aria-hidden never hides visible content.
|
|
64
|
+
|
|
65
|
+
### 6. semantic-elements
|
|
66
|
+
|
|
67
|
+
Interactive things are real <button>/<a>/<input>, not <div onClick>; landmark elements (<main> once, <nav>, <header>, <footer>) present, labelled when repeated, and wrap all visible content with no orphans.
|
|
68
|
+
|
|
69
|
+
### 7. color-contrast
|
|
70
|
+
|
|
71
|
+
Normal text >=4.5:1, large text >=3:1 against every background it sits on (including over images/gradients and placeholder text); UI component borders, focus rings and meaningful icons >=3:1; verify in dark mode and forced-colors.
|
|
72
|
+
|
|
73
|
+
### 8. color-independence
|
|
74
|
+
|
|
75
|
+
No information conveyed by colour alone — links distinguishable without colour (underline/weight), required fields marked with text/asterisk, errors carry icon+text not just red; grayscale the page and confirm nothing is lost.
|
|
76
|
+
|
|
77
|
+
### 9. form-labels-and-instructions
|
|
78
|
+
|
|
79
|
+
Every input has a programmatic label (label/aria-label/aria-labelledby), placeholder is never the only label; correct input types and autocomplete on personal-data fields; required fields marked visually AND with aria-required; instructions precede the form; related inputs grouped with fieldset/legend.
|
|
80
|
+
|
|
81
|
+
### 10. error-announcements
|
|
82
|
+
|
|
83
|
+
Inline errors associated via aria-describedby/aria-errormessage and announced without reload, field marked aria-invalid; on submit failure an error summary appears, focus moves to it, error count announced; success confirmed via aria-live; destructive actions confirm and warn of data loss.
|
|
84
|
+
|
|
85
|
+
### 11. alt-text
|
|
86
|
+
|
|
87
|
+
Informative images have descriptive alt conveying content+purpose; decorative images have alt="" (empty, not missing) and decorative icons aria-hidden; functional/image links/buttons describe the destination or action; complex charts have a text or data-table alternative; SVGs labelled or hidden.
|
|
88
|
+
|
|
89
|
+
### 12. heading-hierarchy-skip-nav
|
|
90
|
+
|
|
91
|
+
Exactly one <h1>, no skipped levels, headings describe content and are not styled-div fakes; a 'Skip to main content' link is the first focusable element, visible on focus, and lands on a valid landmark/heading.
|
|
92
|
+
|
|
93
|
+
### 13. focus-management
|
|
94
|
+
|
|
95
|
+
Focus starts at a logical position on load and moves to new content on SPA route change (with page-title update); modals move focus in on open and return it to the trigger on close; deleted content moves focus to a logical neighbour; focus never silently lost to <body>.
|
|
96
|
+
|
|
97
|
+
### 14. motion-and-touch-targets
|
|
98
|
+
|
|
99
|
+
@media (prefers-reduced-motion: reduce) honoured by CSS and JS animations; no auto-playing audio ever, video/carousels have pause, nothing flashes >3x/sec; interactive targets >=44x44px CSS with >=8px spacing, checked at the smallest mobile viewport.
|
|
100
|
+
|
|
101
|
+
## Falsification rules
|
|
102
|
+
|
|
103
|
+
Automated tools catch ~30% of failures — a "0 violations" report means 70% are INVISIBLE to automation, not absent. Every PASS must cite >=3 concrete manual checks (keyboard-only walkthrough of the flow, computed contrast ratio, grayscale test, prefers-reduced-motion toggle) with verbatim observations. Categorise findings as VISUAL-vs-SEMANTIC, MOUSE-vs-KEYBOARD, SIGHTED-vs-SCREEN-READER, DESKTOP-vs-MOBILE or DEFAULT-vs-PREFERENCE. An axe-core contrast finding near the 4.5 threshold must be confirmed by computing the exact ratio. Bias toward FAIL — the excluded users never complained.
|
|
104
|
+
|
|
105
|
+
## After the run
|
|
106
|
+
|
|
107
|
+
The pipeline writes one structured verdict to:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
Agentik_Runtime/audits.db (history — `omega audit history a11yaudit`)
|
|
111
|
+
Agentik_Runtime/sessions/${CLAUDE_SESSION_ID}/.done.json (this turn)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
The `.done.json` schema:
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"status": "done_clean" | "pending" | "failed",
|
|
119
|
+
"summary": "<one-paragraph verdict>",
|
|
120
|
+
"artifacts": {
|
|
121
|
+
"audit": "a11yaudit",
|
|
122
|
+
"score": 0-100,
|
|
123
|
+
"verified": bool,
|
|
124
|
+
"findings": [...],
|
|
125
|
+
"fix_plan": [...],
|
|
126
|
+
"dispatches": [...],
|
|
127
|
+
"reaudit_score": 0-100 // only when --fix was used
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Hard rules (don't break these)
|
|
133
|
+
|
|
134
|
+
1. **No fake "done".** First Law: only runtime tells the truth. If the
|
|
135
|
+
gather phase fails or the agentic verdict scores below the threshold,
|
|
136
|
+
you have NOT verified — set status to `pending` or `failed`.
|
|
137
|
+
2. **Cap parallelism.** ≤ 3 fix workers at a time. The
|
|
138
|
+
batcher enforces this; do not call out to other dispatch mechanisms.
|
|
139
|
+
3. **No worker per finding.** Findings are clustered by file footprint and
|
|
140
|
+
severity. One worker handles one disjoint batch.
|
|
141
|
+
4. **Re-audit confirms.** After fixes land, the pipeline re-runs the same
|
|
142
|
+
gather + agentic phases. If the score did not improve, escalate honestly.
|
|
143
|
+
5. **History is the trend.** `omega audit history a11yaudit` shows whether the
|
|
144
|
+
codebase is improving over time on this dimension. Use it to decide
|
|
145
|
+
whether to push for `--fix` again.
|
|
146
|
+
|
|
147
|
+
## Why this audit exists
|
|
148
|
+
|
|
149
|
+
The 18 forensic audits are the OmegaOS verification layer. Claude's
|
|
150
|
+
"I'm done" claims used to be unverified. With these audits running as
|
|
151
|
+
the gate, completion is **derived from observable facts**, not declared
|
|
152
|
+
by the worker. Run this audit any time someone (human or agent) claims
|
|
153
|
+
the accessibility dimension is healthy. Insist on the score before you
|
|
154
|
+
accept.
|
|
155
|
+
|
|
156
|
+
## Reference
|
|
157
|
+
|
|
158
|
+
Audit definition: `Agentik_SSOT/audits/a11yaudit.yaml`
|
|
159
|
+
Engine pipeline: `omega_engine.audits.pipeline.AuditPipeline`
|
|
160
|
+
Batcher: `omega_engine.audits.batcher.batch_findings`
|
|
161
|
+
History: `omega_engine.audits.history`
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: apiaudit
|
|
3
|
+
description: Forensic api audit — Does the API work CORRECTLY, CONSISTENTLY and SAFELY for every caller?. Runs the gather (deterministic) + falsify (agentic) pipeline, batches fixes, dispatches capped workers, re-audits, and persists scores. Use when the user says "/apiaudit", "audit api", or asks to verify the api health of the project.
|
|
4
|
+
when_to_use: User says /apiaudit, audit api, check api, verify api, is api healthy.
|
|
5
|
+
argument-hint: "[--scope <path>] [--fix] [--max-workers N]"
|
|
6
|
+
arguments: [args]
|
|
7
|
+
allowed-tools: Bash Read Edit Grep Glob Write
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# apiaudit — forensic audit (Agentik OS Quality Arsenal)
|
|
11
|
+
|
|
12
|
+
> Does the API work CORRECTLY, CONSISTENTLY and SAFELY for every caller?
|
|
13
|
+
|
|
14
|
+
You are running the apiaudit forensic audit. Apply the **Gestalt-Popper
|
|
15
|
+
doctrine**: identify the hinge point, scrutinise it 10x, then assume
|
|
16
|
+
every name is a CLAIM and look for the divergence between the claim and
|
|
17
|
+
the reality. Bias toward FAIL. A perfect score is earned by finding zero
|
|
18
|
+
falsifiable claims, never by absence of effort.
|
|
19
|
+
|
|
20
|
+
## Run
|
|
21
|
+
|
|
22
|
+
The audit is one engine call — gather (deterministic) + falsify (agentic)
|
|
23
|
+
+ optional fix-dispatch (capped) + re-audit. Invoke the unified pipeline:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
omega audit run apiaudit $args
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Common options:
|
|
30
|
+
|
|
31
|
+
| Flag | Effect |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `--scope <path>` | scope the audit (file or directory) |
|
|
34
|
+
| `--fix` | after analysing, batch findings + dispatch up to N workers + re-audit |
|
|
35
|
+
| `--max-workers N` | cap parallel fix workers (default 3) |
|
|
36
|
+
| `--min-severity high` | only batch + fix findings at or above this severity |
|
|
37
|
+
|
|
38
|
+
Read-only by default. Add `--fix` to enable the dispatch + re-audit loop.
|
|
39
|
+
|
|
40
|
+
## Phases under investigation
|
|
41
|
+
|
|
42
|
+
The agentic pass walks each phase below and emits structured findings
|
|
43
|
+
(claim vs. reality). Every PASS must cite ≥3 concrete checks.
|
|
44
|
+
|
|
45
|
+
### 1. endpoint-inventory
|
|
46
|
+
|
|
47
|
+
Enumerate every route with its HTTP method; classify public vs authenticated vs admin; flag debug/test routes live in prod, duplicate routes, and verbs-in-paths breaking REST nouns.
|
|
48
|
+
|
|
49
|
+
### 2. hinge-authentication
|
|
50
|
+
|
|
51
|
+
HINGE — for EVERY endpoint verify auth is enforced BEFORE any data access; send no-token / expired / malformed / other-user's-token; any 200 with data instead of 401/403 is a critical breach. Catch routes accidentally public via missing middleware.
|
|
52
|
+
|
|
53
|
+
### 3. hinge-authorization
|
|
54
|
+
|
|
55
|
+
HINGE — test every endpoint with every role; admin routes reject regular users, user routes reject guests; resource-level ownership enforced (no IDOR); no privilege escalation via body params; field-level authz on sensitive fields; no mass assignment.
|
|
56
|
+
|
|
57
|
+
### 4. input-validation
|
|
58
|
+
|
|
59
|
+
Every parameter on every endpoint — type, boundary (min/max length, range, array size, nesting depth), format (email/url/uuid), enum whitelist; Content-Type matches body; injection chars (SQL, NoSQL $ops, ../, shell) rejected.
|
|
60
|
+
|
|
61
|
+
### 5. contract-compliance
|
|
62
|
+
|
|
63
|
+
Response envelope identical across endpoints (data/errors/meta); ISO-8601 dates; consistent null-vs-missing handling; no breaking changes (field removal, type change, new required field); GraphQL depth/complexity limits, introspection off in prod.
|
|
64
|
+
|
|
65
|
+
### 6. status-codes
|
|
66
|
+
|
|
67
|
+
Correct codes per outcome — 201+Location on create, 204 on delete, 400 validation, 401 unauthenticated, 403 unauthorised, 404 missing, 409 conflict, 422 semantic, 429 rate-limited; never 200 for errors, never 500 for client mistakes.
|
|
68
|
+
|
|
69
|
+
### 7. error-format
|
|
70
|
+
|
|
71
|
+
Every error has status + machine-parseable code + message; validation errors list ALL invalid fields; no stack traces / DB errors / internal paths leaked; no user enumeration (same error for existing vs non-existing); Retry-After on 429.
|
|
72
|
+
|
|
73
|
+
### 8. rate-limiting
|
|
74
|
+
|
|
75
|
+
Global per-IP/user limit plus per-endpoint limits on expensive and auth operations; X-RateLimit-* and Retry-After headers present; tiered fairness for authenticated/paid callers; limits not bypassable via header spoofing.
|
|
76
|
+
|
|
77
|
+
### 9. pagination
|
|
78
|
+
|
|
79
|
+
Every list endpoint paginated with a sane default and enforced max page size; cursor- or offset-based consistently; page metadata (cursor/total/hasNext) returned; empty page returns [] not 404.
|
|
80
|
+
|
|
81
|
+
### 10. idempotency
|
|
82
|
+
|
|
83
|
+
GET/HEAD/OPTIONS truly side-effect free; PUT and DELETE idempotent on repeat; POST supports idempotency keys for money/critical ops; timeout+retry never creates duplicates or corrupts state.
|
|
84
|
+
|
|
85
|
+
### 11. n-plus-one-perf
|
|
86
|
+
|
|
87
|
+
Count DB queries per API call — find N+1 (list endpoint issuing one query per row); dataloader/batching for GraphQL, eager loading for ORM relations; no SELECT *; response times within p95<1s budget.
|
|
88
|
+
|
|
89
|
+
### 12. cors-webhooks
|
|
90
|
+
|
|
91
|
+
CORS Allow-Origin is a specific allowlist (no wildcard with credentials), only needed methods/headers; webhooks verify HMAC signature, enforce HTTPS, include event type + timestamp, retry with backoff.
|
|
92
|
+
|
|
93
|
+
### 13. versioning-deprecation
|
|
94
|
+
|
|
95
|
+
API version communicated consistently; backward compatibility preserved or sunset announced; deprecated endpoints emit Deprecation/Sunset headers, still function during the window, and point callers to the replacement.
|
|
96
|
+
|
|
97
|
+
## Falsification rules
|
|
98
|
+
|
|
99
|
+
"It works in Postman" proves nothing — Postman has the token, correct headers and the happy path. Every PASS must cite >=3 concrete requests run (no auth, wrong role, malformed body, boundary value, concurrent calls) with verbatim status + body. Categorise findings as HAPPY-vs-EDGE, ADMIN-vs-USER, SINGLE-vs-CONCURRENT, SPEC-vs-REALITY or POSTMAN-vs-PRODUCTION. A static scan reporting an "unauthenticated endpoint" must be confirmed by reading the handler — auth may live in middleware the scan cannot see. Bias toward FAIL.
|
|
100
|
+
|
|
101
|
+
## After the run
|
|
102
|
+
|
|
103
|
+
The pipeline writes one structured verdict to:
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
Agentik_Runtime/audits.db (history — `omega audit history apiaudit`)
|
|
107
|
+
Agentik_Runtime/sessions/${CLAUDE_SESSION_ID}/.done.json (this turn)
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
The `.done.json` schema:
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"status": "done_clean" | "pending" | "failed",
|
|
115
|
+
"summary": "<one-paragraph verdict>",
|
|
116
|
+
"artifacts": {
|
|
117
|
+
"audit": "apiaudit",
|
|
118
|
+
"score": 0-100,
|
|
119
|
+
"verified": bool,
|
|
120
|
+
"findings": [...],
|
|
121
|
+
"fix_plan": [...],
|
|
122
|
+
"dispatches": [...],
|
|
123
|
+
"reaudit_score": 0-100 // only when --fix was used
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Hard rules (don't break these)
|
|
129
|
+
|
|
130
|
+
1. **No fake "done".** First Law: only runtime tells the truth. If the
|
|
131
|
+
gather phase fails or the agentic verdict scores below the threshold,
|
|
132
|
+
you have NOT verified — set status to `pending` or `failed`.
|
|
133
|
+
2. **Cap parallelism.** ≤ 3 fix workers at a time. The
|
|
134
|
+
batcher enforces this; do not call out to other dispatch mechanisms.
|
|
135
|
+
3. **No worker per finding.** Findings are clustered by file footprint and
|
|
136
|
+
severity. One worker handles one disjoint batch.
|
|
137
|
+
4. **Re-audit confirms.** After fixes land, the pipeline re-runs the same
|
|
138
|
+
gather + agentic phases. If the score did not improve, escalate honestly.
|
|
139
|
+
5. **History is the trend.** `omega audit history apiaudit` shows whether the
|
|
140
|
+
codebase is improving over time on this dimension. Use it to decide
|
|
141
|
+
whether to push for `--fix` again.
|
|
142
|
+
|
|
143
|
+
## Why this audit exists
|
|
144
|
+
|
|
145
|
+
The 18 forensic audits are the OmegaOS verification layer. Claude's
|
|
146
|
+
"I'm done" claims used to be unverified. With these audits running as
|
|
147
|
+
the gate, completion is **derived from observable facts**, not declared
|
|
148
|
+
by the worker. Run this audit any time someone (human or agent) claims
|
|
149
|
+
the api dimension is healthy. Insist on the score before you
|
|
150
|
+
accept.
|
|
151
|
+
|
|
152
|
+
## Reference
|
|
153
|
+
|
|
154
|
+
Audit definition: `Agentik_SSOT/audits/apiaudit.yaml`
|
|
155
|
+
Engine pipeline: `omega_engine.audits.pipeline.AuditPipeline`
|
|
156
|
+
Batcher: `omega_engine.audits.batcher.batch_findings`
|
|
157
|
+
History: `omega_engine.audits.history`
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: audit-orchestrator
|
|
3
|
+
description: >
|
|
4
|
+
Intelligent audit orchestrator — detects project type + user intent, recommends
|
|
5
|
+
optimal audits with 3 power levels (Quick/Standard/Forensic). Use when user
|
|
6
|
+
says "/audit", "what should I audit", "full audit", "audit my project",
|
|
7
|
+
"audit fast", "audit deep", "find issues", "improve quality", "production
|
|
8
|
+
ready check", "ship-ready audit". Auto-detects project stack and intent
|
|
9
|
+
keywords (speed, security, design, content, accessibility, full) to pick
|
|
10
|
+
best 1-N audits. Dispatches in parallel waves. Reads results from
|
|
11
|
+
audits/.{name}audit/verdict.json after each run.
|
|
12
|
+
disable-model-invocation: false
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# /audit-orchestrator — Intelligent Audit Selection + Power Levels
|
|
16
|
+
|
|
17
|
+
You are the **audit conductor**. Given a user request and a project, pick the
|
|
18
|
+
RIGHT audits at the RIGHT power level, dispatch them, and synthesize results.
|
|
19
|
+
|
|
20
|
+
## How to invoke
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
/audit-orchestrator # interactive: ask user what to audit
|
|
24
|
+
/audit-orchestrator full # run all 17 audits in parallel
|
|
25
|
+
/audit-orchestrator quick # top 5 most-impactful audits at Quick level
|
|
26
|
+
/audit-orchestrator standard # smart selection at Standard level (default)
|
|
27
|
+
/audit-orchestrator forensic # deep Gestalt-Popper on selected audits
|
|
28
|
+
/audit-orchestrator security # secaudit + apiaudit + dataaudit
|
|
29
|
+
/audit-orchestrator performance # perfaudit + seoaudit
|
|
30
|
+
/audit-orchestrator design # uiuxaudit + motionaudit + a11yaudit + copyaudit
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## The 17 audits in the Quality Arsenal
|
|
34
|
+
|
|
35
|
+
| Audit | Domain | When to pick |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| `/codeaudit` | Code architecture | New codebase, refactor, technical debt |
|
|
38
|
+
| `/secaudit` | Security (OWASP) | Pre-prod, payment handling, auth surfaces |
|
|
39
|
+
| `/uiuxaudit` | Design quality | Visual consistency, design system audit |
|
|
40
|
+
| `/flowaudit` | User journeys | Onboarding, conversion drops, dead-ends |
|
|
41
|
+
| `/debugaudit` | Runtime bugs | Console errors, broken features, smoke test |
|
|
42
|
+
| `/featureaudit` | Completeness | PRD validation, ship-readiness, "what's missing" |
|
|
43
|
+
| `/perfaudit` | Core Web Vitals | Slow site, lighthouse improvement |
|
|
44
|
+
| `/a11yaudit` | WCAG 2.1 AA | Accessibility, screen readers, contrast |
|
|
45
|
+
| `/seoaudit` | Discoverability | Search ranking, GEO/AEO, schema markup |
|
|
46
|
+
| `/dataaudit` | Schema integrity | Orphaned records, migrations, RGPD |
|
|
47
|
+
| `/apiaudit` | API contracts | Endpoint quality, auth matrix, rate limits |
|
|
48
|
+
| `/copyaudit` | Messaging | Claims vs reality, CTA, tone |
|
|
49
|
+
| `/dxaudit` | Dev experience | README quality, onboarding new devs |
|
|
50
|
+
| `/motionaudit` | Animation design | Transitions, easing, motion brand DNA |
|
|
51
|
+
| `/automationaudit` | Cron/scripts | Daemon health, scheduled tasks reliability |
|
|
52
|
+
| `/logicaudit` | Architecture | Algorithm efficiency, redundant logic |
|
|
53
|
+
| `/retentionaudit` | Product/CPO | Feature opportunities, RICE roadmap (READ-ONLY) |
|
|
54
|
+
|
|
55
|
+
## The 3 Power Levels
|
|
56
|
+
|
|
57
|
+
### ⚡ Level 1 — Quick (5-15 min)
|
|
58
|
+
- Top 5 critical findings only
|
|
59
|
+
- Skip Plan + Fix phases
|
|
60
|
+
- Output: `audits/.{name}audit/quick-report.md` (no verdict.json scoring)
|
|
61
|
+
- Use case: gut-check before a meeting, fast triage
|
|
62
|
+
|
|
63
|
+
### 🎯 Level 2 — Standard (30-60 min, DEFAULT)
|
|
64
|
+
- Full phases: Audit → Plan → Fix → Re-audit
|
|
65
|
+
- Score normalized /100
|
|
66
|
+
- Output: complete `audits/.{name}audit/verdict.json` + reports
|
|
67
|
+
- Use case: regular quality cycle, pre-PR validation
|
|
68
|
+
|
|
69
|
+
### 🔬 Level 3 — Forensic (1-4h per audit)
|
|
70
|
+
- Full Gestalt-Popper protocol, all phases extended
|
|
71
|
+
- Auto-fix every finding P0/P1/P2
|
|
72
|
+
- Re-audit cycles until 100/100 (or 3 cycle cap)
|
|
73
|
+
- Output: forensic-grade with falsification proofs + telemetry
|
|
74
|
+
- Use case: pre-launch, security/compliance gate, "make it bulletproof"
|
|
75
|
+
|
|
76
|
+
## Smart Selection Algorithm
|
|
77
|
+
|
|
78
|
+
When user says ambiguous request like "audit my project":
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
1. DETECT PROJECT TYPE
|
|
82
|
+
- Check package.json: React/Next.js/Vue → UI audits relevant
|
|
83
|
+
- Check requirements.txt/pyproject.toml: Python → no motion/uiux
|
|
84
|
+
- Check .convex/ or prisma/: dataaudit relevant
|
|
85
|
+
- Check api/ or routes/: apiaudit relevant
|
|
86
|
+
- Check .github/workflows/: dxaudit + automationaudit
|
|
87
|
+
- No src/ but docs/: feature/copy/seo only (docs project)
|
|
88
|
+
|
|
89
|
+
2. PARSE INTENT KEYWORDS (English + French)
|
|
90
|
+
- "speed/fast/lent/lenteur" → perfaudit (+ seoaudit if web)
|
|
91
|
+
- "security/sec/vuln/secure/sécurité" → secaudit + apiaudit
|
|
92
|
+
- "design/visual/UI/UX/style" → uiuxaudit + motionaudit
|
|
93
|
+
- "content/copy/messaging/text" → copyaudit
|
|
94
|
+
- "accessibility/a11y/WCAG/handicap" → a11yaudit
|
|
95
|
+
- "API/endpoint/contract" → apiaudit + dataaudit
|
|
96
|
+
- "complete/missing/done/ship-ready" → featureaudit
|
|
97
|
+
- "code/quality/refactor" → codeaudit + logicaudit
|
|
98
|
+
- "retention/features/CPO/sticky" → retentionaudit
|
|
99
|
+
- "data/schema/migration" → dataaudit
|
|
100
|
+
- "automation/cron/scripts" → automationaudit
|
|
101
|
+
- "bug/error/broken/runtime" → debugaudit
|
|
102
|
+
- "redesign/refonte/dashboard" → refontaudit
|
|
103
|
+
- "full/all/everything/complet" → ALL 17 audits
|
|
104
|
+
|
|
105
|
+
3. PICK POWER LEVEL
|
|
106
|
+
- Default: Standard (Level 2)
|
|
107
|
+
- User mentions "quick/fast/rapide" → Quick (Level 1)
|
|
108
|
+
- User mentions "deep/forensic/production/launch/100" → Forensic (Level 3)
|
|
109
|
+
|
|
110
|
+
4. CHECK PROJECT MATURITY
|
|
111
|
+
- Empty src/ or fresh scaffold → skip code-focused audits, run featureaudit+copyaudit
|
|
112
|
+
- Mature codebase → all relevant
|
|
113
|
+
- Pre-launch → add secaudit + a11yaudit + perfaudit (the "go-live trio")
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Execution Plan Output
|
|
117
|
+
|
|
118
|
+
Before dispatching, OUTPUT a plan like:
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
🎯 AUDIT PLAN — {project_name}
|
|
122
|
+
|
|
123
|
+
Detected:
|
|
124
|
+
Stack: Next.js + Tailwind + Convex
|
|
125
|
+
Maturity: Production (12 months)
|
|
126
|
+
Intent: "make sure it's secure before launch"
|
|
127
|
+
|
|
128
|
+
Recommended (Power Level: Forensic):
|
|
129
|
+
1. /secaudit (OWASP + payment surfaces — primary)
|
|
130
|
+
2. /apiaudit (auth matrix + rate limits — secondary)
|
|
131
|
+
3. /dataaudit (RGPD + orphan records — context for /apiaudit)
|
|
132
|
+
4. /a11yaudit (legal compliance — go-live blocker)
|
|
133
|
+
5. /perfaudit (CWV — go-live blocker)
|
|
134
|
+
|
|
135
|
+
Estimated duration: 4-6h (parallel waves)
|
|
136
|
+
Estimated tokens: ~800K
|
|
137
|
+
|
|
138
|
+
Approve? [y/n/customize]
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Full Audit Mode
|
|
142
|
+
|
|
143
|
+
When user says "full audit" / "audit complet" / "tous les audits":
|
|
144
|
+
|
|
145
|
+
1. Dispatch ALL 17 audits in 3 parallel waves (file-safety partitioned):
|
|
146
|
+
- **Wave 1** (read-only, can parallel): codeaudit, logicaudit, dataaudit, apiaudit, seoaudit, featureaudit, retentionaudit, copyaudit, dxaudit
|
|
147
|
+
- **Wave 2** (after Wave 1 verdicts exist): secaudit (reads apiaudit), perfaudit, debugaudit, automationaudit
|
|
148
|
+
- **Wave 3** (UI bundle, after Wave 1): uiuxaudit, motionaudit, a11yaudit, flowaudit
|
|
149
|
+
2. After all done, generate `audits/SYNTHESIS.md` aggregating scores
|
|
150
|
+
3. Score the project: average /100 across all audits + flag any < 80
|
|
151
|
+
4. Telegram report with verdict + button to view each detailed report
|
|
152
|
+
|
|
153
|
+
## State Tracking
|
|
154
|
+
|
|
155
|
+
Read `audits/SYNTHESIS.md` at start to know what's already done:
|
|
156
|
+
|
|
157
|
+
```yaml
|
|
158
|
+
last_full_audit: 2026-05-13T12:00:00Z
|
|
159
|
+
scores:
|
|
160
|
+
codeaudit: 92/A
|
|
161
|
+
secaudit: 88/A
|
|
162
|
+
uiuxaudit: 91/S
|
|
163
|
+
...
|
|
164
|
+
status:
|
|
165
|
+
fresh: [codeaudit, secaudit] # < 7 days old
|
|
166
|
+
stale: [perfaudit] # 7-30 days old
|
|
167
|
+
expired: [a11yaudit] # > 30 days, recommend re-run
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Output Convention
|
|
171
|
+
|
|
172
|
+
ALL audits MUST write to `audits/.{name}audit/` (the canonical post-2026-05-13
|
|
173
|
+
location). Never to `./.{name}audit/` at project root. The new audit-orchestrator
|
|
174
|
+
+ audit-tracker skills assume this canonical path.
|
|
175
|
+
|
|
176
|
+
## Anti-patterns
|
|
177
|
+
|
|
178
|
+
- ❌ Running `/codeaudit` when project has no source code (use /dxaudit instead)
|
|
179
|
+
- ❌ Running `/motionaudit` on CLI/library project (it ABORTS automatically)
|
|
180
|
+
- ❌ Forensic level on every audit (token waste; use Standard unless go-live)
|
|
181
|
+
- ❌ Skipping the plan-confirmation step (user wants to see what you'll run)
|
|
182
|
+
- ❌ Running audits in serial when waves allow parallelism
|
|
183
|
+
- ❌ Treating retentionaudit as fix-mode (it's READ-ONLY by design)
|
|
184
|
+
|
|
185
|
+
## Workflow
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
User: "/audit-orchestrator security"
|
|
189
|
+
↓
|
|
190
|
+
You: parse "security" → secaudit + apiaudit + dataaudit
|
|
191
|
+
You: detect project at Standard level (no "deep/forensic" keyword)
|
|
192
|
+
You: emit plan markdown, ask confirmation
|
|
193
|
+
↓
|
|
194
|
+
User: "y"
|
|
195
|
+
↓
|
|
196
|
+
You: dispatch 3 audits in parallel via tmux work sessions
|
|
197
|
+
You: monitor verdict.json files appearing under audits/.{name}/
|
|
198
|
+
You: when all 3 done, write audits/SYNTHESIS.md
|
|
199
|
+
You: send Telegram report with aggregate score + per-audit links
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## When to invoke alternative skills
|
|
203
|
+
|
|
204
|
+
- For a SINGLE specific audit → user types `/codeaudit` directly (not via orchestrator)
|
|
205
|
+
- For audit setup / .gitignore / progress dashboard → use `/audit-tracker`
|
|
206
|
+
- For oracle dispatch of audit chain → use `/aisb full`
|
|
207
|
+
|
|
208
|
+
## Sources
|
|
209
|
+
|
|
210
|
+
- 17 Quality Arsenal audits in `~/.claude/commands/`
|
|
211
|
+
- Helper docs: `ARSENAL-ORCHESTRATION-PLAYBOOK.md`, `ARSENAL-INTERCONNECTIONS.md`
|
|
212
|
+
- Public mirror: https://github.com/agentik-os/quality-arsenal
|