wicked-garden 12.27.0
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/.claude-plugin/archetypes.json +166 -0
- package/.claude-plugin/components.json +75 -0
- package/.claude-plugin/marketplace.json +15 -0
- package/.claude-plugin/plugin.json +174 -0
- package/.claude-plugin/specialist.json +48 -0
- package/.claude-plugin/stack-registry.json +96 -0
- package/AGENTS.md +13 -0
- package/CHANGELOG.md +712 -0
- package/CONTRIBUTING.md +99 -0
- package/ETHOS.md +83 -0
- package/LICENSE +21 -0
- package/README.md +115 -0
- package/WICKED_GARDEN_BUS_EVENTS.md +149 -0
- package/agents/agentic/architect.md +449 -0
- package/agents/agentic/performance-analyst.md +702 -0
- package/agents/agentic/safety-reviewer.md +662 -0
- package/agents/crew/implementer.md +163 -0
- package/agents/crew/researcher.md +94 -0
- package/agents/crew/reviewer.md +184 -0
- package/agents/data/data-engineer.md +227 -0
- package/agents/engineering/api-documentarian.md +440 -0
- package/agents/engineering/migration-engineer.md +301 -0
- package/agents/engineering/solution-architect.md +208 -0
- package/agents/jam/brainstorm-facilitator.md +297 -0
- package/agents/jam/council.md +322 -0
- package/agents/jam/quick-facilitator.md +85 -0
- package/agents/persona/persona-agent.md +121 -0
- package/agents/platform/compliance-officer.md +266 -0
- package/agents/platform/privacy-expert.md +496 -0
- package/agents/platform/security-engineer.md +287 -0
- package/agents/product/a11y-expert.md +323 -0
- package/agents/product/requirements-analyst.md +238 -0
- package/agents/product/ui-reviewer.md +180 -0
- package/agents/product/ux-designer.md +199 -0
- package/agents/product/value-strategist.md +269 -0
- package/agents/qe/semantic-reviewer.md +78 -0
- package/commands/agentic/audit.md +24 -0
- package/commands/agentic/design.md +24 -0
- package/commands/agentic/frameworks.md +25 -0
- package/commands/agentic/review.md +27 -0
- package/commands/archetype/build.md +12 -0
- package/commands/archetype/decide.md +12 -0
- package/commands/archetype/explore.md +12 -0
- package/commands/archetype/incident.md +12 -0
- package/commands/archetype/migrate.md +12 -0
- package/commands/archetype/modernize.md +12 -0
- package/commands/archetype/review.md +14 -0
- package/commands/archetype/ship.md +12 -0
- package/commands/archetype/specify.md +12 -0
- package/commands/archetype/triage.md +12 -0
- package/commands/compile.md +37 -0
- package/commands/data/analyze.md +18 -0
- package/commands/data/data.md +21 -0
- package/commands/data/ml.md +18 -0
- package/commands/data/ontology.md +22 -0
- package/commands/data/pipeline.md +17 -0
- package/commands/deliberate.md +181 -0
- package/commands/engineering/add-field.md +77 -0
- package/commands/engineering/apply.md +58 -0
- package/commands/engineering/arch.md +26 -0
- package/commands/engineering/debug.md +27 -0
- package/commands/engineering/docs.md +27 -0
- package/commands/engineering/new-generator.md +257 -0
- package/commands/engineering/patch-plan.md +59 -0
- package/commands/engineering/plan.md +29 -0
- package/commands/engineering/remove.md +48 -0
- package/commands/engineering/rename.md +44 -0
- package/commands/engineering/review.md +32 -0
- package/commands/help.md +128 -0
- package/commands/install.md +118 -0
- package/commands/intent.md +54 -0
- package/commands/jam/brainstorm.md +37 -0
- package/commands/jam/council.md +49 -0
- package/commands/jam/quick.md +21 -0
- package/commands/jam/revisit.md +79 -0
- package/commands/persona/as.md +136 -0
- package/commands/persona/define.md +24 -0
- package/commands/persona/list.md +118 -0
- package/commands/platform/actions.md +20 -0
- package/commands/platform/assert.md +18 -0
- package/commands/platform/audit.md +23 -0
- package/commands/platform/compliance.md +20 -0
- package/commands/platform/gh.md +22 -0
- package/commands/platform/health.md +22 -0
- package/commands/platform/incident.md +23 -0
- package/commands/platform/infra.md +24 -0
- package/commands/platform/peer-health.md +103 -0
- package/commands/platform/plugin-health.md +58 -0
- package/commands/platform/security.md +38 -0
- package/commands/platform/toolchain.md +96 -0
- package/commands/platform/traces.md +20 -0
- package/commands/product/a11y.md +19 -0
- package/commands/product/acceptance.md +19 -0
- package/commands/product/align.md +20 -0
- package/commands/product/analyze.md +23 -0
- package/commands/product/elicit.md +19 -0
- package/commands/product/listen.md +24 -0
- package/commands/product/mockup.md +20 -0
- package/commands/product/screenshot.md +19 -0
- package/commands/product/strategy.md +40 -0
- package/commands/product/synthesize.md +23 -0
- package/commands/product/ux-review.md +42 -0
- package/commands/product/ux.md +20 -0
- package/commands/product/visual-direction.md +34 -0
- package/commands/prove.md +47 -0
- package/commands/report-issue.md +243 -0
- package/commands/reset.md +144 -0
- package/commands/search/blast-radius.md +58 -0
- package/commands/search/hotspots.md +55 -0
- package/commands/search/index.md +38 -0
- package/commands/search/lineage.md +47 -0
- package/commands/search/service-map.md +79 -0
- package/commands/setup.md +363 -0
- package/commands/smaht/briefing.md +200 -0
- package/commands/smaht/events-import.md +95 -0
- package/commands/smaht/state.md +19 -0
- package/commands/where-am-i.md +58 -0
- package/docs/README.md +32 -0
- package/docs/adr/0001-code-relationship-graph-engine.md +116 -0
- package/docs/adr/0002-major-cleanup-keep-cut.md +91 -0
- package/docs/adr/0003-peers-gate-required-layers-optin.md +41 -0
- package/docs/adr/0004-code-graph-moves-to-wicked-brain.md +47 -0
- package/docs/brain-chunk-format.md +135 -0
- package/docs/compiler.md +95 -0
- package/docs/daemon-api.md +70 -0
- package/docs/domains.md +197 -0
- package/docs/getting-started.md +208 -0
- package/docs/plans/2026-06-08-wicked-loom-conduct.md +1337 -0
- package/docs/plans/2026-06-08-wicked-loom-contract.md +638 -0
- package/docs/plans/2026-06-08-wicked-loom-cutover.md +1300 -0
- package/docs/plans/2026-06-08-wicked-loom-expand-compose.md +843 -0
- package/docs/plans/2026-06-08-wicked-loom-flow-cutover.md +403 -0
- package/docs/plans/2026-06-10-codegraph-to-brain-phase1a-graph-core.md +838 -0
- package/docs/plans/2026-06-10-codegraph-to-brain-phase1b-injected-edges.md +44 -0
- package/docs/required-peers.md +60 -0
- package/docs/specs/2026-06-08-wicked-loom-extraction.md +225 -0
- package/docs/specs/2026-06-10-codegraph-to-brain-migration.md +168 -0
- package/docs/v11/archetypes.md +231 -0
- package/hooks/hooks.json +275 -0
- package/hooks/scripts/bootstrap.py +1797 -0
- package/hooks/scripts/invoke.py +62 -0
- package/hooks/scripts/notification.py +166 -0
- package/hooks/scripts/permission_request.py +223 -0
- package/hooks/scripts/post_tool.py +1374 -0
- package/hooks/scripts/pre_compact.py +272 -0
- package/hooks/scripts/pre_tool.py +1278 -0
- package/hooks/scripts/prompt_submit.py +1109 -0
- package/hooks/scripts/session_end.py +95 -0
- package/hooks/scripts/stop.py +624 -0
- package/hooks/scripts/subagent_lifecycle.py +464 -0
- package/hooks/scripts/subscribers/on_gate_decided.py +84 -0
- package/hooks/scripts/task_completed.py +322 -0
- package/hooks/scripts/worktree_guard.py +148 -0
- package/hooks/subscriptions/on_gate_decided.json +9 -0
- package/install.mjs +128 -0
- package/package.json +41 -0
- package/pyproject.toml +59 -0
- package/schemas/README.md +32 -0
- package/schemas/assert_contracts.json +37 -0
- package/schemas/health_probe.json +46 -0
- package/schemas/plugin_status.json +37 -0
- package/scripts/_adapters/__init__.py +166 -0
- package/scripts/_adapters/jira_adapter.py +18 -0
- package/scripts/_adapters/linear_adapter.py +18 -0
- package/scripts/_adapters/miro_adapter.py +18 -0
- package/scripts/_adapters/notion_adapter.py +18 -0
- package/scripts/_agents.py +357 -0
- package/scripts/_brain_ingest/__init__.py +2 -0
- package/scripts/_brain_ingest/session_fact_extractor.py +341 -0
- package/scripts/_brain_port.py +163 -0
- package/scripts/_bus.py +1081 -0
- package/scripts/_bus_catalog_gen.py +93 -0
- package/scripts/_bus_consumers.json +46 -0
- package/scripts/_bus_emit.py +43 -0
- package/scripts/_capability_registry.py +334 -0
- package/scripts/_capability_resolver.py +322 -0
- package/scripts/_domain_store.py +559 -0
- package/scripts/_event_log_reader.py +154 -0
- package/scripts/_event_schema.py +305 -0
- package/scripts/_event_store.py +397 -0
- package/scripts/_heavy_cadence.py +324 -0
- package/scripts/_integration_resolver.py +321 -0
- package/scripts/_logger.py +151 -0
- package/scripts/_loom.py +482 -0
- package/scripts/_paths.py +133 -0
- package/scripts/_python.sh +22 -0
- package/scripts/_run.py +137 -0
- package/scripts/_session.py +502 -0
- package/scripts/_validate_registry.py +1042 -0
- package/scripts/_wicked_testing_probe.py +277 -0
- package/scripts/agentic/analyze_agents.py +391 -0
- package/scripts/agentic/detect_framework.py +420 -0
- package/scripts/agentic/issue_taxonomy.py +357 -0
- package/scripts/agentic/pattern_scorer.py +434 -0
- package/scripts/classify/persist.py +169 -0
- package/scripts/compiler/compile.py +552 -0
- package/scripts/compiler/phase0/VERDICT.md +60 -0
- package/scripts/compiler/phase0/detect.py +292 -0
- package/scripts/compiler/phase0/emit.py +228 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.bindings.json +30 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/honest-tests.txt +2 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/command_iq.bindings.json +45 -0
- package/scripts/compiler/phase0/evidence/command_iq.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/honest-tests.txt +3 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/memos.bindings.json +28 -0
- package/scripts/compiler/phase0/evidence/memos.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/honest-tests.txt +2 -0
- package/scripts/compiler/phase0/evidence/memos.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/verdict.json +104 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.bindings.json +29 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/honest-tests.txt +3 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/wire-vault-transcript.txt +60 -0
- package/scripts/compiler/phase0/run_probe.py +234 -0
- package/scripts/compiler/phase0/wire_vault.py +310 -0
- package/scripts/crew/__init__.py +0 -0
- package/scripts/crew/_task_audit_writer.py +243 -0
- package/scripts/crew/_task_reader.py +389 -0
- package/scripts/crew/archetypes_v11.py +348 -0
- package/scripts/crew/detectors/__init__.py +12 -0
- package/scripts/crew/flow_compiler.py +121 -0
- package/scripts/crew/phase_manager.py +703 -0
- package/scripts/crew/scope_delta.py +264 -0
- package/scripts/crew/specialist_resolver.py +218 -0
- package/scripts/crew/stack_registry.py +189 -0
- package/scripts/data/data_profiler.py +271 -0
- package/scripts/data/ontology_recommender.py +231 -0
- package/scripts/data/schema_validator.py +267 -0
- package/scripts/delivery/drift.py +739 -0
- package/scripts/delivery/telemetry.py +614 -0
- package/scripts/engineering/patch/codegraph_db.py +125 -0
- package/scripts/engineering/patch/generators/__init__.py +56 -0
- package/scripts/engineering/patch/generators/base.py +373 -0
- package/scripts/engineering/patch/generators/csharp_generator.py +494 -0
- package/scripts/engineering/patch/generators/go_generator.py +430 -0
- package/scripts/engineering/patch/generators/java_generator.py +928 -0
- package/scripts/engineering/patch/generators/jsp_generator.py +454 -0
- package/scripts/engineering/patch/generators/kotlin_generator.py +561 -0
- package/scripts/engineering/patch/generators/perl_generator.py +510 -0
- package/scripts/engineering/patch/generators/php_generator.py +644 -0
- package/scripts/engineering/patch/generators/propagation_engine.py +929 -0
- package/scripts/engineering/patch/generators/python_generator.py +487 -0
- package/scripts/engineering/patch/generators/ruby_generator.py +463 -0
- package/scripts/engineering/patch/generators/rust_generator.py +400 -0
- package/scripts/engineering/patch/generators/sql_generator.py +594 -0
- package/scripts/engineering/patch/generators/typescript_generator.py +439 -0
- package/scripts/engineering/patch/patch.py +800 -0
- package/scripts/engineering/patch/safety.py +429 -0
- package/scripts/jam/__init__.py +0 -0
- package/scripts/jam/_bus_consumers.py +271 -0
- package/scripts/jam/agentic_cli_registry.py +703 -0
- package/scripts/jam/consensus.py +737 -0
- package/scripts/jam/detect_clis.py +409 -0
- package/scripts/jam/jam.py +283 -0
- package/scripts/jam/save_transcript.py +171 -0
- package/scripts/loom/__init__.py +22 -0
- package/scripts/loom/cli.py +170 -0
- package/scripts/loom/compose.py +180 -0
- package/scripts/loom/gate.py +120 -0
- package/scripts/loom/manifest.py +140 -0
- package/scripts/loom/resolve.py +59 -0
- package/scripts/persona/__init__.py +0 -0
- package/scripts/persona/registry.py +688 -0
- package/scripts/platform/guard_pipeline.py +1214 -0
- package/scripts/platform/guard_profiles.py +216 -0
- package/scripts/platform/observability/assert_contracts.py +434 -0
- package/scripts/platform/observability/health_probe.py +915 -0
- package/scripts/platform/observability/ops_log_viewer.py +209 -0
- package/scripts/platform/prereq_doctor.py +567 -0
- package/scripts/qe/conditions_manifest.py +260 -0
- package/scripts/qe/content_sanitizer.py +160 -0
- package/scripts/qe/coverage_tracker.py +535 -0
- package/scripts/qe/discover_scenarios.py +243 -0
- package/scripts/qe/evidence_tracker.py +232 -0
- package/scripts/qe/prove.py +196 -0
- package/scripts/qe/registry_lookup.py +80 -0
- package/scripts/qe/registry_store.py +176 -0
- package/scripts/qe/semantic_review.py +1005 -0
- package/scripts/qe/vault_gate.py +382 -0
- package/scripts/qe/verdict_audit.py +175 -0
- package/scripts/qe/verdict_schema.py +335 -0
- package/scripts/reset.py +220 -0
- package/scripts/resolve_path.py +22 -0
- package/scripts/sentinel/invariants.py +402 -0
- package/scripts/sentinel/pre_push.py +73 -0
- package/scripts/setup/__init__.py +1 -0
- package/scripts/setup/detect_state.py +114 -0
- package/scripts/setup/migrate_legacy.py +67 -0
- package/scripts/setup/migrate_v6_projects.py +232 -0
- package/scripts/setup/onboarding.py +114 -0
- package/scripts/smaht/_bus_consumers.py +98 -0
- package/scripts/smaht/adapters/__init__.py +83 -0
- package/scripts/smaht/adapters/brain_adapter.py +254 -0
- package/scripts/smaht/adapters/context7_adapter.py +438 -0
- package/scripts/smaht/adapters/delegation_adapter.py +104 -0
- package/scripts/smaht/adapters/domain_adapter.py +206 -0
- package/scripts/smaht/adapters/events_adapter.py +231 -0
- package/scripts/smaht/adapters/tools_adapter.py +49 -0
- package/scripts/smaht/cheatsheet_store.py +236 -0
- package/scripts/smaht/context_package.py +386 -0
- package/scripts/smaht/knowledge_graph.py +395 -0
- package/scripts/smaht/propose_skills.py +856 -0
- package/scripts/smaht/test_cheatsheet_store.py +428 -0
- package/scripts/statusline.py +151 -0
- package/scripts/where_am_i.py +236 -0
- package/skills/agentic/agentic-patterns/SKILL.md +91 -0
- package/skills/agentic/agentic-patterns/refs/anti-patterns-design.md +283 -0
- package/skills/agentic/agentic-patterns/refs/anti-patterns-operational.md +216 -0
- package/skills/agentic/agentic-patterns/refs/pattern-catalog.md +329 -0
- package/skills/agentic/context-engineering/SKILL.md +142 -0
- package/skills/agentic/context-engineering/refs/caching-and-optimization.md +251 -0
- package/skills/agentic/context-engineering/refs/compression-techniques.md +171 -0
- package/skills/agentic/context-engineering/refs/cost-calculation-budget.md +250 -0
- package/skills/agentic/context-engineering/refs/cost-optimization-reporting.md +300 -0
- package/skills/agentic/context-engineering/refs/selective-loading.md +179 -0
- package/skills/agentic/frameworks/SKILL.md +191 -0
- package/skills/agentic/frameworks/refs/framework-profiles-1.md +209 -0
- package/skills/agentic/frameworks/refs/framework-profiles-2.md +214 -0
- package/skills/agentic/frameworks/refs/migration-patterns-paths.md +267 -0
- package/skills/agentic/frameworks/refs/migration-patterns-testing.md +208 -0
- package/skills/agentic/refs/audit.md +134 -0
- package/skills/agentic/refs/design.md +137 -0
- package/skills/agentic/refs/frameworks.md +102 -0
- package/skills/agentic/refs/review.md +160 -0
- package/skills/agentic/review-methodology/SKILL.md +186 -0
- package/skills/agentic/review-methodology/refs/deliverable-templates.md +246 -0
- package/skills/agentic/review-methodology/refs/issue-taxonomy-quality-testing.md +277 -0
- package/skills/agentic/review-methodology/refs/issue-taxonomy-reliability-safety.md +253 -0
- package/skills/agentic/trust-and-safety/SKILL.md +177 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-actions.md +246 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-input-output.md +238 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-resources.md +209 -0
- package/skills/agentic/trust-and-safety/refs/safety-checklist-advanced.md +209 -0
- package/skills/agentic/trust-and-safety/refs/safety-checklist-core.md +215 -0
- package/skills/archetype/SKILL.md +104 -0
- package/skills/archetype/refs/build.md +142 -0
- package/skills/archetype/refs/decide.md +117 -0
- package/skills/archetype/refs/explore.md +66 -0
- package/skills/archetype/refs/incident.md +149 -0
- package/skills/archetype/refs/migrate.md +170 -0
- package/skills/archetype/refs/modernize.md +187 -0
- package/skills/archetype/refs/review.md +145 -0
- package/skills/archetype/refs/ship.md +117 -0
- package/skills/archetype/refs/specify.md +108 -0
- package/skills/archetype/refs/triage.md +62 -0
- package/skills/classify/SKILL.md +157 -0
- package/skills/data/analysis/SKILL.md +125 -0
- package/skills/data/analysis/refs/templates.md +170 -0
- package/skills/data/data/SKILL.md +118 -0
- package/skills/data/data/refs/examples.md +235 -0
- package/skills/data/ml/SKILL.md +125 -0
- package/skills/data/ml/refs/templates.md +172 -0
- package/skills/data/pipeline/SKILL.md +136 -0
- package/skills/data/pipeline/refs/templates.md +175 -0
- package/skills/data/refs/analyze.md +123 -0
- package/skills/data/refs/data.md +95 -0
- package/skills/data/refs/ml.md +118 -0
- package/skills/data/refs/pipeline.md +92 -0
- package/skills/deliberate/SKILL.md +125 -0
- package/skills/deliberate/refs/architecture-lens.md +37 -0
- package/skills/deliberate/refs/assumptions-lens.md +43 -0
- package/skills/deliberate/refs/code-lens.md +38 -0
- package/skills/deliberate/refs/content-lens.md +37 -0
- package/skills/deliberate/refs/data-lens.md +43 -0
- package/skills/deliberate/refs/design-lens.md +37 -0
- package/skills/deliberate/refs/opportunity-patterns.md +107 -0
- package/skills/deliberate/refs/ops-lens.md +43 -0
- package/skills/deliberate/refs/product-lens.md +46 -0
- package/skills/deliberate/refs/rethink-framework.md +77 -0
- package/skills/deliberate/refs/security-lens.md +47 -0
- package/skills/deliberate/refs/testing-lens.md +45 -0
- package/skills/deliberate/refs/timing-lens.md +42 -0
- package/skills/engineering/architecture/SKILL.md +177 -0
- package/skills/engineering/architecture/refs/adr-template.md +268 -0
- package/skills/engineering/architecture/refs/architecture-template-deployment.md +176 -0
- package/skills/engineering/architecture/refs/architecture-template-design.md +300 -0
- package/skills/engineering/architecture/refs/examples-ecommerce-analytics.md +299 -0
- package/skills/engineering/architecture/refs/examples-saas-trading.md +291 -0
- package/skills/engineering/architecture/refs/patterns-advanced.md +238 -0
- package/skills/engineering/architecture/refs/patterns-structural.md +303 -0
- package/skills/engineering/backend/SKILL.md +102 -0
- package/skills/engineering/backend/refs/checklists.md +146 -0
- package/skills/engineering/backend/refs/patterns.md +181 -0
- package/skills/engineering/debugging/SKILL.md +99 -0
- package/skills/engineering/debugging/refs/patterns.md +248 -0
- package/skills/engineering/debugging/refs/process.md +203 -0
- package/skills/engineering/docs/SKILL.md +97 -0
- package/skills/engineering/engineering/SKILL.md +88 -0
- package/skills/engineering/engineering/refs/checklists.md +91 -0
- package/skills/engineering/engineering/refs/templates.md +71 -0
- package/skills/engineering/frontend/SKILL.md +92 -0
- package/skills/engineering/frontend/refs/checklists.md +96 -0
- package/skills/engineering/frontend/refs/patterns.md +167 -0
- package/skills/engineering/integration/SKILL.md +183 -0
- package/skills/engineering/integration/refs/error-handling-best-practices.md +139 -0
- package/skills/engineering/integration/refs/error-handling-error-classes-typescript.md +212 -0
- package/skills/engineering/integration/refs/error-handling-error-response-format.md +301 -0
- package/skills/engineering/integration/refs/error-handling-retry-strategies.md +190 -0
- package/skills/engineering/integration/refs/event-schemas-best-practices.md +225 -0
- package/skills/engineering/integration/refs/event-schemas-event-naming-conventions.md +303 -0
- package/skills/engineering/integration/refs/event-schemas-event-structure.md +288 -0
- package/skills/engineering/integration/refs/graphql-best-practices.md +138 -0
- package/skills/engineering/integration/refs/graphql-error-handling.md +198 -0
- package/skills/engineering/integration/refs/graphql-graphql-basics.md +197 -0
- package/skills/engineering/integration/refs/graphql-query-examples.md +226 -0
- package/skills/engineering/integration/refs/graphql-schema-design-patterns.md +280 -0
- package/skills/engineering/integration/refs/grpc-grpc-overview.md +246 -0
- package/skills/engineering/integration/refs/grpc-implementation-examples.md +269 -0
- package/skills/engineering/integration/refs/grpc-metadata-headers.md +304 -0
- package/skills/engineering/integration/refs/grpc-testing.md +49 -0
- package/skills/engineering/integration/refs/openapi-template.yaml +682 -0
- package/skills/engineering/integration/refs/resilience-best-practices.md +109 -0
- package/skills/engineering/integration/refs/resilience-circuit-breaker-pattern.md +302 -0
- package/skills/engineering/integration/refs/resilience-rate-limiting.md +245 -0
- package/skills/engineering/integration/refs/resilience-timeout-pattern.md +212 -0
- package/skills/engineering/integration/refs/rest-api-fundamentals.md +299 -0
- package/skills/engineering/integration/refs/rest-api-responses-security.md +302 -0
- package/skills/engineering/integration/refs/versioning-breaking-changes.md +237 -0
- package/skills/engineering/integration/refs/versioning-migration-strategies.md +257 -0
- package/skills/engineering/integration/refs/versioning-versioning-strategies.md +296 -0
- package/skills/engineering/large-scale-migration/SKILL.md +65 -0
- package/skills/engineering/patch/SKILL.md +184 -0
- package/skills/engineering/refs/arch.md +126 -0
- package/skills/engineering/refs/debug.md +142 -0
- package/skills/engineering/refs/docs.md +190 -0
- package/skills/engineering/refs/plan.md +109 -0
- package/skills/engineering/refs/review.md +138 -0
- package/skills/engineering/system-design/SKILL.md +154 -0
- package/skills/engineering/system-design/refs/anti-patterns-big-ball-of-mud.md +254 -0
- package/skills/engineering/system-design/refs/anti-patterns-circular-dependencies.md +241 -0
- package/skills/engineering/system-design/refs/anti-patterns-feature-envy.md +168 -0
- package/skills/engineering/system-design/refs/anti-patterns-god-object.md +247 -0
- package/skills/engineering/system-design/refs/component-template-lifecycle.md +210 -0
- package/skills/engineering/system-design/refs/component-template-maintenance.md +219 -0
- package/skills/engineering/system-design/refs/component-template-structure.md +276 -0
- package/skills/engineering/system-design/refs/dependencies-best-practices.md +260 -0
- package/skills/engineering/system-design/refs/dependencies-dependency-principles.md +295 -0
- package/skills/engineering/system-design/refs/dependencies-dependency-tracking.md +261 -0
- package/skills/engineering/system-design/refs/interface-template-lifecycle.md +211 -0
- package/skills/engineering/system-design/refs/interface-template-maintenance.md +212 -0
- package/skills/engineering/system-design/refs/interface-template-structure.md +269 -0
- package/skills/engineering/system-design/refs/patterns-dependency-injection.md +151 -0
- package/skills/engineering/system-design/refs/patterns-facade-pattern.md +257 -0
- package/skills/engineering/system-design/refs/patterns-layered-pattern.md +204 -0
- package/skills/engineering/system-design/refs/patterns-plugin-architecture.md +229 -0
- package/skills/engineering/unit-test-quality/SKILL.md +194 -0
- package/skills/ground/SKILL.md +130 -0
- package/skills/integration-discovery/SKILL.md +168 -0
- package/skills/integration-discovery/refs/capabilities.md +282 -0
- package/skills/integration-discovery/refs/cli-detection.md +295 -0
- package/skills/integration-discovery/refs/discovery-sources.md +233 -0
- package/skills/integration-discovery/refs/task-patterns.md +206 -0
- package/skills/jam/SKILL.md +45 -0
- package/skills/jam/refs/facilitation-patterns.md +125 -0
- package/skills/jam/refs/quick.md +64 -0
- package/skills/jam/refs/synthesis-patterns.md +114 -0
- package/skills/multi-model/SKILL.md +168 -0
- package/skills/multi-model/refs/aichat.md +119 -0
- package/skills/multi-model/refs/aider.md +100 -0
- package/skills/multi-model/refs/auditability.md +238 -0
- package/skills/multi-model/refs/codex.md +169 -0
- package/skills/multi-model/refs/context.md +306 -0
- package/skills/multi-model/refs/copilot.md +161 -0
- package/skills/multi-model/refs/examples.md +224 -0
- package/skills/multi-model/refs/gemini.md +185 -0
- package/skills/multi-model/refs/goose.md +112 -0
- package/skills/multi-model/refs/llm.md +124 -0
- package/skills/multi-model/refs/opencode.md +196 -0
- package/skills/multi-model/refs/orchestration.md +188 -0
- package/skills/multi-model/refs/pi.md +208 -0
- package/skills/persona/SKILL.md +144 -0
- package/skills/persona/refs/define.md +133 -0
- package/skills/platform/actions/refs/actions.md +114 -0
- package/skills/platform/audit/SKILL.md +174 -0
- package/skills/platform/audit/refs/audit.md +145 -0
- package/skills/platform/audit/refs/checklists-evidence-operations.md +144 -0
- package/skills/platform/audit/refs/checklists-gdpr-pci-evidence.md +213 -0
- package/skills/platform/audit/refs/checklists-soc2-hipaa.md +120 -0
- package/skills/platform/audit/refs/frameworks-gdpr-pci.md +225 -0
- package/skills/platform/audit/refs/frameworks-soc2-hipaa.md +228 -0
- package/skills/platform/compliance/SKILL.md +169 -0
- package/skills/platform/compliance/refs/checklists.md +303 -0
- package/skills/platform/compliance/refs/compliance.md +117 -0
- package/skills/platform/compliance/refs/frameworks.md +282 -0
- package/skills/platform/errors/SKILL.md +183 -0
- package/skills/platform/errors/refs/patterns.md +271 -0
- package/skills/platform/errors/refs/severity.md +264 -0
- package/skills/platform/gate-benchmark-rebaseline/SKILL.md +108 -0
- package/skills/platform/gh/refs/gh.md +105 -0
- package/skills/platform/gh-cli/SKILL.md +120 -0
- package/skills/platform/gh-cli/refs/automation.md +63 -0
- package/skills/platform/gh-cli/refs/gh-ops.md +103 -0
- package/skills/platform/gh-cli/refs/patterns.md +132 -0
- package/skills/platform/gh-cli/scripts/gh_ops.py +454 -0
- package/skills/platform/github-actions/SKILL.md +159 -0
- package/skills/platform/github-actions/refs/security.md +150 -0
- package/skills/platform/github-actions/refs/templates.md +230 -0
- package/skills/platform/github-actions/refs/troubleshooting.md +174 -0
- package/skills/platform/github-actions/scripts/workflow_gen.py +215 -0
- package/skills/platform/gitlab-ci/SKILL.md +140 -0
- package/skills/platform/gitlab-ci/refs/templates.md +223 -0
- package/skills/platform/gitlab-ci/refs/troubleshooting.md +213 -0
- package/skills/platform/glab-cli/SKILL.md +133 -0
- package/skills/platform/glab-cli/refs/ci-debugging.md +95 -0
- package/skills/platform/glab-cli/refs/glab-ops.md +78 -0
- package/skills/platform/glab-cli/refs/patterns.md +131 -0
- package/skills/platform/glab-cli/scripts/glab_ops.py +313 -0
- package/skills/platform/health/SKILL.md +177 -0
- package/skills/platform/health/refs/health.md +72 -0
- package/skills/platform/health/refs/sources.md +302 -0
- package/skills/platform/incident/refs/incident.md +136 -0
- package/skills/platform/infra/refs/infra.md +104 -0
- package/skills/platform/observability/SKILL.md +128 -0
- package/skills/platform/observability/refs/toolchain-discovery.md +243 -0
- package/skills/platform/prereq-doctor/SKILL.md +57 -0
- package/skills/platform/prereq-doctor/refs/tool-registry.md +58 -0
- package/skills/platform/traces/refs/traces.md +101 -0
- package/skills/product/acceptance-criteria/SKILL.md +193 -0
- package/skills/product/acceptance-criteria/refs/ac-anti-patterns.md +291 -0
- package/skills/product/acceptance-criteria/refs/ac-examples.md +277 -0
- package/skills/product/accessibility/SKILL.md +197 -0
- package/skills/product/accessibility/refs/aria-patterns-basics.md +250 -0
- package/skills/product/accessibility/refs/aria-patterns-dynamic.md +187 -0
- package/skills/product/accessibility/refs/aria-patterns-interactive.md +246 -0
- package/skills/product/accessibility/refs/audit-report-findings.md +248 -0
- package/skills/product/accessibility/refs/audit-report-results.md +276 -0
- package/skills/product/accessibility/refs/common-violations-html-css.md +270 -0
- package/skills/product/accessibility/refs/common-violations-interactive.md +303 -0
- package/skills/product/accessibility/refs/keyboard-testing-basics.md +222 -0
- package/skills/product/accessibility/refs/keyboard-testing-patterns.md +173 -0
- package/skills/product/accessibility/refs/screen-reader-testing-advanced.md +294 -0
- package/skills/product/accessibility/refs/screen-reader-testing-commands.md +255 -0
- package/skills/product/accessibility/refs/wcag-checklist.md +262 -0
- package/skills/product/analyze/SKILL.md +164 -0
- package/skills/product/analyze/refs/algorithms.md +238 -0
- package/skills/product/analyze/refs/sentiment-patterns.md +180 -0
- package/skills/product/imagery/SKILL.md +97 -0
- package/skills/product/imagery/alter/SKILL.md +105 -0
- package/skills/product/imagery/alter/refs/editing-reference.md +146 -0
- package/skills/product/imagery/create/SKILL.md +109 -0
- package/skills/product/imagery/create/refs/prompt-engineering.md +112 -0
- package/skills/product/imagery/create/refs/provider-reference.md +219 -0
- package/skills/product/imagery/review/SKILL.md +101 -0
- package/skills/product/imagery/review/refs/analysis-lenses.md +136 -0
- package/skills/product/imagery/review/refs/quality-gates.md +153 -0
- package/skills/product/imagery/scripts/analyze.sh +23 -0
- package/skills/product/imagery/scripts/edit.sh +14 -0
- package/skills/product/imagery/scripts/generate.sh +13 -0
- package/skills/product/imagery/scripts/provider.py +787 -0
- package/skills/product/listen/SKILL.md +175 -0
- package/skills/product/listen/refs/channels.md +220 -0
- package/skills/product/mockup/SKILL.md +106 -0
- package/skills/product/mockup/refs/templates.md +95 -0
- package/skills/product/refs/a11y.md +109 -0
- package/skills/product/refs/acceptance.md +79 -0
- package/skills/product/refs/align.md +67 -0
- package/skills/product/refs/analyze.md +77 -0
- package/skills/product/refs/elicit.md +67 -0
- package/skills/product/refs/listen.md +58 -0
- package/skills/product/refs/mockup.md +77 -0
- package/skills/product/refs/screenshot.md +59 -0
- package/skills/product/refs/strategy.md +77 -0
- package/skills/product/refs/synthesize.md +54 -0
- package/skills/product/refs/ux-review.md +68 -0
- package/skills/product/refs/ux.md +101 -0
- package/skills/product/requirements-analysis/SKILL.md +136 -0
- package/skills/product/requirements-analysis/refs/requirements-example-auth.md +264 -0
- package/skills/product/requirements-analysis/refs/requirements-example-export-integration.md +88 -0
- package/skills/product/requirements-analysis/refs/requirements-output-format-template.md +247 -0
- package/skills/product/requirements-analysis/refs/user-story-guide.md +296 -0
- package/skills/product/requirements-graph/SKILL.md +155 -0
- package/skills/product/requirements-graph/refs/examples.md +223 -0
- package/skills/product/requirements-graph/refs/schema.md +162 -0
- package/skills/product/requirements-migrate/SKILL.md +90 -0
- package/skills/product/requirements-navigate/SKILL.md +141 -0
- package/skills/product/requirements-navigate/refs/meta-templates.md +141 -0
- package/skills/product/screenshot/SKILL.md +147 -0
- package/skills/product/strategy/SKILL.md +198 -0
- package/skills/product/strategy/refs/frameworks.md +295 -0
- package/skills/product/strategy/refs/templates-competitive-market.md +299 -0
- package/skills/product/strategy/refs/templates-roi-value.md +207 -0
- package/skills/product/synthesize/SKILL.md +116 -0
- package/skills/product/synthesize/refs/journey-mapping.md +212 -0
- package/skills/product/synthesize/refs/prioritization.md +193 -0
- package/skills/product/ux-review/SKILL.md +164 -0
- package/skills/product/visual-direction/SKILL.md +137 -0
- package/skills/product/visual-review/SKILL.md +131 -0
- package/skills/runtime-exec/SKILL.md +138 -0
- package/skills/search/codebase-narrator/SKILL.md +131 -0
- package/skills/search/codebase-narrator/refs/output-template.md +100 -0
- package/skills/smaht/SKILL.md +72 -0
- package/skills/smaht/discovery/SKILL.md +65 -0
- package/skills/smaht/intent/SKILL.md +89 -0
- package/skills/smaht/propose-skills/SKILL.md +142 -0
- package/skills/smaht/refs/state.md +76 -0
- package/skills/swarm/SKILL.md +132 -0
- package/skills/swarm/refs/fan-out.md +104 -0
- package/skills/swarm/refs/independent-verification.md +86 -0
- package/skills/swarm/refs/receipts-and-evidence.md +69 -0
- package/skills/swarm/refs/recon-synthesis.md +87 -0
- package/skills/swarm/refs/ship-discipline.md +90 -0
- package/skills/wickedizer/SKILL.md +147 -0
- package/skills/wickedizer/refs/artifact-types.md +238 -0
- package/skills/wickedizer/refs/complexity.md +278 -0
- package/skills/wickedizer/refs/de-ai-pass.md +140 -0
- package/skills/wickedizer/refs/failure-modes.md +249 -0
- package/skills/wickedizer/refs/patterns.md +282 -0
- package/skills/wickedizer/refs/review.md +221 -0
- package/skills/wickedizer/refs/structure.md +282 -0
- package/skills/wickedizer/refs/voice-profile.md +125 -0
- package/skills/workflow/SKILL.md +132 -0
- package/skills/workflow/refs/archetype-adjustments.md +205 -0
- package/skills/workflow/refs/evidence.md +58 -0
- package/skills/workflow/refs/integration.md +130 -0
- package/skills/workflow/refs/risk-dimension-signals.md +260 -0
- package/skills/workflow/refs/scoring-rubric.md +49 -0
- package/skills/workflow/refs/signal-keywords.md +176 -0
- package/skills/workflow/refs/specialist-routing-rules.md +159 -0
- package/skills/worktrees/SKILL.md +87 -0
- package/skills/worktrees/refs/recipes.md +96 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
where_am_i.py — Emit a compact path manifest for the current session.
|
|
4
|
+
|
|
5
|
+
Resolves the five storage roots used by wicked-garden subagent dispatches
|
|
6
|
+
so callers don't have to re-enumerate them in every prompt:
|
|
7
|
+
|
|
8
|
+
1. plugin_root — the wicked-garden plugin checkout
|
|
9
|
+
2. source_cwd — the working directory at invocation
|
|
10
|
+
3. project_artifacts — ~/.something-wicked/wicked-garden/projects/{slug}/...
|
|
11
|
+
4. brain — ~/.wicked-brain/projects/{basename}/_meta/config.json
|
|
12
|
+
5. bus_db — ~/.something-wicked/wicked-bus/bus.db
|
|
13
|
+
|
|
14
|
+
Usage:
|
|
15
|
+
where_am_i.py # JSON manifest (default)
|
|
16
|
+
where_am_i.py --fence # wrap in ```json fence
|
|
17
|
+
where_am_i.py --env # substitute env-var forms (e.g. $CLAUDE_PLUGIN_ROOT)
|
|
18
|
+
|
|
19
|
+
Fail-open contract: any resolution failure emits `null` for that field and
|
|
20
|
+
a one-line note on stderr; the script never raises to the caller.
|
|
21
|
+
|
|
22
|
+
Provenance: Issue #576 — reduce per-dispatch prompt bloat.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
import argparse
|
|
26
|
+
import json
|
|
27
|
+
import os
|
|
28
|
+
import sys
|
|
29
|
+
from pathlib import Path
|
|
30
|
+
|
|
31
|
+
# Named constants — avoid magic strings.
|
|
32
|
+
_ENV_PLUGIN_ROOT = "CLAUDE_PLUGIN_ROOT"
|
|
33
|
+
_CREW_DOMAIN = "wicked-crew"
|
|
34
|
+
_CREW_PROJECTS_SUB = "projects"
|
|
35
|
+
_BRAIN_ROOT = Path.home() / ".wicked-brain"
|
|
36
|
+
_BRAIN_PROJECTS = _BRAIN_ROOT / "projects"
|
|
37
|
+
_BRAIN_META_CONFIG = Path("_meta") / "config.json"
|
|
38
|
+
_ROOT_BRAIN_CONFIG = _BRAIN_ROOT / "_meta" / "config.json"
|
|
39
|
+
_BUS_DB_PATH = Path.home() / ".something-wicked" / "wicked-bus" / "bus.db"
|
|
40
|
+
|
|
41
|
+
_FENCE_OPEN = "```json"
|
|
42
|
+
_FENCE_CLOSE = "```"
|
|
43
|
+
|
|
44
|
+
# Ensure scripts/ is importable when invoked directly.
|
|
45
|
+
_THIS_DIR = Path(__file__).resolve().parent
|
|
46
|
+
if str(_THIS_DIR) not in sys.path:
|
|
47
|
+
sys.path.insert(0, str(_THIS_DIR))
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _note(msg: str) -> None:
|
|
51
|
+
"""Emit a single-line stderr note; never raises."""
|
|
52
|
+
try:
|
|
53
|
+
sys.stderr.write(f"[where-am-i] {msg}\n")
|
|
54
|
+
except OSError:
|
|
55
|
+
pass # fail open — stderr unavailable is non-fatal
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _resolve_plugin_root() -> str | None:
|
|
59
|
+
"""Return the plugin checkout path, preferring CLAUDE_PLUGIN_ROOT."""
|
|
60
|
+
env_val = os.environ.get(_ENV_PLUGIN_ROOT)
|
|
61
|
+
if env_val:
|
|
62
|
+
return env_val
|
|
63
|
+
try:
|
|
64
|
+
# Fail-safe: the helper lives at <plugin_root>/scripts/where_am_i.py
|
|
65
|
+
return str(Path(__file__).resolve().parents[1])
|
|
66
|
+
except (OSError, IndexError) as exc:
|
|
67
|
+
_note(f"plugin_root fallback failed: {exc}")
|
|
68
|
+
return None
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _resolve_source_cwd() -> str | None:
|
|
72
|
+
"""Return the caller's working directory."""
|
|
73
|
+
try:
|
|
74
|
+
return os.getcwd()
|
|
75
|
+
except OSError as exc:
|
|
76
|
+
_note(f"source_cwd unresolved: {exc}")
|
|
77
|
+
return None
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _resolve_project_artifacts() -> tuple[str | None, str | None]:
|
|
81
|
+
"""Resolve (project_artifacts_path, active_project_id).
|
|
82
|
+
|
|
83
|
+
When SessionState.active_project_id is set, returns the project-specific
|
|
84
|
+
artifacts directory; otherwise returns the crew projects domain root.
|
|
85
|
+
"""
|
|
86
|
+
try:
|
|
87
|
+
from _paths import get_local_path
|
|
88
|
+
except Exception as exc:
|
|
89
|
+
_note(f"_paths import failed: {exc}")
|
|
90
|
+
return None, None
|
|
91
|
+
|
|
92
|
+
try:
|
|
93
|
+
from _session import SessionState
|
|
94
|
+
state = SessionState.load()
|
|
95
|
+
active_id = state.active_project_id
|
|
96
|
+
except Exception as exc:
|
|
97
|
+
_note(f"SessionState load failed: {exc}")
|
|
98
|
+
active_id = None
|
|
99
|
+
|
|
100
|
+
try:
|
|
101
|
+
base = get_local_path(_CREW_DOMAIN, _CREW_PROJECTS_SUB)
|
|
102
|
+
except Exception as exc:
|
|
103
|
+
_note(f"get_local_path failed: {exc}")
|
|
104
|
+
return None, active_id
|
|
105
|
+
|
|
106
|
+
if active_id:
|
|
107
|
+
return str(base / active_id), active_id
|
|
108
|
+
return str(base), active_id
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def _resolve_brain() -> dict | None:
|
|
112
|
+
"""Resolve brain config path + port for the current cwd.
|
|
113
|
+
|
|
114
|
+
Prefers the project brain at ~/.wicked-brain/projects/{cwd_basename}/.
|
|
115
|
+
Falls back to the root brain config. Returns None when neither exists.
|
|
116
|
+
"""
|
|
117
|
+
try:
|
|
118
|
+
cwd_name = Path(os.getcwd()).name
|
|
119
|
+
except OSError as exc:
|
|
120
|
+
_note(f"brain cwd basename failed: {exc}")
|
|
121
|
+
cwd_name = ""
|
|
122
|
+
|
|
123
|
+
candidates: list[Path] = []
|
|
124
|
+
if cwd_name:
|
|
125
|
+
candidates.append(_BRAIN_PROJECTS / cwd_name / _BRAIN_META_CONFIG)
|
|
126
|
+
candidates.append(_ROOT_BRAIN_CONFIG)
|
|
127
|
+
|
|
128
|
+
for cfg_path in candidates:
|
|
129
|
+
if not cfg_path.is_file():
|
|
130
|
+
continue
|
|
131
|
+
try:
|
|
132
|
+
with open(cfg_path, encoding="utf-8") as fh:
|
|
133
|
+
cfg = json.load(fh)
|
|
134
|
+
except (OSError, ValueError) as exc:
|
|
135
|
+
_note(f"brain config read failed at {cfg_path}: {exc}")
|
|
136
|
+
continue
|
|
137
|
+
port_val = cfg.get("server_port")
|
|
138
|
+
try:
|
|
139
|
+
port = int(port_val) if port_val is not None else None
|
|
140
|
+
except (TypeError, ValueError):
|
|
141
|
+
port = None
|
|
142
|
+
# cfg_path is .../<project>/_meta/config.json — emit the project dir.
|
|
143
|
+
brain_path = cfg.get("brain_path") or str(cfg_path.parent.parent)
|
|
144
|
+
return {"path": brain_path, "port": port}
|
|
145
|
+
|
|
146
|
+
_note("brain config not found")
|
|
147
|
+
return None
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def _resolve_bus_db() -> str | None:
|
|
151
|
+
"""Return the bus DB path if present, else None."""
|
|
152
|
+
try:
|
|
153
|
+
if _BUS_DB_PATH.is_file():
|
|
154
|
+
return str(_BUS_DB_PATH)
|
|
155
|
+
except OSError as exc:
|
|
156
|
+
_note(f"bus_db stat failed: {exc}")
|
|
157
|
+
return None
|
|
158
|
+
_note("bus_db not present")
|
|
159
|
+
return None
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def build_manifest() -> dict:
|
|
163
|
+
"""Compose the manifest dict. Never raises."""
|
|
164
|
+
plugin_root = _resolve_plugin_root()
|
|
165
|
+
source_cwd = _resolve_source_cwd()
|
|
166
|
+
project_artifacts, active_project_id = _resolve_project_artifacts()
|
|
167
|
+
brain = _resolve_brain()
|
|
168
|
+
bus_db = _resolve_bus_db()
|
|
169
|
+
|
|
170
|
+
return {
|
|
171
|
+
"plugin_root": plugin_root,
|
|
172
|
+
"source_cwd": source_cwd,
|
|
173
|
+
"active_project_id": active_project_id,
|
|
174
|
+
"project_artifacts": project_artifacts,
|
|
175
|
+
"brain": brain,
|
|
176
|
+
"bus_db": bus_db,
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def apply_env_substitutions(manifest: dict) -> dict:
|
|
181
|
+
"""Replace concrete paths with env-var forms when the env is present.
|
|
182
|
+
|
|
183
|
+
Currently maps plugin_root -> $CLAUDE_PLUGIN_ROOT. Other fields stay
|
|
184
|
+
as-is so consumers still get usable absolute paths.
|
|
185
|
+
"""
|
|
186
|
+
out = dict(manifest)
|
|
187
|
+
env_plugin = os.environ.get(_ENV_PLUGIN_ROOT)
|
|
188
|
+
if env_plugin and out.get("plugin_root") == env_plugin:
|
|
189
|
+
out["plugin_root"] = f"${_ENV_PLUGIN_ROOT}"
|
|
190
|
+
return out
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def render(manifest: dict, *, fence: bool) -> str:
|
|
194
|
+
"""Serialize the manifest to JSON, optionally fenced for paste."""
|
|
195
|
+
body = json.dumps(manifest, indent=2, sort_keys=True)
|
|
196
|
+
if fence:
|
|
197
|
+
return f"{_FENCE_OPEN}\n{body}\n{_FENCE_CLOSE}"
|
|
198
|
+
return body
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
def _parse_args(argv: list[str]) -> argparse.Namespace:
|
|
202
|
+
parser = argparse.ArgumentParser(
|
|
203
|
+
prog="where_am_i",
|
|
204
|
+
description="Emit a compact path manifest for the current session.",
|
|
205
|
+
)
|
|
206
|
+
parser.add_argument(
|
|
207
|
+
"--json",
|
|
208
|
+
dest="as_json",
|
|
209
|
+
action="store_true",
|
|
210
|
+
help="Emit JSON manifest (default).",
|
|
211
|
+
)
|
|
212
|
+
parser.add_argument(
|
|
213
|
+
"--fence",
|
|
214
|
+
action="store_true",
|
|
215
|
+
help="Wrap the JSON manifest in a ```json fence.",
|
|
216
|
+
)
|
|
217
|
+
parser.add_argument(
|
|
218
|
+
"--env",
|
|
219
|
+
action="store_true",
|
|
220
|
+
help="Substitute env-var forms (e.g. $CLAUDE_PLUGIN_ROOT).",
|
|
221
|
+
)
|
|
222
|
+
return parser.parse_args(argv)
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
def main(argv: list[str] | None = None) -> int:
|
|
226
|
+
args = _parse_args(argv if argv is not None else sys.argv[1:])
|
|
227
|
+
manifest = build_manifest()
|
|
228
|
+
if args.env:
|
|
229
|
+
manifest = apply_env_substitutions(manifest)
|
|
230
|
+
output = render(manifest, fence=args.fence)
|
|
231
|
+
sys.stdout.write(output + "\n")
|
|
232
|
+
return 0
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
if __name__ == "__main__":
|
|
236
|
+
sys.exit(main())
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentic-patterns
|
|
3
|
+
description: |
|
|
4
|
+
Use when designing or analyzing multi-agent architectures — covers core patterns (sequential, hierarchical,
|
|
5
|
+
parallel, event-driven), anti-patterns, and the five-layer model (Cognition → Context → Interaction →
|
|
6
|
+
Runtime → Governance) for separating concerns in production-grade agentic systems.
|
|
7
|
+
NOT for reviewing existing agentic code (use review-methodology) or framework selection (use the frameworks skill).
|
|
8
|
+
portability: portable
|
|
9
|
+
phase_relevance: ["design", "review"]
|
|
10
|
+
archetype_relevance: ["*"]
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Agentic Patterns
|
|
14
|
+
|
|
15
|
+
Reference guide for proven agentic architecture patterns and common anti-patterns to avoid.
|
|
16
|
+
|
|
17
|
+
## Core Patterns
|
|
18
|
+
|
|
19
|
+
| Pattern | Use when | Example | Tradeoffs |
|
|
20
|
+
|---------|----------|---------|-----------|
|
|
21
|
+
| **Sequential** | Linear workflow, clear dependencies, predictable stages | Research → Analyze → Draft → Review | Simple coordination; bottlenecks if any agent is slow |
|
|
22
|
+
| **Hierarchical** | Complex task decomposable into subtasks; central coordination | PM agent delegates to designer / dev / QA | Clear accountability, scales; single point of failure at parent |
|
|
23
|
+
| **Collaborative** | Diverse perspectives matter; no clear lead | Multiple reviewers collaborating on code review | Rich outputs; needs conflict resolution + consensus |
|
|
24
|
+
| **Autonomous** | Tasks are fully independent; parallel execution | Multiple monitoring agents checking different services | Max parallelism; no shared learning or coordination |
|
|
25
|
+
| **Human-in-the-Loop** | High-stakes decisions, regulatory gates, human feedback | Agent drafts report; human approves before sending | Adds latency; ensures safety and quality |
|
|
26
|
+
| **ReAct** | Dynamic environments; need adaptive behavior on feedback | Debug agent: try fix → observe tests → adapt | Flexible; high token/latency cost for reasoning |
|
|
27
|
+
| **Plan-Execute** | Predictable environment; planning overhead justified | Multi-step pipeline with known transformations | Efficient; brittle if environment changes |
|
|
28
|
+
| **Reflection** | Quality > speed; self-improvement valuable | Writer drafts → critiques → refines | Higher quality; more tokens and latency |
|
|
29
|
+
|
|
30
|
+
See `refs/pattern-catalog.md` for full descriptions and implementation notes per pattern.
|
|
31
|
+
|
|
32
|
+
## Anti-Patterns Quick Reference
|
|
33
|
+
|
|
34
|
+
1. **God Agent:** Single agent doing everything. Split responsibilities.
|
|
35
|
+
2. **Tight Coupling:** Agents depend on internal implementation details. Use interfaces.
|
|
36
|
+
3. **Missing Guardrails:** No constraints on agent actions. Add validation and limits.
|
|
37
|
+
4. **Deep Nesting:** Agents calling agents calling agents. Flatten hierarchy.
|
|
38
|
+
5. **No Observability:** Can't see what agents are doing. Add logging and tracing.
|
|
39
|
+
6. **Sequential Bottleneck:** Everything waits for slowest agent. Add parallelism.
|
|
40
|
+
7. **Context Bloat:** Passing entire history to every agent. Compress and filter.
|
|
41
|
+
8. **Redundant Agents:** Multiple agents doing same thing. Consolidate.
|
|
42
|
+
9. **Hardcoded Prompts:** Prompts baked into code. Externalize and version.
|
|
43
|
+
10. **Missing Timeouts:** Agents can run forever. Add time and resource limits.
|
|
44
|
+
|
|
45
|
+
## Pattern Selection Decision Tree
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Is task decomposable into subtasks?
|
|
49
|
+
├─ YES: Is there a clear lead/coordinator role?
|
|
50
|
+
│ ├─ YES: Use Hierarchical
|
|
51
|
+
│ └─ NO: Use Collaborative
|
|
52
|
+
└─ NO: Does task require adaptation based on results?
|
|
53
|
+
├─ YES: Can you plan all steps upfront?
|
|
54
|
+
│ ├─ YES: Use Plan-Execute
|
|
55
|
+
│ └─ NO: Use ReAct
|
|
56
|
+
└─ NO: Do you have multiple independent tasks?
|
|
57
|
+
├─ YES: Use Autonomous
|
|
58
|
+
└─ NO: Use Sequential
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Add Human-in-the-Loop gates for any high-stakes decisions.
|
|
62
|
+
Add Reflection layer when quality is critical.
|
|
63
|
+
|
|
64
|
+
## Combining Patterns
|
|
65
|
+
|
|
66
|
+
Patterns are composable:
|
|
67
|
+
- **Hierarchical + ReAct:** Parent plans, children adapt execution
|
|
68
|
+
- **Sequential + Reflection:** Each stage includes self-review
|
|
69
|
+
- **Collaborative + Human-in-Loop:** Peer review with human arbitration
|
|
70
|
+
- **Autonomous + Hierarchical:** Independent teams with team leads
|
|
71
|
+
|
|
72
|
+
## Pattern Anti-Affinities
|
|
73
|
+
|
|
74
|
+
Avoid these combinations:
|
|
75
|
+
- **Plan-Execute + ReAct:** Contradictory - either plan upfront or adapt dynamically
|
|
76
|
+
- **Autonomous + Tight Coordination:** Defeats the purpose of autonomy
|
|
77
|
+
- **Deep Hierarchies + Reflection:** Exponential token cost
|
|
78
|
+
|
|
79
|
+
## Quick Start
|
|
80
|
+
|
|
81
|
+
1. Identify if task is decomposable (subtasks?) or atomic
|
|
82
|
+
2. Identify if execution is predictable (plan?) or dynamic (adapt?)
|
|
83
|
+
3. Identify if agents should coordinate (hierarchy/collaboration) or work independently
|
|
84
|
+
4. Check anti-patterns list against current design
|
|
85
|
+
5. See refs/pattern-catalog.md for detailed examples
|
|
86
|
+
|
|
87
|
+
## References
|
|
88
|
+
|
|
89
|
+
- `refs/pattern-catalog.md` - Detailed pattern descriptions with implementation examples
|
|
90
|
+
- `refs/anti-patterns-design.md` - Design anti-patterns (God Agent, Tight Coupling, Missing Guardrails, Deep Nesting, No Observability)
|
|
91
|
+
- `refs/anti-patterns-operational.md` - Operational anti-patterns (Sequential Bottleneck, Context Bloat, Redundant Agents, Hardcoded Prompts, Missing Timeouts)
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase_relevance: ["design", "review"]
|
|
3
|
+
archetype_relevance: ["*"]
|
|
4
|
+
---
|
|
5
|
+
# Anti-Patterns in Agentic Systems: Design
|
|
6
|
+
|
|
7
|
+
Common design mistakes in agentic systems and how to fix them. Covers God Agent, Tight Coupling, Missing Guardrails, Deep Nesting, and No Observability.
|
|
8
|
+
|
|
9
|
+
## 1. God Agent
|
|
10
|
+
|
|
11
|
+
### Description
|
|
12
|
+
Single agent attempting to handle all responsibilities. Agent has too many tools, too much context, and too many decision points. Becomes a monolithic, unmaintainable system.
|
|
13
|
+
|
|
14
|
+
### Symptoms
|
|
15
|
+
- Agent has access to 20+ tools
|
|
16
|
+
- Single system prompt is 5000+ tokens
|
|
17
|
+
- Agent handles unrelated tasks (e.g., both code review and deployment)
|
|
18
|
+
- Difficult to debug when things go wrong
|
|
19
|
+
- High token costs due to large context
|
|
20
|
+
|
|
21
|
+
### Why It Happens
|
|
22
|
+
- Starting simple and accumulating features
|
|
23
|
+
- Lack of clear separation of concerns
|
|
24
|
+
- Fear of coordination complexity
|
|
25
|
+
|
|
26
|
+
### How to Fix
|
|
27
|
+
|
|
28
|
+
**Before:**
|
|
29
|
+
```python
|
|
30
|
+
god_agent = Agent(
|
|
31
|
+
tools=[
|
|
32
|
+
code_analysis, security_scan, performance_test,
|
|
33
|
+
deploy, rollback, monitoring, alerting,
|
|
34
|
+
documentation, ticket_creation, email_notification
|
|
35
|
+
],
|
|
36
|
+
instructions="You are a DevOps agent that does everything..."
|
|
37
|
+
)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**After:**
|
|
41
|
+
```python
|
|
42
|
+
# Specialized agents with clear responsibilities
|
|
43
|
+
code_quality_agent = Agent(
|
|
44
|
+
tools=[code_analysis, security_scan, performance_test],
|
|
45
|
+
instructions="You review code quality, security, and performance."
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
deployment_agent = Agent(
|
|
49
|
+
tools=[deploy, rollback, monitoring],
|
|
50
|
+
instructions="You handle deployments and monitor health."
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
communication_agent = Agent(
|
|
54
|
+
tools=[documentation, ticket_creation, email_notification],
|
|
55
|
+
instructions="You handle documentation and notifications."
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
# Coordinator orchestrates specialists
|
|
59
|
+
coordinator = HierarchicalAgent(
|
|
60
|
+
specialists={
|
|
61
|
+
"review": code_quality_agent,
|
|
62
|
+
"deploy": deployment_agent,
|
|
63
|
+
"communicate": communication_agent
|
|
64
|
+
}
|
|
65
|
+
)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Prevention
|
|
69
|
+
- Each agent should have single, clear responsibility
|
|
70
|
+
- Limit agents to 5-10 tools maximum
|
|
71
|
+
- When adding a feature, ask: "Does this fit agent's core purpose?"
|
|
72
|
+
|
|
73
|
+
## 2. Tight Coupling
|
|
74
|
+
|
|
75
|
+
### Description
|
|
76
|
+
Agents depend on internal implementation details of other agents. Changes to one agent break others. Hard to evolve or replace agents independently.
|
|
77
|
+
|
|
78
|
+
### Symptoms
|
|
79
|
+
- Agent A parses the exact output format of Agent B
|
|
80
|
+
- Agents share global state without interfaces
|
|
81
|
+
- Can't swap out an agent without updating all callers
|
|
82
|
+
- Fragile to prompt engineering changes
|
|
83
|
+
|
|
84
|
+
### Why It Happens
|
|
85
|
+
- Quick prototyping without interfaces
|
|
86
|
+
- Lack of abstraction layer
|
|
87
|
+
- Direct access to other agents' internals
|
|
88
|
+
|
|
89
|
+
### How to Fix
|
|
90
|
+
|
|
91
|
+
**Before:**
|
|
92
|
+
```python
|
|
93
|
+
# Agent B tightly coupled to Agent A's output format
|
|
94
|
+
class AgentB:
|
|
95
|
+
async def process(self, agent_a_output):
|
|
96
|
+
# Fragile: depends on exact string format
|
|
97
|
+
if "APPROVED:" in agent_a_output:
|
|
98
|
+
decision = agent_a_output.split("APPROVED:")[1].strip()
|
|
99
|
+
return self.proceed(decision)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**After:**
|
|
103
|
+
```python
|
|
104
|
+
# Define interface/contract
|
|
105
|
+
class ReviewDecision:
|
|
106
|
+
approved: bool
|
|
107
|
+
reasoning: str
|
|
108
|
+
confidence: float
|
|
109
|
+
|
|
110
|
+
# Agent A returns structured data
|
|
111
|
+
class AgentA:
|
|
112
|
+
async def review(self, code) -> ReviewDecision:
|
|
113
|
+
result = await self.llm.generate(...)
|
|
114
|
+
return ReviewDecision(
|
|
115
|
+
approved=result["approved"],
|
|
116
|
+
reasoning=result["reasoning"],
|
|
117
|
+
confidence=result["confidence"]
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
# Agent B depends on interface, not implementation
|
|
121
|
+
class AgentB:
|
|
122
|
+
async def process(self, decision: ReviewDecision):
|
|
123
|
+
if decision.approved and decision.confidence > 0.8:
|
|
124
|
+
return self.proceed(decision.reasoning)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Prevention
|
|
128
|
+
- Define contracts/interfaces between agents
|
|
129
|
+
- Use structured output formats (JSON, Pydantic models)
|
|
130
|
+
- Version your interfaces
|
|
131
|
+
- Validate inputs and outputs at boundaries
|
|
132
|
+
|
|
133
|
+
## 3. Missing Guardrails
|
|
134
|
+
|
|
135
|
+
### Description
|
|
136
|
+
Agents can take any action without constraints. No validation, limits, or safety checks. High risk of unintended consequences.
|
|
137
|
+
|
|
138
|
+
### Symptoms
|
|
139
|
+
- Agents can delete production data
|
|
140
|
+
- No human approval for high-stakes actions
|
|
141
|
+
- Agents can run indefinitely
|
|
142
|
+
- No rate limiting or resource constraints
|
|
143
|
+
- Sensitive operations have no extra checks
|
|
144
|
+
|
|
145
|
+
### Why It Happens
|
|
146
|
+
- Focus on functionality over safety
|
|
147
|
+
- Assuming LLM will "do the right thing"
|
|
148
|
+
- Lack of production experience with agents
|
|
149
|
+
|
|
150
|
+
### How to Fix
|
|
151
|
+
|
|
152
|
+
**Before:**
|
|
153
|
+
```python
|
|
154
|
+
class DeploymentAgent:
|
|
155
|
+
async def execute(self, command):
|
|
156
|
+
# No guardrails!
|
|
157
|
+
return await self.shell.run(command)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**After:**
|
|
161
|
+
```python
|
|
162
|
+
class DeploymentAgent:
|
|
163
|
+
def __init__(self, max_runtime=300, require_approval=True):
|
|
164
|
+
self.max_runtime = max_runtime
|
|
165
|
+
self.require_approval = require_approval
|
|
166
|
+
self.allowed_commands = ["deploy", "status", "logs"]
|
|
167
|
+
self.forbidden_patterns = ["rm -rf", "DROP TABLE", "delete"]
|
|
168
|
+
|
|
169
|
+
async def execute(self, command):
|
|
170
|
+
# Validate command
|
|
171
|
+
if not self._is_safe_command(command):
|
|
172
|
+
raise SecurityError(f"Unsafe command: {command}")
|
|
173
|
+
|
|
174
|
+
# Require approval for production
|
|
175
|
+
if self.require_approval and self.is_production():
|
|
176
|
+
approval = await self.request_human_approval(command)
|
|
177
|
+
if not approval:
|
|
178
|
+
raise AbortedError("Human rejected command")
|
|
179
|
+
|
|
180
|
+
# Execute with timeout
|
|
181
|
+
try:
|
|
182
|
+
return await asyncio.wait_for(
|
|
183
|
+
self.shell.run(command),
|
|
184
|
+
timeout=self.max_runtime
|
|
185
|
+
)
|
|
186
|
+
except asyncio.TimeoutError:
|
|
187
|
+
raise TimeoutError(f"Command exceeded {self.max_runtime}s")
|
|
188
|
+
|
|
189
|
+
def _is_safe_command(self, command):
|
|
190
|
+
# Whitelist approach
|
|
191
|
+
if not any(cmd in command for cmd in self.allowed_commands):
|
|
192
|
+
return False
|
|
193
|
+
# Blacklist dangerous patterns
|
|
194
|
+
if any(pattern in command for pattern in self.forbidden_patterns):
|
|
195
|
+
return False
|
|
196
|
+
return True
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Prevention
|
|
200
|
+
- Start with least privilege (minimal permissions)
|
|
201
|
+
- Add human-in-the-loop for high-stakes actions
|
|
202
|
+
- Implement timeouts and resource limits
|
|
203
|
+
- Whitelist allowed actions
|
|
204
|
+
- Validate all inputs and outputs
|
|
205
|
+
- Add audit logging
|
|
206
|
+
|
|
207
|
+
## 4. Deep Nesting
|
|
208
|
+
|
|
209
|
+
### Description
|
|
210
|
+
Agents calling agents calling agents, creating deep hierarchies. Hard to debug, trace, and reason about. High latency and token costs.
|
|
211
|
+
|
|
212
|
+
### Symptoms
|
|
213
|
+
- 4+ levels of agent nesting
|
|
214
|
+
- Difficult to trace execution flow
|
|
215
|
+
- High latency due to serial delegation
|
|
216
|
+
- Token costs grow exponentially with depth
|
|
217
|
+
- Hard to determine which agent made which decision
|
|
218
|
+
|
|
219
|
+
### Why It Happens
|
|
220
|
+
- Recursive decomposition without limits
|
|
221
|
+
- Each agent delegates instead of doing work
|
|
222
|
+
- Lack of architectural planning
|
|
223
|
+
|
|
224
|
+
### How to Fix
|
|
225
|
+
|
|
226
|
+
**Before:**
|
|
227
|
+
```
|
|
228
|
+
CEO Agent
|
|
229
|
+
→ VP Agent
|
|
230
|
+
→ Manager Agent
|
|
231
|
+
→ Team Lead Agent
|
|
232
|
+
→ Worker Agent (finally does work!)
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**After:**
|
|
236
|
+
```
|
|
237
|
+
Coordinator Agent
|
|
238
|
+
→ Specialist A (does work)
|
|
239
|
+
→ Specialist B (does work)
|
|
240
|
+
→ Specialist C (does work)
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Prevention
|
|
244
|
+
- Limit hierarchy to 2-3 levels maximum
|
|
245
|
+
- Favor flat, wide hierarchies over deep, narrow ones
|
|
246
|
+
- Ensure agents at each level do meaningful work, not just delegate
|
|
247
|
+
- Use sequential or collaborative patterns when hierarchy isn't needed
|
|
248
|
+
|
|
249
|
+
## 5. No Observability
|
|
250
|
+
|
|
251
|
+
### Description
|
|
252
|
+
Can't see what agents are doing, why they made decisions, or where failures occur. Debugging is impossible. No metrics or monitoring.
|
|
253
|
+
|
|
254
|
+
### Symptoms
|
|
255
|
+
- "It didn't work" is the only error message
|
|
256
|
+
- Can't replay failed executions
|
|
257
|
+
- No visibility into agent reasoning
|
|
258
|
+
- Can't measure performance or costs
|
|
259
|
+
- Silent failures
|
|
260
|
+
|
|
261
|
+
### Why It Happens
|
|
262
|
+
- Focus on happy path
|
|
263
|
+
- Treating agents as black boxes
|
|
264
|
+
- Lack of production monitoring practices
|
|
265
|
+
|
|
266
|
+
### How to Fix
|
|
267
|
+
|
|
268
|
+
Wrap every agent in an `ObservableAgent` decorator that: opens a trace span, logs the task and agent ID before execution, records success/failure + duration + tokens_used after execution, and re-raises exceptions with full context.
|
|
269
|
+
|
|
270
|
+
### What to Observe
|
|
271
|
+
- Agent decisions and reasoning
|
|
272
|
+
- Token usage per agent
|
|
273
|
+
- Latency per agent and per operation
|
|
274
|
+
- Success/failure rates
|
|
275
|
+
- Input/output at each stage
|
|
276
|
+
- Cost attribution
|
|
277
|
+
|
|
278
|
+
### Prevention
|
|
279
|
+
- Structured logging from day one
|
|
280
|
+
- Distributed tracing across agents
|
|
281
|
+
- Metrics and dashboards
|
|
282
|
+
- Ability to replay executions
|
|
283
|
+
- Save agent reasoning/thoughts
|