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,300 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase_relevance: ["design", "review"]
|
|
3
|
+
archetype_relevance: ["*"]
|
|
4
|
+
---
|
|
5
|
+
# Cost Optimization & Reporting
|
|
6
|
+
|
|
7
|
+
Strategies for estimating, optimizing, and reporting on token costs in agentic systems.
|
|
8
|
+
|
|
9
|
+
## Cost Estimation
|
|
10
|
+
|
|
11
|
+
### Estimating Token Count
|
|
12
|
+
|
|
13
|
+
```python
|
|
14
|
+
class TokenEstimator:
|
|
15
|
+
"""Estimate tokens before making API call."""
|
|
16
|
+
|
|
17
|
+
@staticmethod
|
|
18
|
+
def estimate_tokens(text):
|
|
19
|
+
"""Rough estimate: ~4 characters per token for English."""
|
|
20
|
+
return len(text) // 4
|
|
21
|
+
|
|
22
|
+
@staticmethod
|
|
23
|
+
def estimate_cost(model, prompt, estimated_output_tokens=500):
|
|
24
|
+
"""Estimate cost before API call."""
|
|
25
|
+
input_tokens = TokenEstimator.estimate_tokens(prompt)
|
|
26
|
+
output_tokens = estimated_output_tokens
|
|
27
|
+
|
|
28
|
+
calc = CostCalculator()
|
|
29
|
+
return calc.calculate(model, input_tokens, output_tokens)
|
|
30
|
+
|
|
31
|
+
# More accurate estimation using tiktoken (for OpenAI models)
|
|
32
|
+
import tiktoken
|
|
33
|
+
|
|
34
|
+
class AccurateTokenEstimator:
|
|
35
|
+
def __init__(self, model):
|
|
36
|
+
self.encoding = tiktoken.encoding_for_model(model)
|
|
37
|
+
|
|
38
|
+
def count_tokens(self, text):
|
|
39
|
+
return len(self.encoding.encode(text))
|
|
40
|
+
|
|
41
|
+
def estimate_cost(self, model, prompt, estimated_output_tokens=500):
|
|
42
|
+
input_tokens = self.count_tokens(prompt)
|
|
43
|
+
calc = CostCalculator()
|
|
44
|
+
return calc.calculate(model, input_tokens, estimated_output_tokens)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Predictive Cost Modeling
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
class CostPredictor:
|
|
51
|
+
"""Predict costs based on historical data."""
|
|
52
|
+
|
|
53
|
+
def __init__(self):
|
|
54
|
+
self.history = []
|
|
55
|
+
|
|
56
|
+
def record_actual(self, task_type, model, actual_tokens, actual_cost):
|
|
57
|
+
self.history.append({
|
|
58
|
+
'task_type': task_type,
|
|
59
|
+
'model': model,
|
|
60
|
+
'tokens': actual_tokens,
|
|
61
|
+
'cost': actual_cost
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
def predict_cost(self, task_type, model):
|
|
65
|
+
"""Predict cost for task based on historical similar tasks."""
|
|
66
|
+
similar_tasks = [
|
|
67
|
+
h for h in self.history
|
|
68
|
+
if h['task_type'] == task_type and h['model'] == model
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
if not similar_tasks:
|
|
72
|
+
# No history - use conservative estimate
|
|
73
|
+
return {
|
|
74
|
+
'estimated_tokens': 5000,
|
|
75
|
+
'estimated_cost': CostCalculator().calculate(model, 5000, 1000)['total_cost']
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
# Use average of similar tasks
|
|
79
|
+
avg_tokens = np.mean([t['tokens'] for t in similar_tasks])
|
|
80
|
+
avg_cost = np.mean([t['cost'] for t in similar_tasks])
|
|
81
|
+
|
|
82
|
+
# Add 20% buffer for safety
|
|
83
|
+
return {
|
|
84
|
+
'estimated_tokens': int(avg_tokens * 1.2),
|
|
85
|
+
'estimated_cost': avg_cost * 1.2
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Cost Optimization Strategies
|
|
90
|
+
|
|
91
|
+
### Model Selection for Cost
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
class CostOptimizer:
|
|
95
|
+
def select_model_for_task(self, task, quality_threshold=0.8, max_cost=0.10):
|
|
96
|
+
"""Select cheapest model that meets quality threshold."""
|
|
97
|
+
|
|
98
|
+
# Models ordered by cost (cheapest first)
|
|
99
|
+
models_by_cost = [
|
|
100
|
+
'claude-haiku-4',
|
|
101
|
+
'gpt-3.5-turbo',
|
|
102
|
+
'claude-sonnet-4-5',
|
|
103
|
+
'gpt-4-turbo',
|
|
104
|
+
'claude-opus-4-6',
|
|
105
|
+
'gpt-4'
|
|
106
|
+
]
|
|
107
|
+
|
|
108
|
+
for model in models_by_cost:
|
|
109
|
+
# Estimate cost for this model
|
|
110
|
+
est_cost = self.estimate_task_cost(task, model)
|
|
111
|
+
|
|
112
|
+
if est_cost > max_cost:
|
|
113
|
+
continue
|
|
114
|
+
|
|
115
|
+
# Check if quality is sufficient (would need ML model for real impl)
|
|
116
|
+
expected_quality = self.predict_quality(task, model)
|
|
117
|
+
|
|
118
|
+
if expected_quality >= quality_threshold:
|
|
119
|
+
return {
|
|
120
|
+
'model': model,
|
|
121
|
+
'estimated_cost': est_cost,
|
|
122
|
+
'expected_quality': expected_quality
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
raise NoSuitableModelError("No model meets quality/cost requirements")
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Batch Processing for Cost Savings
|
|
129
|
+
|
|
130
|
+
```python
|
|
131
|
+
class BatchCostOptimizer:
|
|
132
|
+
"""Process multiple items in batches to save on API overhead."""
|
|
133
|
+
|
|
134
|
+
async def process_items(self, items, model):
|
|
135
|
+
# Processing individually
|
|
136
|
+
individual_cost = 0
|
|
137
|
+
for item in items:
|
|
138
|
+
cost = await self.process_one(item, model)
|
|
139
|
+
individual_cost += cost
|
|
140
|
+
|
|
141
|
+
# Processing as batch
|
|
142
|
+
batch_cost = await self.process_batch(items, model)
|
|
143
|
+
|
|
144
|
+
savings = individual_cost - batch_cost
|
|
145
|
+
savings_pct = (savings / individual_cost) * 100
|
|
146
|
+
|
|
147
|
+
print(f"Batch processing saved ${savings:.4f} ({savings_pct:.1f}%)")
|
|
148
|
+
|
|
149
|
+
return batch_cost
|
|
150
|
+
|
|
151
|
+
async def process_batch(self, items, model):
|
|
152
|
+
"""Process all items in one API call."""
|
|
153
|
+
batch_prompt = "Process each item:\n\n"
|
|
154
|
+
for i, item in enumerate(items):
|
|
155
|
+
batch_prompt += f"Item {i+1}: {item}\n"
|
|
156
|
+
|
|
157
|
+
input_tokens = self.count_tokens(batch_prompt)
|
|
158
|
+
# Single output with all results
|
|
159
|
+
output_tokens = len(items) * 100 # Estimate
|
|
160
|
+
|
|
161
|
+
calc = CostCalculator()
|
|
162
|
+
return calc.calculate(model, input_tokens, output_tokens)['total_cost']
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Caching for Cost Reduction
|
|
166
|
+
|
|
167
|
+
```python
|
|
168
|
+
class CostAwareCache:
|
|
169
|
+
"""Cache expensive LLM calls."""
|
|
170
|
+
|
|
171
|
+
def __init__(self):
|
|
172
|
+
self.cache = {}
|
|
173
|
+
self.hits = 0
|
|
174
|
+
self.misses = 0
|
|
175
|
+
self.savings = 0.0
|
|
176
|
+
|
|
177
|
+
async def get_or_generate(self, prompt, model, cost_calculator):
|
|
178
|
+
cache_key = hashlib.md5(f"{prompt}{model}".encode()).hexdigest()
|
|
179
|
+
|
|
180
|
+
if cache_key in self.cache:
|
|
181
|
+
# Cache hit
|
|
182
|
+
self.hits += 1
|
|
183
|
+
|
|
184
|
+
# Calculate cost saved
|
|
185
|
+
estimated_cost = cost_calculator.estimate(prompt, model)
|
|
186
|
+
self.savings += estimated_cost
|
|
187
|
+
|
|
188
|
+
return self.cache[cache_key]['response']
|
|
189
|
+
|
|
190
|
+
# Cache miss
|
|
191
|
+
self.misses += 1
|
|
192
|
+
response, actual_cost = await self.generate_with_cost(prompt, model)
|
|
193
|
+
|
|
194
|
+
# Store in cache
|
|
195
|
+
self.cache[cache_key] = {
|
|
196
|
+
'response': response,
|
|
197
|
+
'cost': actual_cost,
|
|
198
|
+
'timestamp': datetime.now()
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
return response
|
|
202
|
+
|
|
203
|
+
def get_cache_stats(self):
|
|
204
|
+
total = self.hits + self.misses
|
|
205
|
+
hit_rate = (self.hits / total * 100) if total > 0 else 0
|
|
206
|
+
|
|
207
|
+
return {
|
|
208
|
+
'hits': self.hits,
|
|
209
|
+
'misses': self.misses,
|
|
210
|
+
'hit_rate': hit_rate,
|
|
211
|
+
'savings': self.savings
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Cost Reporting
|
|
216
|
+
|
|
217
|
+
### Comprehensive Cost Report
|
|
218
|
+
|
|
219
|
+
```python
|
|
220
|
+
class CostReporter:
|
|
221
|
+
def __init__(self, tracker):
|
|
222
|
+
self.tracker = tracker
|
|
223
|
+
|
|
224
|
+
def generate_report(self, period='daily'):
|
|
225
|
+
stats = self.tracker.get_stats()
|
|
226
|
+
|
|
227
|
+
report = f"""
|
|
228
|
+
Cost Report - {period}
|
|
229
|
+
{'='*50}
|
|
230
|
+
|
|
231
|
+
Summary:
|
|
232
|
+
- Total Cost: ${stats['total_cost']:.4f}
|
|
233
|
+
- Total Calls: {stats['total_calls']}
|
|
234
|
+
- Total Tokens: {stats['total_tokens']:,}
|
|
235
|
+
- Avg Cost/Call: ${stats['avg_cost_per_call']:.4f}
|
|
236
|
+
- Avg Tokens/Call: {stats['avg_tokens_per_call']:.0f}
|
|
237
|
+
|
|
238
|
+
By Agent:
|
|
239
|
+
"""
|
|
240
|
+
for agent_id, cost in stats['by_agent'].items():
|
|
241
|
+
pct = (cost / stats['total_cost']) * 100
|
|
242
|
+
report += f" {agent_id}: ${cost:.4f} ({pct:.1f}%)\n"
|
|
243
|
+
|
|
244
|
+
report += "\nBy Model:\n"
|
|
245
|
+
for model, cost in stats['by_model'].items():
|
|
246
|
+
pct = (cost / stats['total_cost']) * 100
|
|
247
|
+
report += f" {model}: ${cost:.4f} ({pct:.1f}%)\n"
|
|
248
|
+
|
|
249
|
+
return report
|
|
250
|
+
|
|
251
|
+
def identify_optimization_opportunities(self):
|
|
252
|
+
"""Find cost optimization opportunities."""
|
|
253
|
+
stats = self.tracker.get_stats()
|
|
254
|
+
opportunities = []
|
|
255
|
+
|
|
256
|
+
# Check for expensive agents
|
|
257
|
+
for agent_id, cost in stats['by_agent'].items():
|
|
258
|
+
if cost > stats['total_cost'] * 0.3: # Agent using >30% of budget
|
|
259
|
+
opportunities.append({
|
|
260
|
+
'type': 'expensive_agent',
|
|
261
|
+
'agent': agent_id,
|
|
262
|
+
'cost': cost,
|
|
263
|
+
'recommendation': f"Optimize {agent_id} - using {(cost/stats['total_cost']*100):.1f}% of budget"
|
|
264
|
+
})
|
|
265
|
+
|
|
266
|
+
# Check for expensive models
|
|
267
|
+
for model, cost in stats['by_model'].items():
|
|
268
|
+
if model in ['claude-opus-4-6', 'gpt-4']:
|
|
269
|
+
# Check if cheaper model could work
|
|
270
|
+
opportunities.append({
|
|
271
|
+
'type': 'expensive_model',
|
|
272
|
+
'model': model,
|
|
273
|
+
'cost': cost,
|
|
274
|
+
'recommendation': f"Consider using cheaper model instead of {model}"
|
|
275
|
+
})
|
|
276
|
+
|
|
277
|
+
return opportunities
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
## Real-World Cost Examples
|
|
281
|
+
|
|
282
|
+
**Code Review System** (100 files/day, ~10K tokens/file):
|
|
283
|
+
- Claude Opus: ~$18.75/day → ~$562/month
|
|
284
|
+
- Claude Sonnet: ~$3.75/day → ~$112/month — **~$450/month savings**
|
|
285
|
+
|
|
286
|
+
**Customer Support Bot** (1000 conversations/day × 10 messages × 100 tokens):
|
|
287
|
+
- Claude Haiku: ~$1.60/day → ~$48/month → ~$584/year
|
|
288
|
+
|
|
289
|
+
## Best Practices
|
|
290
|
+
|
|
291
|
+
1. **Track Everything**: Record all LLM calls with model, tokens, cost
|
|
292
|
+
2. **Set Budgets**: Per session, daily, monthly limits
|
|
293
|
+
3. **Estimate First**: Predict cost before expensive calls
|
|
294
|
+
4. **Cache Aggressively**: Avoid redundant API calls
|
|
295
|
+
5. **Batch When Possible**: Combine multiple items per call
|
|
296
|
+
6. **Right-Size Models**: Use cheapest model that meets quality bar
|
|
297
|
+
7. **Monitor Trends**: Watch for cost increases over time
|
|
298
|
+
8. **Optimize Hot Paths**: Focus on highest-cost agents/operations
|
|
299
|
+
9. **User Limits**: Prevent abuse with per-user budgets
|
|
300
|
+
10. **Alert on Spikes**: Get notified of unusual cost patterns
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase_relevance: ["design", "review"]
|
|
3
|
+
archetype_relevance: ["*"]
|
|
4
|
+
---
|
|
5
|
+
# Selective Loading & Token-Aware Prompting
|
|
6
|
+
|
|
7
|
+
Strategies for loading only relevant context and adapting prompts to available token budgets.
|
|
8
|
+
|
|
9
|
+
## Selective Loading Strategies
|
|
10
|
+
|
|
11
|
+
### 5. Relevance-Based Filtering
|
|
12
|
+
|
|
13
|
+
Load only context relevant to current task.
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
class RelevanceFilter:
|
|
17
|
+
def __init__(self, vector_db):
|
|
18
|
+
self.vector_db = vector_db
|
|
19
|
+
|
|
20
|
+
async def filter_context(self, all_context, current_task, top_k=5):
|
|
21
|
+
# Embed current task
|
|
22
|
+
task_embedding = await self.embed(current_task)
|
|
23
|
+
|
|
24
|
+
# Score all context items by relevance
|
|
25
|
+
scored_items = []
|
|
26
|
+
for item in all_context:
|
|
27
|
+
item_embedding = await self.embed(item)
|
|
28
|
+
similarity = cosine_similarity([task_embedding], [item_embedding])[0][0]
|
|
29
|
+
scored_items.append((item, similarity))
|
|
30
|
+
|
|
31
|
+
# Sort by relevance and take top K
|
|
32
|
+
scored_items.sort(key=lambda x: x[1], reverse=True)
|
|
33
|
+
relevant_items = [item for item, score in scored_items[:top_k]]
|
|
34
|
+
|
|
35
|
+
return relevant_items
|
|
36
|
+
|
|
37
|
+
# Usage
|
|
38
|
+
filter = RelevanceFilter(vector_db)
|
|
39
|
+
relevant = await filter.filter_context(
|
|
40
|
+
all_context=user.full_history,
|
|
41
|
+
current_task="Write a Python function",
|
|
42
|
+
top_k=3
|
|
43
|
+
)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 6. Time-Based Decay
|
|
47
|
+
|
|
48
|
+
Weight recent context more heavily.
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
from datetime import datetime, timedelta
|
|
52
|
+
|
|
53
|
+
class TimeDecayFilter:
|
|
54
|
+
def score_by_recency(self, items, decay_factor=0.5):
|
|
55
|
+
"""Score items with exponential time decay."""
|
|
56
|
+
now = datetime.now()
|
|
57
|
+
scored_items = []
|
|
58
|
+
|
|
59
|
+
for item in items:
|
|
60
|
+
age = (now - item.timestamp).total_seconds() / 3600 # hours
|
|
61
|
+
decay = decay_factor ** (age / 24) # Half-life of 24 hours
|
|
62
|
+
scored_items.append((item, decay))
|
|
63
|
+
|
|
64
|
+
return sorted(scored_items, key=lambda x: x[1], reverse=True)
|
|
65
|
+
|
|
66
|
+
# Combine with relevance
|
|
67
|
+
class HybridFilter:
|
|
68
|
+
def score(self, item, task_embedding):
|
|
69
|
+
# Relevance score
|
|
70
|
+
relevance = cosine_similarity(
|
|
71
|
+
[task_embedding],
|
|
72
|
+
[item.embedding]
|
|
73
|
+
)[0][0]
|
|
74
|
+
|
|
75
|
+
# Recency score
|
|
76
|
+
age_hours = (datetime.now() - item.timestamp).total_seconds() / 3600
|
|
77
|
+
recency = 0.5 ** (age_hours / 24)
|
|
78
|
+
|
|
79
|
+
# Weighted combination
|
|
80
|
+
return 0.7 * relevance + 0.3 * recency
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 7. Query-Specific Pruning
|
|
84
|
+
|
|
85
|
+
Remove context not needed for specific query type.
|
|
86
|
+
|
|
87
|
+
```python
|
|
88
|
+
class QuerySpecificPruner:
|
|
89
|
+
def prune(self, context, query_type):
|
|
90
|
+
if query_type == 'factual':
|
|
91
|
+
# Keep facts, remove opinions/summaries
|
|
92
|
+
return [c for c in context if c.type == 'fact']
|
|
93
|
+
|
|
94
|
+
elif query_type == 'code_generation':
|
|
95
|
+
# Keep code examples, remove general discussion
|
|
96
|
+
return [c for c in context if c.type in ['code', 'api_doc']]
|
|
97
|
+
|
|
98
|
+
elif query_type == 'decision':
|
|
99
|
+
# Keep past decisions and outcomes
|
|
100
|
+
return [c for c in context if c.type in ['decision', 'outcome']]
|
|
101
|
+
|
|
102
|
+
else:
|
|
103
|
+
# Default: keep all
|
|
104
|
+
return context
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Token-Aware Prompting
|
|
108
|
+
|
|
109
|
+
### 8. Dynamic Prompt Sizing
|
|
110
|
+
|
|
111
|
+
Adjust prompt detail based on available tokens.
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
class DynamicPrompt:
|
|
115
|
+
def __init__(self, max_tokens):
|
|
116
|
+
self.max_tokens = max_tokens
|
|
117
|
+
|
|
118
|
+
def build_prompt(self, task, available_tokens):
|
|
119
|
+
# Base prompt (always include)
|
|
120
|
+
base = f"Task: {task}\n\n"
|
|
121
|
+
base_tokens = self.count_tokens(base)
|
|
122
|
+
|
|
123
|
+
remaining = available_tokens - base_tokens - 1000 # Reserve for output
|
|
124
|
+
|
|
125
|
+
if remaining > 5000:
|
|
126
|
+
# Verbose mode
|
|
127
|
+
return base + self.get_detailed_instructions()
|
|
128
|
+
|
|
129
|
+
elif remaining > 2000:
|
|
130
|
+
# Standard mode
|
|
131
|
+
return base + self.get_standard_instructions()
|
|
132
|
+
|
|
133
|
+
else:
|
|
134
|
+
# Minimal mode
|
|
135
|
+
return base + self.get_minimal_instructions()
|
|
136
|
+
|
|
137
|
+
def get_detailed_instructions(self):
|
|
138
|
+
return """Detailed instructions with examples:
|
|
139
|
+
1. First step with example...
|
|
140
|
+
2. Second step with example...
|
|
141
|
+
...
|
|
142
|
+
"""
|
|
143
|
+
|
|
144
|
+
def get_standard_instructions(self):
|
|
145
|
+
return """Standard instructions:
|
|
146
|
+
1. First step
|
|
147
|
+
2. Second step
|
|
148
|
+
...
|
|
149
|
+
"""
|
|
150
|
+
|
|
151
|
+
def get_minimal_instructions(self):
|
|
152
|
+
return "Follow standard procedure."
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### 9. Token-Budgeted Retrieval
|
|
156
|
+
|
|
157
|
+
Retrieve as much as token budget allows.
|
|
158
|
+
|
|
159
|
+
```python
|
|
160
|
+
class BudgetedRetriever:
|
|
161
|
+
async def retrieve(self, query, token_budget):
|
|
162
|
+
# Get candidates
|
|
163
|
+
candidates = await self.vector_db.search(query, limit=100)
|
|
164
|
+
|
|
165
|
+
# Add candidates until budget exhausted
|
|
166
|
+
selected = []
|
|
167
|
+
tokens_used = 0
|
|
168
|
+
|
|
169
|
+
for candidate in candidates:
|
|
170
|
+
candidate_tokens = self.count_tokens(candidate.content)
|
|
171
|
+
|
|
172
|
+
if tokens_used + candidate_tokens <= token_budget:
|
|
173
|
+
selected.append(candidate)
|
|
174
|
+
tokens_used += candidate_tokens
|
|
175
|
+
else:
|
|
176
|
+
break
|
|
177
|
+
|
|
178
|
+
return selected, tokens_used
|
|
179
|
+
```
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frameworks
|
|
3
|
+
description: |
|
|
4
|
+
Use when selecting or comparing agentic frameworks (LangChain, LangGraph, CrewAI, AutoGen, etc.) —
|
|
5
|
+
curated comparison by use case, language, and maturity. Gets latest context via Context7 when available.
|
|
6
|
+
NOT for reviewing existing agentic code (use review-methodology) or architecture patterns (use agentic-patterns).
|
|
7
|
+
portability: portable
|
|
8
|
+
phase_relevance: ["design", "review"]
|
|
9
|
+
archetype_relevance: ["*"]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Agentic Frameworks
|
|
13
|
+
|
|
14
|
+
Comprehensive guide to agentic frameworks, their strengths, and how to choose the right one.
|
|
15
|
+
|
|
16
|
+
## Quick Comparison Table
|
|
17
|
+
|
|
18
|
+
| Framework | Language | Best For | Maturity | Learning Curve |
|
|
19
|
+
|-----------|----------|----------|----------|----------------|
|
|
20
|
+
| Anthropic ADK | TypeScript | Claude-specific, production | High | Low |
|
|
21
|
+
| LangGraph | Python | Complex workflows, state | High | Medium |
|
|
22
|
+
| CrewAI | Python | Role-based teams | Medium | Low |
|
|
23
|
+
| AutoGen | Python | Multi-agent conversations | Medium | Medium |
|
|
24
|
+
| Pydantic AI | Python | Type-safe agents | Medium | Low |
|
|
25
|
+
| OpenAI Agents SDK | Python | OpenAI-specific | Low | Low |
|
|
26
|
+
| LlamaIndex Agents | Python | RAG-heavy applications | High | Medium |
|
|
27
|
+
| Haystack | Python | Production pipelines | High | Medium |
|
|
28
|
+
| Semantic Kernel | C#/Python | Microsoft ecosystem | Medium | Medium |
|
|
29
|
+
| LangChain | Python | Rapid prototyping | High | Medium-High |
|
|
30
|
+
| Agency Swarm | Python | OpenAI Assistants API | Low | Low |
|
|
31
|
+
| Dify | Low-code | No-code workflows | Medium | Very Low |
|
|
32
|
+
|
|
33
|
+
## Selection Criteria
|
|
34
|
+
|
|
35
|
+
### 1. Orchestration Capabilities
|
|
36
|
+
|
|
37
|
+
**Simple Sequential:**
|
|
38
|
+
- LangChain (chains)
|
|
39
|
+
- Haystack (pipelines)
|
|
40
|
+
- Pydantic AI
|
|
41
|
+
|
|
42
|
+
**Complex Workflows:**
|
|
43
|
+
- LangGraph (state machines)
|
|
44
|
+
- ADK (delegated workflows)
|
|
45
|
+
- AutoGen (conversation patterns)
|
|
46
|
+
|
|
47
|
+
**Team-Based:**
|
|
48
|
+
- CrewAI (role-based)
|
|
49
|
+
- Agency Swarm (org structure)
|
|
50
|
+
|
|
51
|
+
### 2. State Management
|
|
52
|
+
|
|
53
|
+
**No Built-in State:** LangChain, Pydantic AI
|
|
54
|
+
|
|
55
|
+
**Checkpointed State:** LangGraph (built-in), ADK (context preservation)
|
|
56
|
+
|
|
57
|
+
**Distributed State:** Custom implementation needed for all
|
|
58
|
+
|
|
59
|
+
### 3. Tool Integration
|
|
60
|
+
|
|
61
|
+
**Extensive Tool Libraries:** LangChain (largest ecosystem), LlamaIndex (RAG-focused), Haystack (production tools)
|
|
62
|
+
|
|
63
|
+
**Easy Tool Definition:** Pydantic AI (type-safe), ADK (TypeScript decorators), OpenAI Agents SDK (function calling)
|
|
64
|
+
|
|
65
|
+
**Custom Tools:** All frameworks support custom tools
|
|
66
|
+
|
|
67
|
+
### 4. Error Handling
|
|
68
|
+
|
|
69
|
+
**Built-in Retry/Fallback:** ADK (comprehensive), LangGraph (error handling nodes), Haystack (pipeline error handling)
|
|
70
|
+
|
|
71
|
+
**Manual Error Handling:** CrewAI, AutoGen, Pydantic AI
|
|
72
|
+
|
|
73
|
+
### 5. Observability
|
|
74
|
+
|
|
75
|
+
**Native Tracing:** LangSmith (for LangChain/LangGraph), Braintrust (for ADK)
|
|
76
|
+
|
|
77
|
+
**Third-Party Integration:** All support OpenTelemetry, most support LangFuse, Arize
|
|
78
|
+
|
|
79
|
+
## Framework Profiles
|
|
80
|
+
|
|
81
|
+
See `refs/framework-profiles-1.md` (ADK, LangGraph, CrewAI) and `refs/framework-profiles-2.md` (AutoGen, Pydantic AI, LlamaIndex) for detailed profiles.
|
|
82
|
+
|
|
83
|
+
### Anthropic Agent Developer Kit (ADK)
|
|
84
|
+
**Best for:** Production Claude applications
|
|
85
|
+
**Strengths:** TypeScript with type safety, built-in context management, comprehensive error handling, delegated workflows
|
|
86
|
+
**Weaknesses:** Claude-only, TypeScript/Node only, smaller community
|
|
87
|
+
**When to choose:** Building on Claude exclusively, TypeScript/Node stack, need production-ready patterns
|
|
88
|
+
|
|
89
|
+
### LangGraph
|
|
90
|
+
**Best for:** Complex stateful workflows
|
|
91
|
+
**Strengths:** State machine abstraction, built-in checkpointing, human-in-the-loop support, time-travel debugging
|
|
92
|
+
**Weaknesses:** Steeper learning curve, can be overkill, more boilerplate
|
|
93
|
+
**When to choose:** Complex workflows with branches/loops, need state persistence, want human approval gates
|
|
94
|
+
|
|
95
|
+
### CrewAI
|
|
96
|
+
**Best for:** Role-based agent teams
|
|
97
|
+
**Strengths:** Intuitive role/task abstraction, simple API, good for hierarchical teams
|
|
98
|
+
**Weaknesses:** Less mature, limited state management, fewer production features
|
|
99
|
+
**When to choose:** Team-based workflows, quick prototyping, straightforward delegation
|
|
100
|
+
|
|
101
|
+
### AutoGen
|
|
102
|
+
**Best for:** Multi-agent conversations
|
|
103
|
+
**Strengths:** Flexible conversation patterns, group chat capabilities, human-in-the-loop
|
|
104
|
+
**Weaknesses:** Can be verbose, conversation management complexity
|
|
105
|
+
**When to choose:** Agents need to debate/collaborate, conversational workflows
|
|
106
|
+
|
|
107
|
+
### Pydantic AI
|
|
108
|
+
**Best for:** Type-safe Python agents
|
|
109
|
+
**Strengths:** Type safety via Pydantic, simple clean API, dependency injection, multi-provider
|
|
110
|
+
**Weaknesses:** New/less mature, smaller ecosystem, limited orchestration patterns
|
|
111
|
+
**When to choose:** Want type safety, simple agent use cases, already using Pydantic
|
|
112
|
+
|
|
113
|
+
### LlamaIndex Agents
|
|
114
|
+
**Best for:** RAG-heavy applications
|
|
115
|
+
**Strengths:** Excellent retrieval capabilities, query planning, tool use with data
|
|
116
|
+
**Weaknesses:** Best for RAG use cases, heavier framework
|
|
117
|
+
**When to choose:** Heavy RAG requirements, complex data retrieval, query planning needs
|
|
118
|
+
|
|
119
|
+
## Decision Tree
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
Start: What's your primary use case?
|
|
123
|
+
|
|
124
|
+
├─ Complex stateful workflow with branches/loops
|
|
125
|
+
│ └─ Use: LangGraph
|
|
126
|
+
|
|
127
|
+
├─ Role-based team of agents
|
|
128
|
+
│ └─ Use: CrewAI or ADK
|
|
129
|
+
|
|
130
|
+
├─ RAG-heavy application
|
|
131
|
+
│ └─ Use: LlamaIndex Agents
|
|
132
|
+
|
|
133
|
+
├─ Multi-agent conversations/debates
|
|
134
|
+
│ └─ Use: AutoGen
|
|
135
|
+
|
|
136
|
+
├─ Simple sequential workflow
|
|
137
|
+
│ ├─ TypeScript?
|
|
138
|
+
│ │ └─ Use: ADK
|
|
139
|
+
│ └─ Python?
|
|
140
|
+
│ └─ Use: Pydantic AI or LangChain
|
|
141
|
+
|
|
142
|
+
├─ Production pipeline
|
|
143
|
+
│ └─ Use: Haystack or ADK
|
|
144
|
+
|
|
145
|
+
└─ Maximum flexibility
|
|
146
|
+
└─ Build from scratch or use LangGraph
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Language Considerations
|
|
150
|
+
|
|
151
|
+
**Python Frameworks:** LangChain, LangGraph, CrewAI, AutoGen, Pydantic AI, LlamaIndex
|
|
152
|
+
- Largest ecosystem, most tutorials/examples, best for data science/ML integration
|
|
153
|
+
|
|
154
|
+
**TypeScript Frameworks:** Anthropic ADK
|
|
155
|
+
- Better type safety, Node.js ecosystem, good for web applications
|
|
156
|
+
|
|
157
|
+
**C# Frameworks:** Semantic Kernel
|
|
158
|
+
- Microsoft ecosystem, .NET integration
|
|
159
|
+
|
|
160
|
+
## Multi-Provider vs Single-Provider
|
|
161
|
+
|
|
162
|
+
**Multi-Provider (LLM-agnostic):** LangChain, LangGraph, CrewAI, AutoGen, Pydantic AI
|
|
163
|
+
- Can switch between OpenAI, Anthropic, etc.
|
|
164
|
+
- More flexibility but may not leverage provider-specific features
|
|
165
|
+
|
|
166
|
+
**Single-Provider (Optimized):** ADK (Claude), OpenAI Agents SDK (OpenAI)
|
|
167
|
+
- Better integration with specific provider
|
|
168
|
+
- Access to provider-specific features but less flexibility
|
|
169
|
+
|
|
170
|
+
## Production Readiness
|
|
171
|
+
|
|
172
|
+
**Most Production-Ready:** Anthropic ADK, LangGraph, Haystack, LlamaIndex
|
|
173
|
+
|
|
174
|
+
**Good for Production:** CrewAI, LangChain, AutoGen
|
|
175
|
+
|
|
176
|
+
**Early/Experimental:** Pydantic AI, OpenAI Agents SDK, Agency Swarm
|
|
177
|
+
|
|
178
|
+
## When NOT to Use a Framework
|
|
179
|
+
|
|
180
|
+
Build from scratch if: very simple use case, specific requirements unmet, want maximum control, or learning exercise. Framework overhead not worth it for single LLM calls, static prompts, or no agent behavior.
|
|
181
|
+
|
|
182
|
+
## Quick Recommendations
|
|
183
|
+
|
|
184
|
+
**Just getting started:** CrewAI or Pydantic AI | **State management:** LangGraph | **TypeScript:** ADK | **RAG:** LlamaIndex | **Team-based:** CrewAI or ADK | **Max flexibility:** LangGraph | **Production Claude:** ADK
|
|
185
|
+
|
|
186
|
+
## References
|
|
187
|
+
|
|
188
|
+
- `refs/framework-profiles-1.md` - ADK, LangGraph, CrewAI detailed profiles
|
|
189
|
+
- `refs/framework-profiles-2.md` - AutoGen, Pydantic AI, LlamaIndex profiles + comparison matrix
|
|
190
|
+
- `refs/migration-patterns-paths.md` - Common migration paths between frameworks
|
|
191
|
+
- `refs/migration-patterns-testing.md` - Migration testing, rollback, and effort estimates
|