@baselane/packs 0.1.5 → 0.1.7
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/package.json +2 -2
- package/packs/full-harness/pack.json +3093 -0
- package/packs/full-harness/rendered/.claude/agents/a11y-architect.md +138 -0
- package/packs/full-harness/rendered/.claude/agents/agent-evaluator.md +206 -0
- package/packs/full-harness/rendered/.claude/agents/architect.md +209 -0
- package/packs/full-harness/rendered/.claude/agents/build-error-resolver.md +114 -0
- package/packs/full-harness/rendered/.claude/agents/chief-of-staff.md +149 -0
- package/packs/full-harness/rendered/.claude/agents/code-architect.md +71 -0
- package/packs/full-harness/rendered/.claude/agents/code-explorer.md +69 -0
- package/packs/full-harness/rendered/.claude/agents/code-reviewer.md +312 -0
- package/packs/full-harness/rendered/.claude/agents/code-simplifier.md +47 -0
- package/packs/full-harness/rendered/.claude/agents/comment-analyzer.md +45 -0
- package/packs/full-harness/rendered/.claude/agents/conversation-analyzer.md +52 -0
- package/packs/full-harness/rendered/.claude/agents/cpp-build-resolver.md +90 -0
- package/packs/full-harness/rendered/.claude/agents/cpp-reviewer.md +64 -0
- package/packs/full-harness/rendered/.claude/agents/csharp-reviewer.md +93 -0
- package/packs/full-harness/rendered/.claude/agents/dart-build-resolver.md +201 -0
- package/packs/full-harness/rendered/.claude/agents/database-reviewer.md +91 -0
- package/packs/full-harness/rendered/.claude/agents/django-build-resolver.md +243 -0
- package/packs/full-harness/rendered/.claude/agents/django-reviewer.md +149 -0
- package/packs/full-harness/rendered/.claude/agents/doc-updater.md +107 -0
- package/packs/full-harness/rendered/.claude/agents/docs-lookup.md +64 -0
- package/packs/full-harness/rendered/.claude/agents/e2e-runner.md +107 -0
- package/packs/full-harness/rendered/.claude/agents/fastapi-reviewer.md +68 -0
- package/packs/full-harness/rendered/.claude/agents/flutter-reviewer.md +241 -0
- package/packs/full-harness/rendered/.claude/agents/fsharp-reviewer.md +92 -0
- package/packs/full-harness/rendered/.claude/agents/gan-evaluator.md +206 -0
- package/packs/full-harness/rendered/.claude/agents/gan-generator.md +128 -0
- package/packs/full-harness/rendered/.claude/agents/gan-planner.md +96 -0
- package/packs/full-harness/rendered/.claude/agents/go-build-resolver.md +94 -0
- package/packs/full-harness/rendered/.claude/agents/go-reviewer.md +68 -0
- package/packs/full-harness/rendered/.claude/agents/harmonyos-app-resolver.md +173 -0
- package/packs/full-harness/rendered/.claude/agents/harness-optimizer.md +32 -0
- package/packs/full-harness/rendered/.claude/agents/healthcare-reviewer.md +83 -0
- package/packs/full-harness/rendered/.claude/agents/homelab-architect.md +94 -0
- package/packs/full-harness/rendered/.claude/agents/java-build-resolver.md +266 -0
- package/packs/full-harness/rendered/.claude/agents/java-reviewer.md +179 -0
- package/packs/full-harness/rendered/.claude/agents/kotlin-build-resolver.md +118 -0
- package/packs/full-harness/rendered/.claude/agents/kotlin-reviewer.md +157 -0
- package/packs/full-harness/rendered/.claude/agents/loop-operator.md +33 -0
- package/packs/full-harness/rendered/.claude/agents/marketing-agent.md +141 -0
- package/packs/full-harness/rendered/.claude/agents/mle-reviewer.md +153 -0
- package/packs/full-harness/rendered/.claude/agents/network-architect.md +92 -0
- package/packs/full-harness/rendered/.claude/agents/network-config-reviewer.md +94 -0
- package/packs/full-harness/rendered/.claude/agents/network-troubleshooter.md +116 -0
- package/packs/full-harness/rendered/.claude/agents/opensource-forker.md +198 -0
- package/packs/full-harness/rendered/.claude/agents/opensource-packager.md +249 -0
- package/packs/full-harness/rendered/.claude/agents/opensource-sanitizer.md +188 -0
- package/packs/full-harness/rendered/.claude/agents/performance-optimizer.md +446 -0
- package/packs/full-harness/rendered/.claude/agents/php-reviewer.md +92 -0
- package/packs/full-harness/rendered/.claude/agents/planner.md +210 -0
- package/packs/full-harness/rendered/.claude/agents/pr-test-analyzer.md +45 -0
- package/packs/full-harness/rendered/.claude/agents/python-reviewer.md +90 -0
- package/packs/full-harness/rendered/.claude/agents/pytorch-build-resolver.md +120 -0
- package/packs/full-harness/rendered/.claude/agents/react-build-resolver.md +206 -0
- package/packs/full-harness/rendered/.claude/agents/react-reviewer.md +156 -0
- package/packs/full-harness/rendered/.claude/agents/refactor-cleaner.md +85 -0
- package/packs/full-harness/rendered/.claude/agents/rust-build-resolver.md +148 -0
- package/packs/full-harness/rendered/.claude/agents/rust-reviewer.md +85 -0
- package/packs/full-harness/rendered/.claude/agents/security-reviewer.md +108 -0
- package/packs/full-harness/rendered/.claude/agents/seo-specialist.md +54 -0
- package/packs/full-harness/rendered/.claude/agents/silent-failure-hunter.md +50 -0
- package/packs/full-harness/rendered/.claude/agents/spec-miner.md +207 -0
- package/packs/full-harness/rendered/.claude/agents/swift-build-resolver.md +161 -0
- package/packs/full-harness/rendered/.claude/agents/swift-reviewer.md +98 -0
- package/packs/full-harness/rendered/.claude/agents/tdd-guide.md +89 -0
- package/packs/full-harness/rendered/.claude/agents/type-design-analyzer.md +41 -0
- package/packs/full-harness/rendered/.claude/agents/typescript-reviewer.md +96 -0
- package/packs/full-harness/rendered/.claude/agents/vue-reviewer.md +195 -0
- package/packs/full-harness/rendered/.claude/commands/aside.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/auto-update.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/build-fix.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/checkpoint.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/code-review.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/cost-report.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/cpp-build.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/cpp-review.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/cpp-test.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/ecc-guide.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/epic-claim.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/epic-decompose.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/epic-publish.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/epic-review.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/epic-sync.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/epic-unblock.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/epic-validate.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/evolve.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/fastapi-review.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/feature-dev.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/flutter-build.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/flutter-review.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/flutter-test.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/gan-build.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/gan-design.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/go-build.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/go-review.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/go-test.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/gradle-build.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/harness-audit.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/hookify-configure.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/hookify-help.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/hookify-list.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/hookify.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/instinct-export.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/instinct-import.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/instinct-status.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/jira.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/kotlin-build.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/kotlin-review.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/kotlin-test.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/learn-eval.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/learn.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/loop-start.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/loop-status.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/marketing-campaign.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/model-route.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/multi-backend.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/multi-execute.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/multi-frontend.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/multi-plan.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/multi-workflow.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/orch-add-feature.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/orch-build-mvp.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/orch-change-feature.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/orch-fix-defect.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/orch-refine-code.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/orch-review.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/plan-canvas.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/plan-prd.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/plan.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/pm2.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/pr.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/project-init.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/projects.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/promote.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/prp-commit.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/prp-implement.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/prp-plan.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/prp-pr.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/prp-prd.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/prune.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/python-review.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/quality-gate.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/react-build.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/react-review.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/react-test.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/refactor-clean.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/resume-session.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/review-pr.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/rust-build.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/rust-review.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/rust-test.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/santa-loop.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/save-session.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/security-scan.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/sessions.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/setup-pm.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/skill-create.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/skill-health.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/test-coverage.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/update-codemaps.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/update-docs.md +6 -0
- package/packs/full-harness/rendered/.claude/commands/vue-review.md +6 -0
- package/packs/full-harness/rendered/.claude/skills/accessibility/SKILL.md +144 -0
- package/packs/full-harness/rendered/.claude/skills/agent-architecture-audit/SKILL.md +254 -0
- package/packs/full-harness/rendered/.claude/skills/agent-eval/SKILL.md +143 -0
- package/packs/full-harness/rendered/.claude/skills/agent-harness-construction/SKILL.md +72 -0
- package/packs/full-harness/rendered/.claude/skills/agent-introspection-debugging/SKILL.md +152 -0
- package/packs/full-harness/rendered/.claude/skills/agent-payment-x402/SKILL.md +223 -0
- package/packs/full-harness/rendered/.claude/skills/agent-self-evaluation/SKILL.md +181 -0
- package/packs/full-harness/rendered/.claude/skills/agent-sort/SKILL.md +214 -0
- package/packs/full-harness/rendered/.claude/skills/agentic-engineering/SKILL.md +62 -0
- package/packs/full-harness/rendered/.claude/skills/agentic-os/SKILL.md +386 -0
- package/packs/full-harness/rendered/.claude/skills/ai-first-engineering/SKILL.md +50 -0
- package/packs/full-harness/rendered/.claude/skills/ai-regression-testing/SKILL.md +384 -0
- package/packs/full-harness/rendered/.claude/skills/android-clean-architecture/SKILL.md +338 -0
- package/packs/full-harness/rendered/.claude/skills/angular-developer/SKILL.md +153 -0
- package/packs/full-harness/rendered/.claude/skills/api-connector-builder/SKILL.md +118 -0
- package/packs/full-harness/rendered/.claude/skills/api-design/SKILL.md +522 -0
- package/packs/full-harness/rendered/.claude/skills/architecture-decision-records/SKILL.md +178 -0
- package/packs/full-harness/rendered/.claude/skills/article-writing/SKILL.md +78 -0
- package/packs/full-harness/rendered/.claude/skills/automation-audit-ops/SKILL.md +141 -0
- package/packs/full-harness/rendered/.claude/skills/autonomous-agent-harness/SKILL.md +272 -0
- package/packs/full-harness/rendered/.claude/skills/autonomous-loops/SKILL.md +609 -0
- package/packs/full-harness/rendered/.claude/skills/backend-patterns/SKILL.md +560 -0
- package/packs/full-harness/rendered/.claude/skills/benchmark/SKILL.md +92 -0
- package/packs/full-harness/rendered/.claude/skills/benchmark-methodology/SKILL.md +185 -0
- package/packs/full-harness/rendered/.claude/skills/benchmark-optimization-loop/SKILL.md +67 -0
- package/packs/full-harness/rendered/.claude/skills/blender-motion-state-inspection/SKILL.md +162 -0
- package/packs/full-harness/rendered/.claude/skills/blueprint/SKILL.md +95 -0
- package/packs/full-harness/rendered/.claude/skills/brand-discovery/SKILL.md +140 -0
- package/packs/full-harness/rendered/.claude/skills/brand-voice/SKILL.md +96 -0
- package/packs/full-harness/rendered/.claude/skills/browser-qa/SKILL.md +103 -0
- package/packs/full-harness/rendered/.claude/skills/bun-runtime/SKILL.md +83 -0
- package/packs/full-harness/rendered/.claude/skills/canary-watch/SKILL.md +106 -0
- package/packs/full-harness/rendered/.claude/skills/carrier-relationship-management/SKILL.md +198 -0
- package/packs/full-harness/rendered/.claude/skills/cisco-ios-patterns/SKILL.md +162 -0
- package/packs/full-harness/rendered/.claude/skills/ck/SKILL.md +143 -0
- package/packs/full-harness/rendered/.claude/skills/claude-devfleet/SKILL.md +110 -0
- package/packs/full-harness/rendered/.claude/skills/click-path-audit/SKILL.md +243 -0
- package/packs/full-harness/rendered/.claude/skills/clickhouse-io/SKILL.md +443 -0
- package/packs/full-harness/rendered/.claude/skills/code-tour/SKILL.md +252 -0
- package/packs/full-harness/rendered/.claude/skills/codebase-onboarding/SKILL.md +232 -0
- package/packs/full-harness/rendered/.claude/skills/codehealth-mcp/SKILL.md +165 -0
- package/packs/full-harness/rendered/.claude/skills/coding-standards/SKILL.md +549 -0
- package/packs/full-harness/rendered/.claude/skills/competitive-platform-analysis/SKILL.md +209 -0
- package/packs/full-harness/rendered/.claude/skills/competitive-report-structure/SKILL.md +157 -0
- package/packs/full-harness/rendered/.claude/skills/compose-multiplatform-patterns/SKILL.md +298 -0
- package/packs/full-harness/rendered/.claude/skills/config-gc/SKILL.md +118 -0
- package/packs/full-harness/rendered/.claude/skills/configure-ecc/SKILL.md +383 -0
- package/packs/full-harness/rendered/.claude/skills/connections-optimizer/SKILL.md +188 -0
- package/packs/full-harness/rendered/.claude/skills/content-engine/SKILL.md +130 -0
- package/packs/full-harness/rendered/.claude/skills/content-hash-cache-pattern/SKILL.md +160 -0
- package/packs/full-harness/rendered/.claude/skills/context-budget/SKILL.md +134 -0
- package/packs/full-harness/rendered/.claude/skills/continuous-agent-loop/SKILL.md +44 -0
- package/packs/full-harness/rendered/.claude/skills/continuous-learning/SKILL.md +130 -0
- package/packs/full-harness/rendered/.claude/skills/continuous-learning-v2/SKILL.md +358 -0
- package/packs/full-harness/rendered/.claude/skills/cost-aware-llm-pipeline/SKILL.md +182 -0
- package/packs/full-harness/rendered/.claude/skills/cost-tracking/SKILL.md +95 -0
- package/packs/full-harness/rendered/.claude/skills/council/SKILL.md +202 -0
- package/packs/full-harness/rendered/.claude/skills/cpp-coding-standards/SKILL.md +722 -0
- package/packs/full-harness/rendered/.claude/skills/cpp-testing/SKILL.md +323 -0
- package/packs/full-harness/rendered/.claude/skills/crosspost/SKILL.md +110 -0
- package/packs/full-harness/rendered/.claude/skills/csharp-testing/SKILL.md +320 -0
- package/packs/full-harness/rendered/.claude/skills/customer-billing-ops/SKILL.md +139 -0
- package/packs/full-harness/rendered/.claude/skills/customs-trade-compliance/SKILL.md +248 -0
- package/packs/full-harness/rendered/.claude/skills/dart-flutter-patterns/SKILL.md +562 -0
- package/packs/full-harness/rendered/.claude/skills/dashboard-builder/SKILL.md +106 -0
- package/packs/full-harness/rendered/.claude/skills/data-scraper-agent/SKILL.md +763 -0
- package/packs/full-harness/rendered/.claude/skills/data-throughput-accelerator/SKILL.md +70 -0
- package/packs/full-harness/rendered/.claude/skills/database-migrations/SKILL.md +428 -0
- package/packs/full-harness/rendered/.claude/skills/deep-research/SKILL.md +158 -0
- package/packs/full-harness/rendered/.claude/skills/defi-amm-security/SKILL.md +164 -0
- package/packs/full-harness/rendered/.claude/skills/delivery-gate/SKILL.md +123 -0
- package/packs/full-harness/rendered/.claude/skills/deployment-patterns/SKILL.md +426 -0
- package/packs/full-harness/rendered/.claude/skills/design-system/SKILL.md +81 -0
- package/packs/full-harness/rendered/.claude/skills/django-celery/SKILL.md +456 -0
- package/packs/full-harness/rendered/.claude/skills/django-patterns/SKILL.md +733 -0
- package/packs/full-harness/rendered/.claude/skills/django-security/SKILL.md +642 -0
- package/packs/full-harness/rendered/.claude/skills/django-tdd/SKILL.md +728 -0
- package/packs/full-harness/rendered/.claude/skills/django-verification/SKILL.md +468 -0
- package/packs/full-harness/rendered/.claude/skills/dmux-workflows/SKILL.md +190 -0
- package/packs/full-harness/rendered/.claude/skills/docker-patterns/SKILL.md +363 -0
- package/packs/full-harness/rendered/.claude/skills/documentation-lookup/SKILL.md +89 -0
- package/packs/full-harness/rendered/.claude/skills/dotnet-patterns/SKILL.md +320 -0
- package/packs/full-harness/rendered/.claude/skills/dynamic-workflow-mode/SKILL.md +122 -0
- package/packs/full-harness/rendered/.claude/skills/e2e-testing/SKILL.md +325 -0
- package/packs/full-harness/rendered/.claude/skills/ecc-guide/SKILL.md +188 -0
- package/packs/full-harness/rendered/.claude/skills/ecc-recipes/SKILL.md +145 -0
- package/packs/full-harness/rendered/.claude/skills/ecc-tools-cost-audit/SKILL.md +159 -0
- package/packs/full-harness/rendered/.claude/skills/email-ops/SKILL.md +120 -0
- package/packs/full-harness/rendered/.claude/skills/energy-procurement/SKILL.md +213 -0
- package/packs/full-harness/rendered/.claude/skills/enterprise-agent-ops/SKILL.md +49 -0
- package/packs/full-harness/rendered/.claude/skills/error-handling/SKILL.md +375 -0
- package/packs/full-harness/rendered/.claude/skills/eval-harness/SKILL.md +268 -0
- package/packs/full-harness/rendered/.claude/skills/evm-token-decimals/SKILL.md +128 -0
- package/packs/full-harness/rendered/.claude/skills/exa-search/SKILL.md +106 -0
- package/packs/full-harness/rendered/.claude/skills/fal-ai-media/SKILL.md +287 -0
- package/packs/full-harness/rendered/.claude/skills/fastapi-patterns/SKILL.md +512 -0
- package/packs/full-harness/rendered/.claude/skills/finance-billing-ops/SKILL.md +126 -0
- package/packs/full-harness/rendered/.claude/skills/flox-environments/SKILL.md +495 -0
- package/packs/full-harness/rendered/.claude/skills/flutter-dart-code-review/SKILL.md +434 -0
- package/packs/full-harness/rendered/.claude/skills/foundation-models-on-device/SKILL.md +243 -0
- package/packs/full-harness/rendered/.claude/skills/frontend-a11y/SKILL.md +441 -0
- package/packs/full-harness/rendered/.claude/skills/frontend-design-direction/SKILL.md +91 -0
- package/packs/full-harness/rendered/.claude/skills/frontend-patterns/SKILL.md +655 -0
- package/packs/full-harness/rendered/.claude/skills/frontend-slides/SKILL.md +183 -0
- package/packs/full-harness/rendered/.claude/skills/fsharp-testing/SKILL.md +279 -0
- package/packs/full-harness/rendered/.claude/skills/gan-style-harness/SKILL.md +276 -0
- package/packs/full-harness/rendered/.claude/skills/gateguard/SKILL.md +131 -0
- package/packs/full-harness/rendered/.claude/skills/generating-python-installer/SKILL.md +820 -0
- package/packs/full-harness/rendered/.claude/skills/gget/SKILL.md +165 -0
- package/packs/full-harness/rendered/.claude/skills/git-workflow/SKILL.md +714 -0
- package/packs/full-harness/rendered/.claude/skills/github-ops/SKILL.md +143 -0
- package/packs/full-harness/rendered/.claude/skills/golang-patterns/SKILL.md +674 -0
- package/packs/full-harness/rendered/.claude/skills/golang-testing/SKILL.md +719 -0
- package/packs/full-harness/rendered/.claude/skills/google-workspace-ops/SKILL.md +94 -0
- package/packs/full-harness/rendered/.claude/skills/growth-log/SKILL.md +125 -0
- package/packs/full-harness/rendered/.claude/skills/healthcare-cdss-patterns/SKILL.md +243 -0
- package/packs/full-harness/rendered/.claude/skills/healthcare-emr-patterns/SKILL.md +157 -0
- package/packs/full-harness/rendered/.claude/skills/healthcare-eval-harness/SKILL.md +205 -0
- package/packs/full-harness/rendered/.claude/skills/healthcare-phi-compliance/SKILL.md +143 -0
- package/packs/full-harness/rendered/.claude/skills/hermes-imports/SKILL.md +87 -0
- package/packs/full-harness/rendered/.claude/skills/hexagonal-architecture/SKILL.md +275 -0
- package/packs/full-harness/rendered/.claude/skills/hipaa-compliance/SKILL.md +76 -0
- package/packs/full-harness/rendered/.claude/skills/homelab-network-readiness/SKILL.md +168 -0
- package/packs/full-harness/rendered/.claude/skills/homelab-network-setup/SKILL.md +128 -0
- package/packs/full-harness/rendered/.claude/skills/homelab-pihole-dns/SKILL.md +273 -0
- package/packs/full-harness/rendered/.claude/skills/homelab-vlan-segmentation/SKILL.md +310 -0
- package/packs/full-harness/rendered/.claude/skills/homelab-wireguard-vpn/SKILL.md +304 -0
- package/packs/full-harness/rendered/.claude/skills/hookify-rules/SKILL.md +128 -0
- package/packs/full-harness/rendered/.claude/skills/inherit-legacy-style/SKILL.md +154 -0
- package/packs/full-harness/rendered/.claude/skills/intent-driven-development/SKILL.md +360 -0
- package/packs/full-harness/rendered/.claude/skills/inventory-demand-planning/SKILL.md +232 -0
- package/packs/full-harness/rendered/.claude/skills/investor-materials/SKILL.md +95 -0
- package/packs/full-harness/rendered/.claude/skills/investor-outreach/SKILL.md +90 -0
- package/packs/full-harness/rendered/.claude/skills/ios-icon-gen/SKILL.md +156 -0
- package/packs/full-harness/rendered/.claude/skills/iterative-retrieval/SKILL.md +210 -0
- package/packs/full-harness/rendered/.claude/skills/ito-basket-compare/SKILL.md +62 -0
- package/packs/full-harness/rendered/.claude/skills/ito-data-atlas-agent/SKILL.md +62 -0
- package/packs/full-harness/rendered/.claude/skills/ito-market-intelligence/SKILL.md +59 -0
- package/packs/full-harness/rendered/.claude/skills/ito-trade-planner/SKILL.md +66 -0
- package/packs/full-harness/rendered/.claude/skills/java-coding-standards/SKILL.md +382 -0
- package/packs/full-harness/rendered/.claude/skills/jira-integration/SKILL.md +301 -0
- package/packs/full-harness/rendered/.claude/skills/jpa-patterns/SKILL.md +150 -0
- package/packs/full-harness/rendered/.claude/skills/knowledge-ops/SKILL.md +153 -0
- package/packs/full-harness/rendered/.claude/skills/kotlin-coroutines-flows/SKILL.md +283 -0
- package/packs/full-harness/rendered/.claude/skills/kotlin-exposed-patterns/SKILL.md +718 -0
- package/packs/full-harness/rendered/.claude/skills/kotlin-ktor-patterns/SKILL.md +688 -0
- package/packs/full-harness/rendered/.claude/skills/kotlin-patterns/SKILL.md +710 -0
- package/packs/full-harness/rendered/.claude/skills/kotlin-testing/SKILL.md +823 -0
- package/packs/full-harness/rendered/.claude/skills/kubernetes-patterns/SKILL.md +754 -0
- package/packs/full-harness/rendered/.claude/skills/laravel-patterns/SKILL.md +414 -0
- package/packs/full-harness/rendered/.claude/skills/laravel-plugin-discovery/SKILL.md +228 -0
- package/packs/full-harness/rendered/.claude/skills/laravel-security/SKILL.md +946 -0
- package/packs/full-harness/rendered/.claude/skills/laravel-tdd/SKILL.md +673 -0
- package/packs/full-harness/rendered/.claude/skills/laravel-verification/SKILL.md +178 -0
- package/packs/full-harness/rendered/.claude/skills/latency-critical-systems/SKILL.md +71 -0
- package/packs/full-harness/rendered/.claude/skills/lead-intelligence/SKILL.md +320 -0
- package/packs/full-harness/rendered/.claude/skills/liquid-glass-design/SKILL.md +279 -0
- package/packs/full-harness/rendered/.claude/skills/literature-review/SKILL.md +191 -0
- package/packs/full-harness/rendered/.claude/skills/llm-trading-agent-security/SKILL.md +144 -0
- package/packs/full-harness/rendered/.claude/skills/logistics-exception-management/SKILL.md +208 -0
- package/packs/full-harness/rendered/.claude/skills/loop-design-check/SKILL.md +141 -0
- package/packs/full-harness/rendered/.claude/skills/mailtrap-email-integration/SKILL.md +76 -0
- package/packs/full-harness/rendered/.claude/skills/make-interfaces-feel-better/SKILL.md +150 -0
- package/packs/full-harness/rendered/.claude/skills/manim-video/SKILL.md +88 -0
- package/packs/full-harness/rendered/.claude/skills/market-research/SKILL.md +74 -0
- package/packs/full-harness/rendered/.claude/skills/marketing-campaign/SKILL.md +112 -0
- package/packs/full-harness/rendered/.claude/skills/mcp-server-patterns/SKILL.md +68 -0
- package/packs/full-harness/rendered/.claude/skills/messages-ops/SKILL.md +103 -0
- package/packs/full-harness/rendered/.claude/skills/ml-adoption-playbook/SKILL.md +56 -0
- package/packs/full-harness/rendered/.claude/skills/mle-workflow/SKILL.md +345 -0
- package/packs/full-harness/rendered/.claude/skills/motion-advanced/SKILL.md +592 -0
- package/packs/full-harness/rendered/.claude/skills/motion-foundations/SKILL.md +295 -0
- package/packs/full-harness/rendered/.claude/skills/motion-patterns/SKILL.md +430 -0
- package/packs/full-harness/rendered/.claude/skills/motion-ui/SKILL.md +574 -0
- package/packs/full-harness/rendered/.claude/skills/mysql-patterns/SKILL.md +411 -0
- package/packs/full-harness/rendered/.claude/skills/nanoclaw-repl/SKILL.md +32 -0
- package/packs/full-harness/rendered/.claude/skills/nestjs-patterns/SKILL.md +229 -0
- package/packs/full-harness/rendered/.claude/skills/netmiko-ssh-automation/SKILL.md +172 -0
- package/packs/full-harness/rendered/.claude/skills/network-bgp-diagnostics/SKILL.md +166 -0
- package/packs/full-harness/rendered/.claude/skills/network-config-validation/SKILL.md +209 -0
- package/packs/full-harness/rendered/.claude/skills/network-interface-health/SKILL.md +151 -0
- package/packs/full-harness/rendered/.claude/skills/nextjs-turbopack/SKILL.md +56 -0
- package/packs/full-harness/rendered/.claude/skills/nodejs-keccak256/SKILL.md +100 -0
- package/packs/full-harness/rendered/.claude/skills/nutrient-document-processing/SKILL.md +166 -0
- package/packs/full-harness/rendered/.claude/skills/nuxt4-patterns/SKILL.md +99 -0
- package/packs/full-harness/rendered/.claude/skills/openclaw-persona-forge/SKILL.md +287 -0
- package/packs/full-harness/rendered/.claude/skills/opensource-pipeline/SKILL.md +254 -0
- package/packs/full-harness/rendered/.claude/skills/orch-add-feature/SKILL.md +43 -0
- package/packs/full-harness/rendered/.claude/skills/orch-build-mvp/SKILL.md +47 -0
- package/packs/full-harness/rendered/.claude/skills/orch-change-feature/SKILL.md +41 -0
- package/packs/full-harness/rendered/.claude/skills/orch-fix-defect/SKILL.md +41 -0
- package/packs/full-harness/rendered/.claude/skills/orch-pipeline/SKILL.md +119 -0
- package/packs/full-harness/rendered/.claude/skills/orch-refine-code/SKILL.md +42 -0
- package/packs/full-harness/rendered/.claude/skills/parallel-execution-optimizer/SKILL.md +70 -0
- package/packs/full-harness/rendered/.claude/skills/perl-patterns/SKILL.md +503 -0
- package/packs/full-harness/rendered/.claude/skills/perl-security/SKILL.md +502 -0
- package/packs/full-harness/rendered/.claude/skills/perl-testing/SKILL.md +474 -0
- package/packs/full-harness/rendered/.claude/skills/plan-canvas/SKILL.md +150 -0
- package/packs/full-harness/rendered/.claude/skills/plan-orchestrate/SKILL.md +261 -0
- package/packs/full-harness/rendered/.claude/skills/plankton-code-quality/SKILL.md +235 -0
- package/packs/full-harness/rendered/.claude/skills/postgres-patterns/SKILL.md +146 -0
- package/packs/full-harness/rendered/.claude/skills/prediction-market-oracle-research/SKILL.md +62 -0
- package/packs/full-harness/rendered/.claude/skills/prediction-market-risk-review/SKILL.md +59 -0
- package/packs/full-harness/rendered/.claude/skills/prisma-patterns/SKILL.md +399 -0
- package/packs/full-harness/rendered/.claude/skills/product-capability/SKILL.md +140 -0
- package/packs/full-harness/rendered/.claude/skills/product-lens/SKILL.md +91 -0
- package/packs/full-harness/rendered/.claude/skills/production-audit/SKILL.md +205 -0
- package/packs/full-harness/rendered/.claude/skills/production-scheduling/SKILL.md +223 -0
- package/packs/full-harness/rendered/.claude/skills/project-flow-ops/SKILL.md +110 -0
- package/packs/full-harness/rendered/.claude/skills/prompt-optimizer/SKILL.md +383 -0
- package/packs/full-harness/rendered/.claude/skills/pubmed-database/SKILL.md +174 -0
- package/packs/full-harness/rendered/.claude/skills/python-patterns/SKILL.md +749 -0
- package/packs/full-harness/rendered/.claude/skills/python-testing/SKILL.md +815 -0
- package/packs/full-harness/rendered/.claude/skills/pytorch-patterns/SKILL.md +395 -0
- package/packs/full-harness/rendered/.claude/skills/quality-nonconformance/SKILL.md +245 -0
- package/packs/full-harness/rendered/.claude/skills/quarkus-patterns/SKILL.md +721 -0
- package/packs/full-harness/rendered/.claude/skills/quarkus-security/SKILL.md +466 -0
- package/packs/full-harness/rendered/.claude/skills/quarkus-tdd/SKILL.md +810 -0
- package/packs/full-harness/rendered/.claude/skills/quarkus-verification/SKILL.md +478 -0
- package/packs/full-harness/rendered/.claude/skills/ralphinho-rfc-pipeline/SKILL.md +66 -0
- package/packs/full-harness/rendered/.claude/skills/react-native-patterns/SKILL.md +325 -0
- package/packs/full-harness/rendered/.claude/skills/react-patterns/SKILL.md +340 -0
- package/packs/full-harness/rendered/.claude/skills/react-performance/SKILL.md +573 -0
- package/packs/full-harness/rendered/.claude/skills/react-testing/SKILL.md +422 -0
- package/packs/full-harness/rendered/.claude/skills/recsys-pipeline-architect/SKILL.md +113 -0
- package/packs/full-harness/rendered/.claude/skills/recursive-decision-ledger/SKILL.md +77 -0
- package/packs/full-harness/rendered/.claude/skills/redis-patterns/SKILL.md +402 -0
- package/packs/full-harness/rendered/.claude/skills/regex-vs-llm-structured-text/SKILL.md +219 -0
- package/packs/full-harness/rendered/.claude/skills/remotion-video-creation/SKILL.md +41 -0
- package/packs/full-harness/rendered/.claude/skills/repo-scan/SKILL.md +77 -0
- package/packs/full-harness/rendered/.claude/skills/research-ops/SKILL.md +111 -0
- package/packs/full-harness/rendered/.claude/skills/returns-reverse-logistics/SKILL.md +225 -0
- package/packs/full-harness/rendered/.claude/skills/rules-distill/SKILL.md +263 -0
- package/packs/full-harness/rendered/.claude/skills/rust-patterns/SKILL.md +498 -0
- package/packs/full-harness/rendered/.claude/skills/rust-testing/SKILL.md +499 -0
- package/packs/full-harness/rendered/.claude/skills/safety-guard/SKILL.md +74 -0
- package/packs/full-harness/rendered/.claude/skills/santa-method/SKILL.md +305 -0
- package/packs/full-harness/rendered/.claude/skills/scholar-evaluation/SKILL.md +159 -0
- package/packs/full-harness/rendered/.claude/skills/search-first/SKILL.md +181 -0
- package/packs/full-harness/rendered/.claude/skills/security-bounty-hunter/SKILL.md +97 -0
- package/packs/full-harness/rendered/.claude/skills/security-review/SKILL.md +502 -0
- package/packs/full-harness/rendered/.claude/skills/security-scan/SKILL.md +164 -0
- package/packs/full-harness/rendered/.claude/skills/seo/SKILL.md +153 -0
- package/packs/full-harness/rendered/.claude/skills/skill-comply/SKILL.md +56 -0
- package/packs/full-harness/rendered/.claude/skills/skill-scout/SKILL.md +139 -0
- package/packs/full-harness/rendered/.claude/skills/skill-stocktake/SKILL.md +193 -0
- package/packs/full-harness/rendered/.claude/skills/social-graph-ranker/SKILL.md +153 -0
- package/packs/full-harness/rendered/.claude/skills/social-publisher/SKILL.md +128 -0
- package/packs/full-harness/rendered/.claude/skills/springboot-patterns/SKILL.md +313 -0
- package/packs/full-harness/rendered/.claude/skills/springboot-security/SKILL.md +271 -0
- package/packs/full-harness/rendered/.claude/skills/springboot-tdd/SKILL.md +157 -0
- package/packs/full-harness/rendered/.claude/skills/springboot-verification/SKILL.md +230 -0
- package/packs/full-harness/rendered/.claude/skills/strategic-compact/SKILL.md +136 -0
- package/packs/full-harness/rendered/.claude/skills/swift-actor-persistence/SKILL.md +142 -0
- package/packs/full-harness/rendered/.claude/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/packs/full-harness/rendered/.claude/skills/swift-protocol-di-testing/SKILL.md +189 -0
- package/packs/full-harness/rendered/.claude/skills/swiftui-patterns/SKILL.md +259 -0
- package/packs/full-harness/rendered/.claude/skills/taste/SKILL.md +263 -0
- package/packs/full-harness/rendered/.claude/skills/tdd-workflow/SKILL.md +580 -0
- package/packs/full-harness/rendered/.claude/skills/team-agent-orchestration/SKILL.md +109 -0
- package/packs/full-harness/rendered/.claude/skills/team-builder/SKILL.md +167 -0
- package/packs/full-harness/rendered/.claude/skills/terminal-ops/SKILL.md +108 -0
- package/packs/full-harness/rendered/.claude/skills/tinystruct-patterns/SKILL.md +277 -0
- package/packs/full-harness/rendered/.claude/skills/token-budget-advisor/SKILL.md +120 -0
- package/packs/full-harness/rendered/.claude/skills/ui-demo/SKILL.md +464 -0
- package/packs/full-harness/rendered/.claude/skills/ui-to-vue/SKILL.md +133 -0
- package/packs/full-harness/rendered/.claude/skills/uncloud/SKILL.md +342 -0
- package/packs/full-harness/rendered/.claude/skills/unified-notifications-ops/SKILL.md +186 -0
- package/packs/full-harness/rendered/.claude/skills/uspto-database/SKILL.md +176 -0
- package/packs/full-harness/rendered/.claude/skills/verification-loop/SKILL.md +126 -0
- package/packs/full-harness/rendered/.claude/skills/video-editing/SKILL.md +309 -0
- package/packs/full-harness/rendered/.claude/skills/videodb/SKILL.md +371 -0
- package/packs/full-harness/rendered/.claude/skills/visa-doc-translate/SKILL.md +117 -0
- package/packs/full-harness/rendered/.claude/skills/vite-patterns/SKILL.md +448 -0
- package/packs/full-harness/rendered/.claude/skills/vue-patterns/SKILL.md +470 -0
- package/packs/full-harness/rendered/.claude/skills/windows-desktop-e2e/SKILL.md +886 -0
- package/packs/full-harness/rendered/.claude/skills/workspace-surface-audit/SKILL.md +124 -0
- package/packs/full-harness/rendered/.claude/skills/x-api/SKILL.md +233 -0
- package/packs/full-harness/rendered/.github/copilot-instructions.md +89529 -0
- package/packs/full-harness/rendered/AGENTS.md +9663 -0
- package/packs/full-harness/rendered/CLAUDE.md +444 -0
- package/packs/full-harness/rendered/GEMINI.md +71959 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: liquid-glass-design
|
|
3
|
+
description: iOS 26 Liquid Glass design system — dynamic glass material with blur, reflection, and interactive morphing for SwiftUI, UIKit, and WidgetKit.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Liquid Glass Design System (iOS 26)
|
|
7
|
+
|
|
8
|
+
Patterns for implementing Apple's Liquid Glass — a dynamic material that blurs content behind it, reflects color and light from surrounding content, and reacts to touch and pointer interactions. Covers SwiftUI, UIKit, and WidgetKit integration.
|
|
9
|
+
|
|
10
|
+
## When to Activate
|
|
11
|
+
|
|
12
|
+
- Building or updating apps for iOS 26+ with the new design language
|
|
13
|
+
- Implementing glass-style buttons, cards, toolbars, or containers
|
|
14
|
+
- Creating morphing transitions between glass elements
|
|
15
|
+
- Applying Liquid Glass effects to widgets
|
|
16
|
+
- Migrating existing blur/material effects to the new Liquid Glass API
|
|
17
|
+
|
|
18
|
+
## Core Pattern — SwiftUI
|
|
19
|
+
|
|
20
|
+
### Basic Glass Effect
|
|
21
|
+
|
|
22
|
+
The simplest way to add Liquid Glass to any view:
|
|
23
|
+
|
|
24
|
+
```swift
|
|
25
|
+
Text("Hello, World!")
|
|
26
|
+
.font(.title)
|
|
27
|
+
.padding()
|
|
28
|
+
.glassEffect() // Default: regular variant, capsule shape
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Customizing Shape and Tint
|
|
32
|
+
|
|
33
|
+
```swift
|
|
34
|
+
Text("Hello, World!")
|
|
35
|
+
.font(.title)
|
|
36
|
+
.padding()
|
|
37
|
+
.glassEffect(.regular.tint(.orange).interactive(), in: .rect(cornerRadius: 16.0))
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Key customization options:
|
|
41
|
+
- `.regular` — standard glass effect
|
|
42
|
+
- `.tint(Color)` — add color tint for prominence
|
|
43
|
+
- `.interactive()` — react to touch and pointer interactions
|
|
44
|
+
- Shape: `.capsule` (default), `.rect(cornerRadius:)`, `.circle`
|
|
45
|
+
|
|
46
|
+
### Glass Button Styles
|
|
47
|
+
|
|
48
|
+
```swift
|
|
49
|
+
Button("Click Me") { /* action */ }
|
|
50
|
+
.buttonStyle(.glass)
|
|
51
|
+
|
|
52
|
+
Button("Important") { /* action */ }
|
|
53
|
+
.buttonStyle(.glassProminent)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### GlassEffectContainer for Multiple Elements
|
|
57
|
+
|
|
58
|
+
Always wrap multiple glass views in a container for performance and morphing:
|
|
59
|
+
|
|
60
|
+
```swift
|
|
61
|
+
GlassEffectContainer(spacing: 40.0) {
|
|
62
|
+
HStack(spacing: 40.0) {
|
|
63
|
+
Image(systemName: "scribble.variable")
|
|
64
|
+
.frame(width: 80.0, height: 80.0)
|
|
65
|
+
.font(.system(size: 36))
|
|
66
|
+
.glassEffect()
|
|
67
|
+
|
|
68
|
+
Image(systemName: "eraser.fill")
|
|
69
|
+
.frame(width: 80.0, height: 80.0)
|
|
70
|
+
.font(.system(size: 36))
|
|
71
|
+
.glassEffect()
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The `spacing` parameter controls merge distance — closer elements blend their glass shapes together.
|
|
77
|
+
|
|
78
|
+
### Uniting Glass Effects
|
|
79
|
+
|
|
80
|
+
Combine multiple views into a single glass shape with `glassEffectUnion`:
|
|
81
|
+
|
|
82
|
+
```swift
|
|
83
|
+
@Namespace private var namespace
|
|
84
|
+
|
|
85
|
+
GlassEffectContainer(spacing: 20.0) {
|
|
86
|
+
HStack(spacing: 20.0) {
|
|
87
|
+
ForEach(symbolSet.indices, id: \.self) { item in
|
|
88
|
+
Image(systemName: symbolSet[item])
|
|
89
|
+
.frame(width: 80.0, height: 80.0)
|
|
90
|
+
.glassEffect()
|
|
91
|
+
.glassEffectUnion(id: item < 2 ? "group1" : "group2", namespace: namespace)
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Morphing Transitions
|
|
98
|
+
|
|
99
|
+
Create smooth morphing when glass elements appear/disappear:
|
|
100
|
+
|
|
101
|
+
```swift
|
|
102
|
+
@State private var isExpanded = false
|
|
103
|
+
@Namespace private var namespace
|
|
104
|
+
|
|
105
|
+
GlassEffectContainer(spacing: 40.0) {
|
|
106
|
+
HStack(spacing: 40.0) {
|
|
107
|
+
Image(systemName: "scribble.variable")
|
|
108
|
+
.frame(width: 80.0, height: 80.0)
|
|
109
|
+
.glassEffect()
|
|
110
|
+
.glassEffectID("pencil", in: namespace)
|
|
111
|
+
|
|
112
|
+
if isExpanded {
|
|
113
|
+
Image(systemName: "eraser.fill")
|
|
114
|
+
.frame(width: 80.0, height: 80.0)
|
|
115
|
+
.glassEffect()
|
|
116
|
+
.glassEffectID("eraser", in: namespace)
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
Button("Toggle") {
|
|
122
|
+
withAnimation { isExpanded.toggle() }
|
|
123
|
+
}
|
|
124
|
+
.buttonStyle(.glass)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Extending Horizontal Scrolling Under Sidebar
|
|
128
|
+
|
|
129
|
+
To allow horizontal scroll content to extend under a sidebar or inspector, ensure the `ScrollView` content reaches the leading/trailing edges of the container. The system automatically handles the under-sidebar scrolling behavior when the layout extends to the edges — no additional modifier is needed.
|
|
130
|
+
|
|
131
|
+
## Core Pattern — UIKit
|
|
132
|
+
|
|
133
|
+
### Basic UIGlassEffect
|
|
134
|
+
|
|
135
|
+
```swift
|
|
136
|
+
let glassEffect = UIGlassEffect()
|
|
137
|
+
glassEffect.tintColor = UIColor.systemBlue.withAlphaComponent(0.3)
|
|
138
|
+
glassEffect.isInteractive = true
|
|
139
|
+
|
|
140
|
+
let visualEffectView = UIVisualEffectView(effect: glassEffect)
|
|
141
|
+
visualEffectView.translatesAutoresizingMaskIntoConstraints = false
|
|
142
|
+
visualEffectView.layer.cornerRadius = 20
|
|
143
|
+
visualEffectView.clipsToBounds = true
|
|
144
|
+
|
|
145
|
+
view.addSubview(visualEffectView)
|
|
146
|
+
NSLayoutConstraint.activate([
|
|
147
|
+
visualEffectView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
|
|
148
|
+
visualEffectView.centerYAnchor.constraint(equalTo: view.centerYAnchor),
|
|
149
|
+
visualEffectView.widthAnchor.constraint(equalToConstant: 200),
|
|
150
|
+
visualEffectView.heightAnchor.constraint(equalToConstant: 120)
|
|
151
|
+
])
|
|
152
|
+
|
|
153
|
+
// Add content to contentView
|
|
154
|
+
let label = UILabel()
|
|
155
|
+
label.text = "Liquid Glass"
|
|
156
|
+
label.translatesAutoresizingMaskIntoConstraints = false
|
|
157
|
+
visualEffectView.contentView.addSubview(label)
|
|
158
|
+
NSLayoutConstraint.activate([
|
|
159
|
+
label.centerXAnchor.constraint(equalTo: visualEffectView.contentView.centerXAnchor),
|
|
160
|
+
label.centerYAnchor.constraint(equalTo: visualEffectView.contentView.centerYAnchor)
|
|
161
|
+
])
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### UIGlassContainerEffect for Multiple Elements
|
|
165
|
+
|
|
166
|
+
```swift
|
|
167
|
+
let containerEffect = UIGlassContainerEffect()
|
|
168
|
+
containerEffect.spacing = 40.0
|
|
169
|
+
|
|
170
|
+
let containerView = UIVisualEffectView(effect: containerEffect)
|
|
171
|
+
|
|
172
|
+
let firstGlass = UIVisualEffectView(effect: UIGlassEffect())
|
|
173
|
+
let secondGlass = UIVisualEffectView(effect: UIGlassEffect())
|
|
174
|
+
|
|
175
|
+
containerView.contentView.addSubview(firstGlass)
|
|
176
|
+
containerView.contentView.addSubview(secondGlass)
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Scroll Edge Effects
|
|
180
|
+
|
|
181
|
+
```swift
|
|
182
|
+
scrollView.topEdgeEffect.style = .automatic
|
|
183
|
+
scrollView.bottomEdgeEffect.style = .hard
|
|
184
|
+
scrollView.leftEdgeEffect.isHidden = true
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Toolbar Glass Integration
|
|
188
|
+
|
|
189
|
+
```swift
|
|
190
|
+
let favoriteButton = UIBarButtonItem(image: UIImage(systemName: "heart"), style: .plain, target: self, action: #selector(favoriteAction))
|
|
191
|
+
favoriteButton.hidesSharedBackground = true // Opt out of shared glass background
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Core Pattern — WidgetKit
|
|
195
|
+
|
|
196
|
+
### Rendering Mode Detection
|
|
197
|
+
|
|
198
|
+
```swift
|
|
199
|
+
struct MyWidgetView: View {
|
|
200
|
+
@Environment(\.widgetRenderingMode) var renderingMode
|
|
201
|
+
|
|
202
|
+
var body: some View {
|
|
203
|
+
if renderingMode == .accented {
|
|
204
|
+
// Tinted mode: white-tinted, themed glass background
|
|
205
|
+
} else {
|
|
206
|
+
// Full color mode: standard appearance
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Accent Groups for Visual Hierarchy
|
|
213
|
+
|
|
214
|
+
```swift
|
|
215
|
+
HStack {
|
|
216
|
+
VStack(alignment: .leading) {
|
|
217
|
+
Text("Title")
|
|
218
|
+
.widgetAccentable() // Accent group
|
|
219
|
+
Text("Subtitle")
|
|
220
|
+
// Primary group (default)
|
|
221
|
+
}
|
|
222
|
+
Image(systemName: "star.fill")
|
|
223
|
+
.widgetAccentable() // Accent group
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Image Rendering in Accented Mode
|
|
228
|
+
|
|
229
|
+
```swift
|
|
230
|
+
Image("myImage")
|
|
231
|
+
.widgetAccentedRenderingMode(.monochrome)
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Container Background
|
|
235
|
+
|
|
236
|
+
```swift
|
|
237
|
+
VStack { /* content */ }
|
|
238
|
+
.containerBackground(for: .widget) {
|
|
239
|
+
Color.blue.opacity(0.2)
|
|
240
|
+
}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## Key Design Decisions
|
|
244
|
+
|
|
245
|
+
| Decision | Rationale |
|
|
246
|
+
|----------|-----------|
|
|
247
|
+
| GlassEffectContainer wrapping | Performance optimization, enables morphing between glass elements |
|
|
248
|
+
| `spacing` parameter | Controls merge distance — fine-tune how close elements must be to blend |
|
|
249
|
+
| `@Namespace` + `glassEffectID` | Enables smooth morphing transitions on view hierarchy changes |
|
|
250
|
+
| `interactive()` modifier | Explicit opt-in for touch/pointer reactions — not all glass should respond |
|
|
251
|
+
| UIGlassContainerEffect in UIKit | Same container pattern as SwiftUI for consistency |
|
|
252
|
+
| Accented rendering mode in widgets | System applies tinted glass when user selects tinted Home Screen |
|
|
253
|
+
|
|
254
|
+
## Best Practices
|
|
255
|
+
|
|
256
|
+
- **Always use GlassEffectContainer** when applying glass to multiple sibling views — it enables morphing and improves rendering performance
|
|
257
|
+
- **Apply `.glassEffect()` after** other appearance modifiers (frame, font, padding)
|
|
258
|
+
- **Use `.interactive()`** only on elements that respond to user interaction (buttons, toggleable items)
|
|
259
|
+
- **Choose spacing carefully** in containers to control when glass effects merge
|
|
260
|
+
- **Use `withAnimation`** when changing view hierarchies to enable smooth morphing transitions
|
|
261
|
+
- **Test across appearances** — light mode, dark mode, and accented/tinted modes
|
|
262
|
+
- **Ensure accessibility contrast** — text on glass must remain readable
|
|
263
|
+
|
|
264
|
+
## Anti-Patterns to Avoid
|
|
265
|
+
|
|
266
|
+
- Using multiple standalone `.glassEffect()` views without a GlassEffectContainer
|
|
267
|
+
- Nesting too many glass effects — degrades performance and visual clarity
|
|
268
|
+
- Applying glass to every view — reserve for interactive elements, toolbars, and cards
|
|
269
|
+
- Forgetting `clipsToBounds = true` in UIKit when using corner radii
|
|
270
|
+
- Ignoring accented rendering mode in widgets — breaks tinted Home Screen appearance
|
|
271
|
+
- Using opaque backgrounds behind glass — defeats the translucency effect
|
|
272
|
+
|
|
273
|
+
## When to Use
|
|
274
|
+
|
|
275
|
+
- Navigation bars, toolbars, and tab bars with the new iOS 26 design
|
|
276
|
+
- Floating action buttons and card-style containers
|
|
277
|
+
- Interactive controls that need visual depth and touch feedback
|
|
278
|
+
- Widgets that should integrate with the system's Liquid Glass appearance
|
|
279
|
+
- Morphing transitions between related UI states
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: literature-review
|
|
3
|
+
description: Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Literature Review
|
|
7
|
+
|
|
8
|
+
Use this skill when the task is to find, screen, synthesize, and cite a body of
|
|
9
|
+
academic or technical literature.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- Building a systematic, scoping, or narrative literature review.
|
|
14
|
+
- Synthesizing the state of the art for a research question.
|
|
15
|
+
- Finding gaps, contradictions, or future-work directions.
|
|
16
|
+
- Preparing citation-backed background sections for papers or reports.
|
|
17
|
+
- Comparing evidence across peer-reviewed papers, preprints, patents, and
|
|
18
|
+
technical reports.
|
|
19
|
+
|
|
20
|
+
## Review Types
|
|
21
|
+
|
|
22
|
+
- **Narrative review**: broad synthesis; useful for orientation.
|
|
23
|
+
- **Scoping review**: maps concepts, methods, and evidence gaps.
|
|
24
|
+
- **Systematic review**: predefined protocol, reproducible search, explicit
|
|
25
|
+
screening and exclusion.
|
|
26
|
+
- **Meta-analysis**: systematic review plus quantitative effect aggregation.
|
|
27
|
+
|
|
28
|
+
Ask the user which level of rigor is needed. If unspecified, default to a
|
|
29
|
+
scoping review for exploratory work and a systematic review for publication or
|
|
30
|
+
clinical claims.
|
|
31
|
+
|
|
32
|
+
## Workflow
|
|
33
|
+
|
|
34
|
+
### 1. Define the Question
|
|
35
|
+
|
|
36
|
+
Convert the prompt into a searchable research question.
|
|
37
|
+
|
|
38
|
+
For clinical or biomedical work, use PICO:
|
|
39
|
+
|
|
40
|
+
- Population
|
|
41
|
+
- Intervention or exposure
|
|
42
|
+
- Comparator
|
|
43
|
+
- Outcome
|
|
44
|
+
|
|
45
|
+
For technical work, use:
|
|
46
|
+
|
|
47
|
+
- system or domain
|
|
48
|
+
- method or intervention
|
|
49
|
+
- comparison baseline
|
|
50
|
+
- evaluation metric
|
|
51
|
+
|
|
52
|
+
### 2. Plan the Search
|
|
53
|
+
|
|
54
|
+
Create a search protocol before collecting sources:
|
|
55
|
+
|
|
56
|
+
- databases to search
|
|
57
|
+
- date range
|
|
58
|
+
- languages
|
|
59
|
+
- publication types
|
|
60
|
+
- inclusion criteria
|
|
61
|
+
- exclusion criteria
|
|
62
|
+
- exact search strings
|
|
63
|
+
|
|
64
|
+
Minimum useful database set:
|
|
65
|
+
|
|
66
|
+
- PubMed for biomedical and life-sciences literature.
|
|
67
|
+
- arXiv for CS, math, physics, quantitative biology, and preprints.
|
|
68
|
+
- Semantic Scholar or Crossref for broad academic discovery.
|
|
69
|
+
- Domain-specific sources when relevant, such as clinical-trial registries,
|
|
70
|
+
patent databases, standards bodies, or official technical docs.
|
|
71
|
+
|
|
72
|
+
### 3. Search and Log Evidence
|
|
73
|
+
|
|
74
|
+
Keep a search log that makes the review reproducible:
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
| Database | Date searched | Query | Filters | Results | Export |
|
|
78
|
+
| --- | --- | --- | --- | ---: | --- |
|
|
79
|
+
| PubMed | 2026-05-11 | `("CRISPR"[tiab] OR "Cas9"[tiab]) AND "sickle cell"[tiab]` | 2020:2026, English | 86 | PMID list |
|
|
80
|
+
| arXiv | 2026-05-11 | `CRISPR sickle cell gene editing` | q-bio, 2020:2026 | 9 | BibTeX |
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Save raw IDs, URLs, DOIs, abstracts, and notes separately from the final prose.
|
|
84
|
+
|
|
85
|
+
### 4. Deduplicate
|
|
86
|
+
|
|
87
|
+
Deduplicate in this order:
|
|
88
|
+
|
|
89
|
+
1. DOI
|
|
90
|
+
2. PMID or arXiv ID
|
|
91
|
+
3. exact title
|
|
92
|
+
4. normalized title plus first author and year
|
|
93
|
+
|
|
94
|
+
Record how many duplicates were removed.
|
|
95
|
+
|
|
96
|
+
### 5. Screen Sources
|
|
97
|
+
|
|
98
|
+
Screen in stages:
|
|
99
|
+
|
|
100
|
+
1. title
|
|
101
|
+
2. abstract
|
|
102
|
+
3. full text
|
|
103
|
+
|
|
104
|
+
For systematic work, record exclusion reasons:
|
|
105
|
+
|
|
106
|
+
- wrong population
|
|
107
|
+
- wrong intervention
|
|
108
|
+
- wrong outcome
|
|
109
|
+
- not primary research
|
|
110
|
+
- duplicate
|
|
111
|
+
- unavailable full text
|
|
112
|
+
- outside date range
|
|
113
|
+
|
|
114
|
+
### 6. Extract Data
|
|
115
|
+
|
|
116
|
+
Use a structured extraction table:
|
|
117
|
+
|
|
118
|
+
```markdown
|
|
119
|
+
| Study | Design | Population/Data | Method | Comparator | Outcome | Key finding | Limitations |
|
|
120
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
121
|
+
| Author Year | RCT/cohort/review/etc. | sample or corpus | method | baseline | measured outcome | result | caveat |
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
For technical papers, include dataset, benchmark, metric, baseline, and
|
|
125
|
+
reproducibility notes.
|
|
126
|
+
|
|
127
|
+
### 7. Synthesize
|
|
128
|
+
|
|
129
|
+
Group evidence by theme rather than summarizing papers one by one.
|
|
130
|
+
|
|
131
|
+
Useful synthesis lenses:
|
|
132
|
+
|
|
133
|
+
- strongest evidence
|
|
134
|
+
- conflicting evidence
|
|
135
|
+
- methodological weaknesses
|
|
136
|
+
- population or dataset limits
|
|
137
|
+
- recency and replication
|
|
138
|
+
- practical implications
|
|
139
|
+
- unanswered questions
|
|
140
|
+
|
|
141
|
+
Separate claims by confidence:
|
|
142
|
+
|
|
143
|
+
- **High confidence**: replicated, high-quality evidence across sources.
|
|
144
|
+
- **Medium confidence**: plausible but limited by sample, method, or recency.
|
|
145
|
+
- **Low confidence**: early, speculative, single-source, or weakly measured.
|
|
146
|
+
|
|
147
|
+
### 8. Verify Citations
|
|
148
|
+
|
|
149
|
+
Before finalizing:
|
|
150
|
+
|
|
151
|
+
- verify DOI, PMID, arXiv ID, or official URL
|
|
152
|
+
- check author names and publication year
|
|
153
|
+
- do not cite a paper for a claim it does not make
|
|
154
|
+
- mark preprints as preprints
|
|
155
|
+
- distinguish reviews from primary evidence
|
|
156
|
+
|
|
157
|
+
## Output Template
|
|
158
|
+
|
|
159
|
+
```markdown
|
|
160
|
+
# Literature Review: <Topic>
|
|
161
|
+
|
|
162
|
+
Generated: <date>
|
|
163
|
+
Review type: <narrative | scoping | systematic | meta-analysis>
|
|
164
|
+
Search window: <dates>
|
|
165
|
+
Databases: <list>
|
|
166
|
+
|
|
167
|
+
## Research Question
|
|
168
|
+
|
|
169
|
+
## Search Strategy
|
|
170
|
+
|
|
171
|
+
## Inclusion and Exclusion Criteria
|
|
172
|
+
|
|
173
|
+
## Evidence Summary
|
|
174
|
+
|
|
175
|
+
## Thematic Synthesis
|
|
176
|
+
|
|
177
|
+
## Gaps and Limitations
|
|
178
|
+
|
|
179
|
+
## References
|
|
180
|
+
|
|
181
|
+
## Search Log
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Pitfalls
|
|
185
|
+
|
|
186
|
+
- Do not treat search snippets as evidence.
|
|
187
|
+
- Do not mix preprints, reviews, and primary studies without labeling them.
|
|
188
|
+
- Do not omit negative or conflicting findings.
|
|
189
|
+
- Do not claim systematic-review rigor without a reproducible protocol.
|
|
190
|
+
- Do not use a single database for a broad claim unless the scope is explicitly
|
|
191
|
+
limited to that database.
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: llm-trading-agent-security
|
|
3
|
+
description: Security patterns for autonomous trading agents with wallet or transaction authority. Covers prompt injection, spend limits, pre-send simulation, circuit breakers, MEV protection, and key handling.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# LLM Trading Agent Security
|
|
7
|
+
|
|
8
|
+
Autonomous trading agents have a harsher threat model than normal LLM apps: an injection or bad tool path can turn directly into asset loss.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- Building an AI agent that signs and sends transactions
|
|
13
|
+
- Auditing a trading bot or on-chain execution assistant
|
|
14
|
+
- Designing wallet key management for an agent
|
|
15
|
+
- Giving an LLM access to order placement, swaps, or treasury operations
|
|
16
|
+
|
|
17
|
+
## How It Works
|
|
18
|
+
|
|
19
|
+
Layer the defenses. No single check is enough. Treat prompt hygiene, spend policy, simulation, execution limits, and wallet isolation as independent controls.
|
|
20
|
+
|
|
21
|
+
## Examples
|
|
22
|
+
|
|
23
|
+
### Treat prompt injection as a financial attack
|
|
24
|
+
|
|
25
|
+
```python
|
|
26
|
+
import re
|
|
27
|
+
|
|
28
|
+
INJECTION_PATTERNS = [
|
|
29
|
+
r'ignore (previous|all) instructions',
|
|
30
|
+
r'new (task|directive|instruction)',
|
|
31
|
+
r'system prompt',
|
|
32
|
+
r'send .{0,50} to 0x[0-9a-fA-F]{40}',
|
|
33
|
+
r'transfer .{0,50} to',
|
|
34
|
+
r'approve .{0,50} for',
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
def sanitize_onchain_data(text: str) -> str:
|
|
38
|
+
for pattern in INJECTION_PATTERNS:
|
|
39
|
+
if re.search(pattern, text, re.IGNORECASE):
|
|
40
|
+
raise ValueError(f"Potential prompt injection: {text[:100]}")
|
|
41
|
+
return text
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Do not blindly inject token names, pair labels, webhooks, or social feeds into an execution-capable prompt.
|
|
45
|
+
|
|
46
|
+
### Hard spend limits
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
from decimal import Decimal
|
|
50
|
+
|
|
51
|
+
MAX_SINGLE_TX_USD = Decimal("500")
|
|
52
|
+
MAX_DAILY_SPEND_USD = Decimal("2000")
|
|
53
|
+
|
|
54
|
+
class SpendLimitError(Exception):
|
|
55
|
+
pass
|
|
56
|
+
|
|
57
|
+
class SpendLimitGuard:
|
|
58
|
+
def check_and_record(self, usd_amount: Decimal) -> None:
|
|
59
|
+
if usd_amount > MAX_SINGLE_TX_USD:
|
|
60
|
+
raise SpendLimitError(f"Single tx ${usd_amount} exceeds max ${MAX_SINGLE_TX_USD}")
|
|
61
|
+
|
|
62
|
+
daily = self._get_24h_spend()
|
|
63
|
+
if daily + usd_amount > MAX_DAILY_SPEND_USD:
|
|
64
|
+
raise SpendLimitError(f"Daily limit: ${daily} + ${usd_amount} > ${MAX_DAILY_SPEND_USD}")
|
|
65
|
+
|
|
66
|
+
self._record_spend(usd_amount)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Simulate before sending
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
class SlippageError(Exception):
|
|
73
|
+
pass
|
|
74
|
+
|
|
75
|
+
async def safe_execute(self, tx: dict, expected_min_out: int | None = None) -> str:
|
|
76
|
+
sim_result = await self.w3.eth.call(tx)
|
|
77
|
+
|
|
78
|
+
if expected_min_out is None:
|
|
79
|
+
raise ValueError("min_amount_out is required before send")
|
|
80
|
+
|
|
81
|
+
actual_out = decode_uint256(sim_result)
|
|
82
|
+
if actual_out < expected_min_out:
|
|
83
|
+
raise SlippageError(f"Simulation: {actual_out} < {expected_min_out}")
|
|
84
|
+
|
|
85
|
+
signed = self.account.sign_transaction(tx)
|
|
86
|
+
return await self.w3.eth.send_raw_transaction(signed.raw_transaction)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Circuit breaker
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
class TradingCircuitBreaker:
|
|
93
|
+
MAX_CONSECUTIVE_LOSSES = 3
|
|
94
|
+
MAX_HOURLY_LOSS_PCT = 0.05
|
|
95
|
+
|
|
96
|
+
def check(self, portfolio_value: float) -> None:
|
|
97
|
+
if self.consecutive_losses >= self.MAX_CONSECUTIVE_LOSSES:
|
|
98
|
+
self.halt("Too many consecutive losses")
|
|
99
|
+
|
|
100
|
+
if self.hour_start_value <= 0:
|
|
101
|
+
self.halt("Invalid hour_start_value")
|
|
102
|
+
return
|
|
103
|
+
|
|
104
|
+
hourly_pnl = (portfolio_value - self.hour_start_value) / self.hour_start_value
|
|
105
|
+
if hourly_pnl < -self.MAX_HOURLY_LOSS_PCT:
|
|
106
|
+
self.halt(f"Hourly PnL {hourly_pnl:.1%} below threshold")
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Wallet isolation
|
|
110
|
+
|
|
111
|
+
```python
|
|
112
|
+
import os
|
|
113
|
+
from eth_account import Account
|
|
114
|
+
|
|
115
|
+
private_key = os.environ.get("TRADING_WALLET_PRIVATE_KEY")
|
|
116
|
+
if not private_key:
|
|
117
|
+
raise EnvironmentError("TRADING_WALLET_PRIVATE_KEY not set")
|
|
118
|
+
|
|
119
|
+
account = Account.from_key(private_key)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Use a dedicated hot wallet with only the required session funds. Never point the agent at a primary treasury wallet.
|
|
123
|
+
|
|
124
|
+
### MEV and deadline protection
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
import time
|
|
128
|
+
|
|
129
|
+
PRIVATE_RPC = "https://rpc.flashbots.net"
|
|
130
|
+
MAX_SLIPPAGE_BPS = {"stable": 10, "volatile": 50}
|
|
131
|
+
deadline = int(time.time()) + 60
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Pre-Deploy Checklist
|
|
135
|
+
|
|
136
|
+
- External data is sanitized before entering the LLM context
|
|
137
|
+
- Spend limits are enforced independently from model output
|
|
138
|
+
- Transactions are simulated before send
|
|
139
|
+
- `min_amount_out` is mandatory
|
|
140
|
+
- Circuit breakers halt on drawdown or invalid state
|
|
141
|
+
- Keys come from env or a secret manager, never code or logs
|
|
142
|
+
- Private mempool or protected routing is used when appropriate
|
|
143
|
+
- Slippage and deadlines are set per strategy
|
|
144
|
+
- All agent decisions are audit-logged, not just successful sends
|