kodelyth-ecc 1.2.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/.agent/rules/README.md +108 -0
- package/.agent/rules/agents.md +94 -0
- package/.agent/rules/code-review.md +124 -0
- package/.agent/rules/coding-style.md +122 -0
- package/.agent/rules/design-quality.md +63 -0
- package/.agent/rules/development-workflow.md +44 -0
- package/.agent/rules/git-mastery.md +366 -0
- package/.agent/rules/git-workflow.md +24 -0
- package/.agent/rules/hooks.md +25 -0
- package/.agent/rules/kodelyth-always-on.md +63 -0
- package/.agent/rules/kodelyth-quickstart.md +207 -0
- package/.agent/rules/observability.md +390 -0
- package/.agent/rules/patterns.md +50 -0
- package/.agent/rules/performance.md +178 -0
- package/.agent/rules/security.md +58 -0
- package/.agent/rules/smart-debug.md +241 -0
- package/.agent/rules/soul.md +32 -0
- package/.agent/rules/testing.md +46 -0
- package/.agent/skills/api-guardian.md +279 -0
- package/.agent/skills/architect.md +211 -0
- package/.agent/skills/build-error-resolver.md +114 -0
- package/.agent/skills/chief-of-staff.md +151 -0
- package/.agent/skills/code-architect.md +71 -0
- package/.agent/skills/code-explorer.md +69 -0
- package/.agent/skills/code-reviewer.md +237 -0
- package/.agent/skills/code-simplifier.md +47 -0
- package/.agent/skills/comment-analyzer.md +45 -0
- package/.agent/skills/conversation-analyzer.md +52 -0
- package/.agent/skills/cpp-build-resolver.md +90 -0
- package/.agent/skills/cpp-reviewer.md +72 -0
- package/.agent/skills/csharp-reviewer.md +101 -0
- package/.agent/skills/dart-build-resolver.md +201 -0
- package/.agent/skills/database-reviewer.md +91 -0
- package/.agent/skills/debug-detective.md +409 -0
- package/.agent/skills/doc-updater.md +107 -0
- package/.agent/skills/docs-lookup.md +68 -0
- package/.agent/skills/e2e-runner.md +107 -0
- package/.agent/skills/flutter-reviewer.md +243 -0
- package/.agent/skills/gan-evaluator.md +209 -0
- package/.agent/skills/gan-generator.md +131 -0
- package/.agent/skills/gan-planner.md +99 -0
- package/.agent/skills/go-build-resolver.md +94 -0
- package/.agent/skills/go-reviewer.md +76 -0
- package/.agent/skills/harness-optimizer.md +35 -0
- package/.agent/skills/healthcare-reviewer.md +83 -0
- package/.agent/skills/java-build-resolver.md +153 -0
- package/.agent/skills/java-reviewer.md +92 -0
- package/.agent/skills/kodelyth-advisor.md +172 -0
- package/.agent/skills/kotlin-build-resolver.md +118 -0
- package/.agent/skills/kotlin-reviewer.md +159 -0
- package/.agent/skills/loop-operator.md +36 -0
- package/.agent/skills/migration-guide.md +368 -0
- package/.agent/skills/opensource-forker.md +198 -0
- package/.agent/skills/opensource-packager.md +249 -0
- package/.agent/skills/opensource-sanitizer.md +188 -0
- package/.agent/skills/pair-programmer.md +260 -0
- package/.agent/skills/performance-optimizer.md +446 -0
- package/.agent/skills/planner.md +212 -0
- package/.agent/skills/pr-test-analyzer.md +45 -0
- package/.agent/skills/python-reviewer.md +98 -0
- package/.agent/skills/pytorch-build-resolver.md +120 -0
- package/.agent/skills/refactor-cleaner.md +85 -0
- package/.agent/skills/rust-build-resolver.md +148 -0
- package/.agent/skills/rust-reviewer.md +94 -0
- package/.agent/skills/security-reviewer.md +108 -0
- package/.agent/skills/seo-specialist.md +62 -0
- package/.agent/skills/silent-failure-hunter.md +50 -0
- package/.agent/skills/tdd-guide.md +91 -0
- package/.agent/skills/type-design-analyzer.md +41 -0
- package/.agent/skills/typescript-reviewer.md +112 -0
- package/.agent/skills/ux-reviewer.md +483 -0
- package/.agent/workflows/agent-sort.md +23 -0
- package/.agent/workflows/aside.md +164 -0
- package/.agent/workflows/build-fix.md +62 -0
- package/.agent/workflows/checkpoint.md +74 -0
- package/.agent/workflows/claw.md +23 -0
- package/.agent/workflows/code-review.md +289 -0
- package/.agent/workflows/context-budget.md +23 -0
- package/.agent/workflows/cpp-build.md +173 -0
- package/.agent/workflows/cpp-review.md +132 -0
- package/.agent/workflows/cpp-test.md +251 -0
- package/.agent/workflows/devfleet.md +23 -0
- package/.agent/workflows/docs.md +23 -0
- package/.agent/workflows/e2e.md +268 -0
- package/.agent/workflows/eval.md +23 -0
- package/.agent/workflows/evolve.md +178 -0
- package/.agent/workflows/feature-dev.md +49 -0
- package/.agent/workflows/flutter-build.md +164 -0
- package/.agent/workflows/flutter-review.md +116 -0
- package/.agent/workflows/flutter-test.md +144 -0
- package/.agent/workflows/gan-build.md +99 -0
- package/.agent/workflows/gan-design.md +35 -0
- package/.agent/workflows/go-build.md +183 -0
- package/.agent/workflows/go-review.md +148 -0
- package/.agent/workflows/go-test.md +268 -0
- package/.agent/workflows/gradle-build.md +70 -0
- package/.agent/workflows/harness-audit.md +73 -0
- package/.agent/workflows/hookify-configure.md +14 -0
- package/.agent/workflows/hookify-help.md +46 -0
- package/.agent/workflows/hookify-list.md +21 -0
- package/.agent/workflows/hookify.md +50 -0
- package/.agent/workflows/instinct-export.md +66 -0
- package/.agent/workflows/instinct-import.md +114 -0
- package/.agent/workflows/instinct-status.md +59 -0
- package/.agent/workflows/jira.md +106 -0
- package/.agent/workflows/kotlin-build.md +174 -0
- package/.agent/workflows/kotlin-review.md +140 -0
- package/.agent/workflows/kotlin-test.md +312 -0
- package/.agent/workflows/learn-eval.md +116 -0
- package/.agent/workflows/learn.md +70 -0
- package/.agent/workflows/loop-start.md +32 -0
- package/.agent/workflows/loop-status.md +24 -0
- package/.agent/workflows/model-route.md +26 -0
- package/.agent/workflows/multi-backend.md +158 -0
- package/.agent/workflows/multi-execute.md +315 -0
- package/.agent/workflows/multi-frontend.md +158 -0
- package/.agent/workflows/multi-plan.md +268 -0
- package/.agent/workflows/multi-workflow.md +191 -0
- package/.agent/workflows/orchestrate.md +135 -0
- package/.agent/workflows/plan.md +117 -0
- package/.agent/workflows/pm2.md +272 -0
- package/.agent/workflows/projects.md +39 -0
- package/.agent/workflows/promote.md +41 -0
- package/.agent/workflows/prompt-optimize.md +23 -0
- package/.agent/workflows/prp-commit.md +112 -0
- package/.agent/workflows/prp-implement.md +385 -0
- package/.agent/workflows/prp-plan.md +502 -0
- package/.agent/workflows/prp-pr.md +184 -0
- package/.agent/workflows/prp-prd.md +447 -0
- package/.agent/workflows/prune.md +31 -0
- package/.agent/workflows/python-review.md +297 -0
- package/.agent/workflows/quality-gate.md +29 -0
- package/.agent/workflows/refactor-clean.md +80 -0
- package/.agent/workflows/resume-session.md +156 -0
- package/.agent/workflows/review-pr.md +37 -0
- package/.agent/workflows/rules-distill.md +20 -0
- package/.agent/workflows/rust-build.md +187 -0
- package/.agent/workflows/rust-review.md +142 -0
- package/.agent/workflows/rust-test.md +308 -0
- package/.agent/workflows/santa-loop.md +175 -0
- package/.agent/workflows/save-session.md +275 -0
- package/.agent/workflows/sessions.md +333 -0
- package/.agent/workflows/setup-pm.md +80 -0
- package/.agent/workflows/skill-create.md +174 -0
- package/.agent/workflows/skill-health.md +54 -0
- package/.agent/workflows/tdd.md +231 -0
- package/.agent/workflows/test-coverage.md +69 -0
- package/.agent/workflows/update-codemaps.md +72 -0
- package/.agent/workflows/update-docs.md +84 -0
- package/.agent/workflows/verify.md +23 -0
- package/.github/workflows/ci.yml +46 -0
- package/.github/workflows/publish.yml +41 -0
- package/AGENTS.md +209 -0
- package/CHANGELOG.md +236 -0
- package/CLAUDE.md +90 -0
- package/CONTRIBUTING.md +255 -0
- package/KODELYTH.md +74 -0
- package/LICENSE +21 -0
- package/README.md +414 -0
- package/SECURITY.md +77 -0
- package/SOUL.md +32 -0
- package/VERSION +1 -0
- package/agents/api-guardian.md +279 -0
- package/agents/architect.md +211 -0
- package/agents/build-error-resolver.md +114 -0
- package/agents/chief-of-staff.md +151 -0
- package/agents/code-architect.md +71 -0
- package/agents/code-explorer.md +69 -0
- package/agents/code-reviewer.md +237 -0
- package/agents/code-simplifier.md +47 -0
- package/agents/comment-analyzer.md +45 -0
- package/agents/conversation-analyzer.md +52 -0
- package/agents/cpp-build-resolver.md +90 -0
- package/agents/cpp-reviewer.md +72 -0
- package/agents/csharp-reviewer.md +101 -0
- package/agents/dart-build-resolver.md +201 -0
- package/agents/database-reviewer.md +91 -0
- package/agents/debug-detective.md +409 -0
- package/agents/doc-updater.md +107 -0
- package/agents/docs-lookup.md +68 -0
- package/agents/e2e-runner.md +107 -0
- package/agents/flutter-reviewer.md +243 -0
- package/agents/gan-evaluator.md +209 -0
- package/agents/gan-generator.md +131 -0
- package/agents/gan-planner.md +99 -0
- package/agents/go-build-resolver.md +94 -0
- package/agents/go-reviewer.md +76 -0
- package/agents/harness-optimizer.md +35 -0
- package/agents/healthcare-reviewer.md +83 -0
- package/agents/java-build-resolver.md +153 -0
- package/agents/java-reviewer.md +92 -0
- package/agents/kodelyth-advisor.md +172 -0
- package/agents/kotlin-build-resolver.md +118 -0
- package/agents/kotlin-reviewer.md +159 -0
- package/agents/loop-operator.md +36 -0
- package/agents/migration-guide.md +368 -0
- package/agents/opensource-forker.md +198 -0
- package/agents/opensource-packager.md +249 -0
- package/agents/opensource-sanitizer.md +188 -0
- package/agents/pair-programmer.md +260 -0
- package/agents/performance-optimizer.md +446 -0
- package/agents/planner.md +212 -0
- package/agents/pr-test-analyzer.md +45 -0
- package/agents/python-reviewer.md +98 -0
- package/agents/pytorch-build-resolver.md +120 -0
- package/agents/refactor-cleaner.md +85 -0
- package/agents/rust-build-resolver.md +148 -0
- package/agents/rust-reviewer.md +94 -0
- package/agents/security-reviewer.md +108 -0
- package/agents/seo-specialist.md +62 -0
- package/agents/silent-failure-hunter.md +50 -0
- package/agents/tdd-guide.md +91 -0
- package/agents/type-design-analyzer.md +41 -0
- package/agents/typescript-reviewer.md +112 -0
- package/agents/ux-reviewer.md +483 -0
- package/bin/kodelyth-ecc.js +87 -0
- package/commands/agent-sort.md +23 -0
- package/commands/aside.md +164 -0
- package/commands/build-fix.md +62 -0
- package/commands/checkpoint.md +74 -0
- package/commands/claw.md +23 -0
- package/commands/code-review.md +289 -0
- package/commands/context-budget.md +23 -0
- package/commands/cpp-build.md +173 -0
- package/commands/cpp-review.md +132 -0
- package/commands/cpp-test.md +251 -0
- package/commands/devfleet.md +23 -0
- package/commands/docs.md +23 -0
- package/commands/e2e.md +268 -0
- package/commands/eval.md +23 -0
- package/commands/evolve.md +178 -0
- package/commands/feature-dev.md +49 -0
- package/commands/flutter-build.md +164 -0
- package/commands/flutter-review.md +116 -0
- package/commands/flutter-test.md +144 -0
- package/commands/gan-build.md +99 -0
- package/commands/gan-design.md +35 -0
- package/commands/go-build.md +183 -0
- package/commands/go-review.md +148 -0
- package/commands/go-test.md +268 -0
- package/commands/gradle-build.md +70 -0
- package/commands/harness-audit.md +73 -0
- package/commands/hookify-configure.md +14 -0
- package/commands/hookify-help.md +46 -0
- package/commands/hookify-list.md +21 -0
- package/commands/hookify.md +50 -0
- package/commands/instinct-export.md +66 -0
- package/commands/instinct-import.md +114 -0
- package/commands/instinct-status.md +59 -0
- package/commands/jira.md +106 -0
- package/commands/kotlin-build.md +174 -0
- package/commands/kotlin-review.md +140 -0
- package/commands/kotlin-test.md +312 -0
- package/commands/learn-eval.md +116 -0
- package/commands/learn.md +70 -0
- package/commands/loop-start.md +32 -0
- package/commands/loop-status.md +24 -0
- package/commands/model-route.md +26 -0
- package/commands/multi-backend.md +158 -0
- package/commands/multi-execute.md +315 -0
- package/commands/multi-frontend.md +158 -0
- package/commands/multi-plan.md +268 -0
- package/commands/multi-workflow.md +191 -0
- package/commands/orchestrate.md +135 -0
- package/commands/plan.md +117 -0
- package/commands/pm2.md +272 -0
- package/commands/projects.md +39 -0
- package/commands/promote.md +41 -0
- package/commands/prompt-optimize.md +23 -0
- package/commands/prp-commit.md +112 -0
- package/commands/prp-implement.md +385 -0
- package/commands/prp-plan.md +502 -0
- package/commands/prp-pr.md +184 -0
- package/commands/prp-prd.md +447 -0
- package/commands/prune.md +31 -0
- package/commands/python-review.md +297 -0
- package/commands/quality-gate.md +29 -0
- package/commands/refactor-clean.md +80 -0
- package/commands/resume-session.md +156 -0
- package/commands/review-pr.md +37 -0
- package/commands/rules-distill.md +20 -0
- package/commands/rust-build.md +187 -0
- package/commands/rust-review.md +142 -0
- package/commands/rust-test.md +308 -0
- package/commands/santa-loop.md +175 -0
- package/commands/save-session.md +275 -0
- package/commands/sessions.md +333 -0
- package/commands/setup-pm.md +80 -0
- package/commands/skill-create.md +174 -0
- package/commands/skill-health.md +54 -0
- package/commands/tdd.md +231 -0
- package/commands/test-coverage.md +69 -0
- package/commands/update-codemaps.md +72 -0
- package/commands/update-docs.md +84 -0
- package/commands/verify.md +23 -0
- package/contexts/dev.md +20 -0
- package/contexts/research.md +26 -0
- package/contexts/review.md +22 -0
- package/dashboard/lib/agent-tracker.js +366 -0
- package/dashboard/lib/aggregator.js +118 -0
- package/dashboard/lib/cost-calculator.js +50 -0
- package/dashboard/lib/platform-detector.js +89 -0
- package/dashboard/lib/readers/antigravity-reader.js +113 -0
- package/dashboard/lib/readers/claude-reader.js +135 -0
- package/dashboard/lib/readers/codex-reader.js +192 -0
- package/dashboard/lib/readers/cursor-reader.js +135 -0
- package/dashboard/lib/readers/opencode-reader.js +201 -0
- package/dashboard/lib/readers/windsurf-reader.js +126 -0
- package/dashboard/package.json +24 -0
- package/dashboard/public/index.html +1147 -0
- package/dashboard/server.js +119 -0
- package/hooks/README.md +220 -0
- package/hooks/hooks.json +420 -0
- package/install.ps1 +190 -0
- package/install.sh +583 -0
- package/package.json +33 -0
- package/rules/README.md +111 -0
- package/rules/common/agents.md +50 -0
- package/rules/common/code-review.md +124 -0
- package/rules/common/coding-style.md +122 -0
- package/rules/common/development-workflow.md +44 -0
- package/rules/common/git-workflow.md +24 -0
- package/rules/common/hooks.md +30 -0
- package/rules/common/patterns.md +31 -0
- package/rules/common/performance.md +178 -0
- package/rules/common/security.md +29 -0
- package/rules/common/testing.md +57 -0
- package/rules/cpp/coding-style.md +44 -0
- package/rules/cpp/hooks.md +39 -0
- package/rules/cpp/patterns.md +51 -0
- package/rules/cpp/security.md +51 -0
- package/rules/cpp/testing.md +44 -0
- package/rules/csharp/coding-style.md +72 -0
- package/rules/csharp/hooks.md +25 -0
- package/rules/csharp/patterns.md +50 -0
- package/rules/csharp/security.md +58 -0
- package/rules/csharp/testing.md +46 -0
- package/rules/dart/coding-style.md +159 -0
- package/rules/dart/hooks.md +66 -0
- package/rules/dart/patterns.md +261 -0
- package/rules/dart/security.md +135 -0
- package/rules/dart/testing.md +215 -0
- package/rules/golang/coding-style.md +32 -0
- package/rules/golang/hooks.md +17 -0
- package/rules/golang/patterns.md +45 -0
- package/rules/golang/security.md +34 -0
- package/rules/golang/testing.md +31 -0
- package/rules/java/coding-style.md +114 -0
- package/rules/java/hooks.md +18 -0
- package/rules/java/patterns.md +146 -0
- package/rules/java/security.md +100 -0
- package/rules/java/testing.md +131 -0
- package/rules/kotlin/coding-style.md +86 -0
- package/rules/kotlin/hooks.md +17 -0
- package/rules/kotlin/patterns.md +146 -0
- package/rules/kotlin/security.md +82 -0
- package/rules/kotlin/testing.md +128 -0
- package/rules/perl/coding-style.md +46 -0
- package/rules/perl/hooks.md +22 -0
- package/rules/perl/patterns.md +76 -0
- package/rules/perl/security.md +69 -0
- package/rules/perl/testing.md +54 -0
- package/rules/php/coding-style.md +40 -0
- package/rules/php/hooks.md +24 -0
- package/rules/php/patterns.md +33 -0
- package/rules/php/security.md +37 -0
- package/rules/php/testing.md +39 -0
- package/rules/python/coding-style.md +42 -0
- package/rules/python/hooks.md +19 -0
- package/rules/python/patterns.md +39 -0
- package/rules/python/security.md +30 -0
- package/rules/python/testing.md +38 -0
- package/rules/rust/coding-style.md +151 -0
- package/rules/rust/hooks.md +16 -0
- package/rules/rust/patterns.md +168 -0
- package/rules/rust/security.md +141 -0
- package/rules/rust/testing.md +154 -0
- package/rules/swift/coding-style.md +47 -0
- package/rules/swift/hooks.md +20 -0
- package/rules/swift/patterns.md +66 -0
- package/rules/swift/security.md +33 -0
- package/rules/swift/testing.md +45 -0
- package/rules/typescript/coding-style.md +199 -0
- package/rules/typescript/hooks.md +22 -0
- package/rules/typescript/patterns.md +52 -0
- package/rules/typescript/security.md +28 -0
- package/rules/typescript/testing.md +18 -0
- package/rules/web/coding-style.md +96 -0
- package/rules/web/design-quality.md +63 -0
- package/rules/web/hooks.md +120 -0
- package/rules/web/patterns.md +79 -0
- package/rules/web/performance.md +64 -0
- package/rules/web/security.md +57 -0
- package/rules/web/testing.md +55 -0
- package/rules/zh/README.md +108 -0
- package/rules/zh/agents.md +50 -0
- package/rules/zh/code-review.md +124 -0
- package/rules/zh/coding-style.md +48 -0
- package/rules/zh/development-workflow.md +44 -0
- package/rules/zh/git-workflow.md +24 -0
- package/rules/zh/hooks.md +30 -0
- package/rules/zh/patterns.md +31 -0
- package/rules/zh/performance.md +55 -0
- package/rules/zh/security.md +29 -0
- package/rules/zh/testing.md +29 -0
- package/scripts/agent-tracker-hook.js +81 -0
- package/scripts/build-opencode.js +26 -0
- package/scripts/catalog.js +186 -0
- package/scripts/ci/catalog.js +648 -0
- package/scripts/ci/check-unicode-safety.js +246 -0
- package/scripts/ci/validate-agents.js +81 -0
- package/scripts/ci/validate-commands.js +136 -0
- package/scripts/ci/validate-hooks.js +239 -0
- package/scripts/ci/validate-install-manifests.js +214 -0
- package/scripts/ci/validate-no-personal-paths.js +63 -0
- package/scripts/ci/validate-rules.js +81 -0
- package/scripts/ci/validate-skills.js +56 -0
- package/scripts/claw.js +468 -0
- package/scripts/codemaps/generate.ts +330 -0
- package/scripts/codex/check-codex-global-state.sh +250 -0
- package/scripts/codex/install-global-git-hooks.sh +65 -0
- package/scripts/codex/merge-codex-config.js +317 -0
- package/scripts/codex/merge-mcp-config.js +335 -0
- package/scripts/codex-git-hooks/pre-commit +77 -0
- package/scripts/codex-git-hooks/pre-push +124 -0
- package/scripts/doctor.js +111 -0
- package/scripts/ecc.js +216 -0
- package/scripts/gan-harness.sh +299 -0
- package/scripts/harness-audit.js +735 -0
- package/scripts/hooks/auto-tmux-dev.js +88 -0
- package/scripts/hooks/branch-name-check.js +163 -0
- package/scripts/hooks/check-console-log.js +71 -0
- package/scripts/hooks/check-hook-enabled.js +12 -0
- package/scripts/hooks/config-protection.js +140 -0
- package/scripts/hooks/cost-tracker.js +78 -0
- package/scripts/hooks/design-quality-check.js +131 -0
- package/scripts/hooks/desktop-notify.js +168 -0
- package/scripts/hooks/doc-file-warning.js +90 -0
- package/scripts/hooks/evaluate-session.js +100 -0
- package/scripts/hooks/governance-capture.js +334 -0
- package/scripts/hooks/mcp-health-check.js +619 -0
- package/scripts/hooks/post-bash-build-complete.js +27 -0
- package/scripts/hooks/post-bash-command-log.js +73 -0
- package/scripts/hooks/post-bash-pr-created.js +36 -0
- package/scripts/hooks/post-edit-accumulator.js +78 -0
- package/scripts/hooks/post-edit-console-warn.js +54 -0
- package/scripts/hooks/post-edit-format.js +109 -0
- package/scripts/hooks/post-edit-typecheck.js +96 -0
- package/scripts/hooks/pre-bash-commit-quality.js +405 -0
- package/scripts/hooks/pre-bash-dev-server-block.js +187 -0
- package/scripts/hooks/pre-bash-git-push-reminder.js +28 -0
- package/scripts/hooks/pre-bash-tmux-reminder.js +33 -0
- package/scripts/hooks/pre-compact.js +48 -0
- package/scripts/hooks/pre-write-doc-warn.js +9 -0
- package/scripts/hooks/quality-gate.js +168 -0
- package/scripts/hooks/run-with-flags-shell.sh +36 -0
- package/scripts/hooks/run-with-flags.js +181 -0
- package/scripts/hooks/session-end-marker.js +67 -0
- package/scripts/hooks/session-end.js +301 -0
- package/scripts/hooks/session-start-bootstrap.js +161 -0
- package/scripts/hooks/session-start.js +492 -0
- package/scripts/hooks/smart-suggest.js +138 -0
- package/scripts/hooks/stop-format-typecheck.js +209 -0
- package/scripts/hooks/suggest-compact.js +80 -0
- package/scripts/hooks/test-reminder.js +128 -0
- package/scripts/install-apply.js +150 -0
- package/scripts/install-plan.js +266 -0
- package/scripts/lib/agent-compress.js +244 -0
- package/scripts/lib/hook-flags.js +74 -0
- package/scripts/lib/inspection.js +212 -0
- package/scripts/lib/install/apply.js +265 -0
- package/scripts/lib/install/config.js +89 -0
- package/scripts/lib/install/request.js +120 -0
- package/scripts/lib/install/runtime.js +54 -0
- package/scripts/lib/install-executor.js +672 -0
- package/scripts/lib/install-lifecycle.js +1226 -0
- package/scripts/lib/install-manifests.js +551 -0
- package/scripts/lib/install-state.js +313 -0
- package/scripts/lib/install-targets/antigravity-project.js +85 -0
- package/scripts/lib/install-targets/claude-home.js +10 -0
- package/scripts/lib/install-targets/codebuddy-project.js +50 -0
- package/scripts/lib/install-targets/codex-home.js +10 -0
- package/scripts/lib/install-targets/cursor-project.js +50 -0
- package/scripts/lib/install-targets/gemini-project.js +10 -0
- package/scripts/lib/install-targets/helpers.js +340 -0
- package/scripts/lib/install-targets/opencode-home.js +10 -0
- package/scripts/lib/install-targets/registry.js +70 -0
- package/scripts/lib/mcp-config.js +56 -0
- package/scripts/lib/observer-sessions.js +175 -0
- package/scripts/lib/orchestration-session.js +299 -0
- package/scripts/lib/package-manager.d.ts +119 -0
- package/scripts/lib/package-manager.js +431 -0
- package/scripts/lib/project-detect.js +428 -0
- package/scripts/lib/resolve-ecc-root.js +118 -0
- package/scripts/lib/resolve-formatter.js +185 -0
- package/scripts/lib/session-adapters/canonical-session.js +531 -0
- package/scripts/lib/session-adapters/claude-history.js +160 -0
- package/scripts/lib/session-adapters/dmux-tmux.js +90 -0
- package/scripts/lib/session-adapters/registry.js +127 -0
- package/scripts/lib/session-aliases.d.ts +136 -0
- package/scripts/lib/session-aliases.js +481 -0
- package/scripts/lib/session-manager.d.ts +132 -0
- package/scripts/lib/session-manager.js +533 -0
- package/scripts/lib/shell-split.js +86 -0
- package/scripts/lib/skill-evolution/dashboard.js +401 -0
- package/scripts/lib/skill-evolution/health.js +263 -0
- package/scripts/lib/skill-evolution/index.js +20 -0
- package/scripts/lib/skill-evolution/provenance.js +187 -0
- package/scripts/lib/skill-evolution/tracker.js +146 -0
- package/scripts/lib/skill-evolution/versioning.js +237 -0
- package/scripts/lib/skill-improvement/amendify.js +89 -0
- package/scripts/lib/skill-improvement/evaluate.js +59 -0
- package/scripts/lib/skill-improvement/health.js +118 -0
- package/scripts/lib/skill-improvement/observations.js +108 -0
- package/scripts/lib/state-store/index.js +191 -0
- package/scripts/lib/state-store/migrations.js +178 -0
- package/scripts/lib/state-store/queries.js +697 -0
- package/scripts/lib/state-store/schema.js +92 -0
- package/scripts/lib/tmux-worktree-orchestrator.js +598 -0
- package/scripts/lib/utils.d.ts +196 -0
- package/scripts/lib/utils.js +629 -0
- package/scripts/list-installed.js +91 -0
- package/scripts/orchestrate-codex-worker.sh +107 -0
- package/scripts/orchestrate-worktrees.js +108 -0
- package/scripts/orchestration-status.js +62 -0
- package/scripts/release.sh +83 -0
- package/scripts/repair.js +98 -0
- package/scripts/session-inspect.js +150 -0
- package/scripts/sessions-cli.js +178 -0
- package/scripts/setup-package-manager.js +204 -0
- package/scripts/skill-create-output.js +244 -0
- package/scripts/skills-health.js +132 -0
- package/scripts/status.js +177 -0
- package/scripts/sync-ecc-to-codex.sh +534 -0
- package/scripts/uninstall.js +97 -0
- package/skills/agent-eval/SKILL.md +145 -0
- package/skills/agent-harness-construction/SKILL.md +73 -0
- package/skills/agent-introspection-debugging/SKILL.md +153 -0
- package/skills/agent-payment-x402/SKILL.md +178 -0
- package/skills/agent-sort/SKILL.md +215 -0
- package/skills/agentic-engineering/SKILL.md +63 -0
- package/skills/ai-first-engineering/SKILL.md +51 -0
- package/skills/ai-regression-testing/SKILL.md +385 -0
- package/skills/android-clean-architecture/SKILL.md +339 -0
- package/skills/api-connector-builder/SKILL.md +121 -0
- package/skills/api-design/SKILL.md +523 -0
- package/skills/architecture-decision-records/SKILL.md +179 -0
- package/skills/article-writing/SKILL.md +79 -0
- package/skills/automation-audit-ops/SKILL.md +142 -0
- package/skills/autonomous-agent-harness/SKILL.md +267 -0
- package/skills/autonomous-loops/SKILL.md +610 -0
- package/skills/backend-patterns/SKILL.md +598 -0
- package/skills/benchmark/SKILL.md +93 -0
- package/skills/blueprint/SKILL.md +105 -0
- package/skills/brand-voice/SKILL.md +97 -0
- package/skills/brand-voice/references/voice-profile-schema.md +55 -0
- package/skills/browser-qa/SKILL.md +87 -0
- package/skills/bun-runtime/SKILL.md +84 -0
- package/skills/canary-watch/SKILL.md +99 -0
- package/skills/carrier-relationship-management/SKILL.md +212 -0
- package/skills/ck/SKILL.md +147 -0
- package/skills/ck/commands/forget.mjs +44 -0
- package/skills/ck/commands/info.mjs +24 -0
- package/skills/ck/commands/init.mjs +143 -0
- package/skills/ck/commands/list.mjs +40 -0
- package/skills/ck/commands/migrate.mjs +202 -0
- package/skills/ck/commands/resume.mjs +36 -0
- package/skills/ck/commands/save.mjs +210 -0
- package/skills/ck/commands/shared.mjs +387 -0
- package/skills/ck/hooks/session-start.mjs +224 -0
- package/skills/claude-api/SKILL.md +337 -0
- package/skills/claude-devfleet/SKILL.md +103 -0
- package/skills/click-path-audit/SKILL.md +244 -0
- package/skills/clickhouse-io/SKILL.md +439 -0
- package/skills/code-tour/SKILL.md +236 -0
- package/skills/codebase-onboarding/SKILL.md +233 -0
- package/skills/coding-standards/SKILL.md +549 -0
- package/skills/compose-multiplatform-patterns/SKILL.md +299 -0
- package/skills/configure-ecc/SKILL.md +367 -0
- package/skills/connections-optimizer/SKILL.md +189 -0
- package/skills/content-engine/SKILL.md +131 -0
- package/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/skills/context-budget/SKILL.md +135 -0
- package/skills/continuous-agent-loop/SKILL.md +45 -0
- package/skills/continuous-learning/SKILL.md +123 -0
- package/skills/continuous-learning/config.json +18 -0
- package/skills/continuous-learning/evaluate-session.sh +69 -0
- package/skills/continuous-learning-v2/SKILL.md +365 -0
- package/skills/continuous-learning-v2/agents/observer-loop.sh +271 -0
- package/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/skills/continuous-learning-v2/agents/start-observer.sh +244 -0
- package/skills/continuous-learning-v2/config.json +8 -0
- package/skills/continuous-learning-v2/hooks/observe.sh +428 -0
- package/skills/continuous-learning-v2/scripts/detect-project.sh +228 -0
- package/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
- package/skills/continuous-learning-v2/scripts/test_parse_instinct.py +984 -0
- package/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/skills/council/SKILL.md +203 -0
- package/skills/cpp-coding-standards/SKILL.md +723 -0
- package/skills/cpp-testing/SKILL.md +324 -0
- package/skills/crosspost/SKILL.md +111 -0
- package/skills/csharp-testing/SKILL.md +321 -0
- package/skills/customer-billing-ops/SKILL.md +140 -0
- package/skills/customs-trade-compliance/SKILL.md +263 -0
- package/skills/dart-flutter-patterns/SKILL.md +563 -0
- package/skills/dashboard-builder/SKILL.md +109 -0
- package/skills/data-scraper-agent/SKILL.md +764 -0
- package/skills/database-migrations/SKILL.md +429 -0
- package/skills/deep-research/SKILL.md +155 -0
- package/skills/defi-amm-security/SKILL.md +160 -0
- package/skills/deployment-patterns/SKILL.md +427 -0
- package/skills/design-system/SKILL.md +82 -0
- package/skills/django-patterns/SKILL.md +734 -0
- package/skills/django-security/SKILL.md +593 -0
- package/skills/django-tdd/SKILL.md +729 -0
- package/skills/django-verification/SKILL.md +469 -0
- package/skills/dmux-workflows/SKILL.md +191 -0
- package/skills/docker-patterns/SKILL.md +364 -0
- package/skills/documentation-lookup/SKILL.md +90 -0
- package/skills/dotnet-patterns/SKILL.md +321 -0
- package/skills/e2e-testing/SKILL.md +326 -0
- package/skills/ecc-tools-cost-audit/SKILL.md +160 -0
- package/skills/email-ops/SKILL.md +121 -0
- package/skills/energy-procurement/SKILL.md +228 -0
- package/skills/enterprise-agent-ops/SKILL.md +50 -0
- package/skills/eval-harness/SKILL.md +270 -0
- package/skills/evm-token-decimals/SKILL.md +130 -0
- package/skills/exa-search/SKILL.md +103 -0
- package/skills/fal-ai-media/SKILL.md +284 -0
- package/skills/finance-billing-ops/SKILL.md +127 -0
- package/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/skills/foundation-models-on-device/SKILL.md +243 -0
- package/skills/frontend-design/SKILL.md +145 -0
- package/skills/frontend-patterns/SKILL.md +642 -0
- package/skills/frontend-slides/SKILL.md +184 -0
- package/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/skills/gan-style-harness/SKILL.md +278 -0
- package/skills/git-mastery/SKILL.md +366 -0
- package/skills/git-workflow/SKILL.md +715 -0
- package/skills/github-ops/SKILL.md +144 -0
- package/skills/golang-patterns/SKILL.md +674 -0
- package/skills/golang-testing/SKILL.md +720 -0
- package/skills/google-workspace-ops/SKILL.md +95 -0
- package/skills/healthcare-cdss-patterns/SKILL.md +245 -0
- package/skills/healthcare-emr-patterns/SKILL.md +159 -0
- package/skills/healthcare-eval-harness/SKILL.md +207 -0
- package/skills/healthcare-phi-compliance/SKILL.md +145 -0
- package/skills/hexagonal-architecture/SKILL.md +276 -0
- package/skills/hipaa-compliance/SKILL.md +78 -0
- package/skills/hookify-rules/SKILL.md +128 -0
- package/skills/inventory-demand-planning/SKILL.md +247 -0
- package/skills/investor-materials/SKILL.md +96 -0
- package/skills/investor-outreach/SKILL.md +91 -0
- package/skills/iterative-retrieval/SKILL.md +211 -0
- package/skills/java-coding-standards/SKILL.md +147 -0
- package/skills/jira-integration/SKILL.md +293 -0
- package/skills/jpa-patterns/SKILL.md +151 -0
- package/skills/knowledge-ops/SKILL.md +154 -0
- package/skills/kodelyth-quickstart/SKILL.md +207 -0
- package/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/skills/kotlin-patterns/SKILL.md +711 -0
- package/skills/kotlin-testing/SKILL.md +824 -0
- package/skills/laravel-patterns/SKILL.md +415 -0
- package/skills/laravel-plugin-discovery/SKILL.md +229 -0
- package/skills/laravel-security/SKILL.md +285 -0
- package/skills/laravel-tdd/SKILL.md +283 -0
- package/skills/laravel-verification/SKILL.md +179 -0
- package/skills/lead-intelligence/SKILL.md +321 -0
- package/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/skills/lead-intelligence/agents/signal-scorer.md +60 -0
- package/skills/liquid-glass-design/SKILL.md +279 -0
- package/skills/llm-trading-agent-security/SKILL.md +146 -0
- package/skills/logistics-exception-management/SKILL.md +222 -0
- package/skills/manim-video/SKILL.md +89 -0
- package/skills/manim-video/assets/network_graph_scene.py +52 -0
- package/skills/market-research/SKILL.md +75 -0
- package/skills/mcp-server-patterns/SKILL.md +67 -0
- package/skills/messages-ops/SKILL.md +104 -0
- package/skills/nanoclaw-repl/SKILL.md +33 -0
- package/skills/nestjs-patterns/SKILL.md +230 -0
- package/skills/nextjs-turbopack/SKILL.md +44 -0
- package/skills/nodejs-keccak256/SKILL.md +102 -0
- package/skills/nutrient-document-processing/SKILL.md +167 -0
- package/skills/nuxt4-patterns/SKILL.md +100 -0
- package/skills/observability/SKILL.md +390 -0
- package/skills/openclaw-persona-forge/SKILL.md +296 -0
- package/skills/openclaw-persona-forge/gacha.py +224 -0
- package/skills/openclaw-persona-forge/gacha.sh +5 -0
- package/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/skills/openclaw-persona-forge/references/error-handling.md +53 -0
- package/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/skills/openclaw-persona-forge/references/naming-system.md +39 -0
- package/skills/openclaw-persona-forge/references/output-template.md +166 -0
- package/skills/opensource-pipeline/SKILL.md +255 -0
- package/skills/perl-patterns/SKILL.md +504 -0
- package/skills/perl-security/SKILL.md +503 -0
- package/skills/perl-testing/SKILL.md +475 -0
- package/skills/plankton-code-quality/SKILL.md +236 -0
- package/skills/postgres-patterns/SKILL.md +147 -0
- package/skills/product-capability/SKILL.md +141 -0
- package/skills/product-lens/SKILL.md +92 -0
- package/skills/production-scheduling/SKILL.md +238 -0
- package/skills/project-flow-ops/SKILL.md +111 -0
- package/skills/prompt-optimizer/SKILL.md +397 -0
- package/skills/python-patterns/SKILL.md +750 -0
- package/skills/python-testing/SKILL.md +816 -0
- package/skills/pytorch-patterns/SKILL.md +396 -0
- package/skills/quality-nonconformance/SKILL.md +260 -0
- package/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
- package/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/skills/remotion-video-creation/SKILL.md +43 -0
- package/skills/remotion-video-creation/rules/3d.md +86 -0
- package/skills/remotion-video-creation/rules/animations.md +29 -0
- package/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/skills/remotion-video-creation/rules/assets.md +78 -0
- package/skills/remotion-video-creation/rules/audio.md +172 -0
- package/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/skills/remotion-video-creation/rules/can-decode.md +75 -0
- package/skills/remotion-video-creation/rules/charts.md +58 -0
- package/skills/remotion-video-creation/rules/compositions.md +146 -0
- package/skills/remotion-video-creation/rules/display-captions.md +126 -0
- package/skills/remotion-video-creation/rules/extract-frames.md +229 -0
- package/skills/remotion-video-creation/rules/fonts.md +152 -0
- package/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/skills/remotion-video-creation/rules/gifs.md +138 -0
- package/skills/remotion-video-creation/rules/images.md +130 -0
- package/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/skills/remotion-video-creation/rules/lottie.md +67 -0
- package/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/skills/remotion-video-creation/rules/measuring-text.md +143 -0
- package/skills/remotion-video-creation/rules/sequencing.md +106 -0
- package/skills/remotion-video-creation/rules/tailwind.md +11 -0
- package/skills/remotion-video-creation/rules/text-animations.md +20 -0
- package/skills/remotion-video-creation/rules/timing.md +179 -0
- package/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/skills/remotion-video-creation/rules/transitions.md +122 -0
- package/skills/remotion-video-creation/rules/trimming.md +52 -0
- package/skills/remotion-video-creation/rules/videos.md +171 -0
- package/skills/repo-scan/SKILL.md +78 -0
- package/skills/research-ops/SKILL.md +112 -0
- package/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/skills/rules-distill/SKILL.md +264 -0
- package/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/skills/rust-patterns/SKILL.md +499 -0
- package/skills/rust-testing/SKILL.md +500 -0
- package/skills/safety-guard/SKILL.md +75 -0
- package/skills/santa-method/SKILL.md +306 -0
- package/skills/search-first/SKILL.md +161 -0
- package/skills/security-bounty-hunter/SKILL.md +99 -0
- package/skills/security-review/SKILL.md +495 -0
- package/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/skills/security-scan/SKILL.md +165 -0
- package/skills/seo/SKILL.md +154 -0
- package/skills/skill-comply/SKILL.md +58 -0
- package/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
- package/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
- package/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
- package/skills/skill-comply/prompts/classifier.md +24 -0
- package/skills/skill-comply/prompts/scenario_generator.md +62 -0
- package/skills/skill-comply/prompts/spec_generator.md +42 -0
- package/skills/skill-comply/pyproject.toml +15 -0
- package/skills/skill-comply/scripts/__init__.py +0 -0
- package/skills/skill-comply/scripts/classifier.py +85 -0
- package/skills/skill-comply/scripts/grader.py +122 -0
- package/skills/skill-comply/scripts/parser.py +107 -0
- package/skills/skill-comply/scripts/report.py +170 -0
- package/skills/skill-comply/scripts/run.py +127 -0
- package/skills/skill-comply/scripts/runner.py +161 -0
- package/skills/skill-comply/scripts/scenario_generator.py +70 -0
- package/skills/skill-comply/scripts/spec_generator.py +72 -0
- package/skills/skill-comply/scripts/utils.py +13 -0
- package/skills/skill-comply/tests/test_grader.py +137 -0
- package/skills/skill-comply/tests/test_parser.py +90 -0
- package/skills/skill-stocktake/SKILL.md +193 -0
- package/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/skills/smart-debug/SKILL.md +241 -0
- package/skills/social-graph-ranker/SKILL.md +154 -0
- package/skills/springboot-patterns/SKILL.md +314 -0
- package/skills/springboot-security/SKILL.md +272 -0
- package/skills/springboot-tdd/SKILL.md +158 -0
- package/skills/springboot-verification/SKILL.md +231 -0
- package/skills/strategic-compact/SKILL.md +131 -0
- package/skills/strategic-compact/suggest-compact.sh +54 -0
- package/skills/swift-actor-persistence/SKILL.md +143 -0
- package/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/skills/swift-protocol-di-testing/SKILL.md +190 -0
- package/skills/swiftui-patterns/SKILL.md +259 -0
- package/skills/tdd-workflow/SKILL.md +463 -0
- package/skills/team-builder/SKILL.md +168 -0
- package/skills/terminal-ops/SKILL.md +109 -0
- package/skills/token-budget-advisor/SKILL.md +133 -0
- package/skills/ui-demo/SKILL.md +465 -0
- package/skills/unified-notifications-ops/SKILL.md +187 -0
- package/skills/verification-loop/SKILL.md +126 -0
- package/skills/video-editing/SKILL.md +310 -0
- package/skills/videodb/SKILL.md +374 -0
- package/skills/videodb/reference/api-reference.md +550 -0
- package/skills/videodb/reference/capture-reference.md +407 -0
- package/skills/videodb/reference/capture.md +101 -0
- package/skills/videodb/reference/editor.md +443 -0
- package/skills/videodb/reference/generative.md +331 -0
- package/skills/videodb/reference/rtstream-reference.md +564 -0
- package/skills/videodb/reference/rtstream.md +65 -0
- package/skills/videodb/reference/search.md +230 -0
- package/skills/videodb/reference/streaming.md +406 -0
- package/skills/videodb/reference/use-cases.md +118 -0
- package/skills/videodb/scripts/ws_listener.py +282 -0
- package/skills/visa-doc-translate/README.md +86 -0
- package/skills/visa-doc-translate/SKILL.md +117 -0
- package/skills/workspace-surface-audit/SKILL.md +125 -0
- package/skills/x-api/SKILL.md +230 -0
- package/social/card-agents.svg +96 -0
- package/social/card-install.svg +99 -0
- package/social/card-main.svg +133 -0
- package/social/github-social-preview.svg +147 -0
- package/social/readme-agents.svg +139 -0
- package/social/readme-hero.svg +131 -0
- package/social/readme-lens.svg +140 -0
- package/social/readme-savings.svg +56 -0
- package/social/x-card-agents-grid.svg +94 -0
- package/social/x-card-free.svg +95 -0
- package/social/x-card-hook.svg +77 -0
- package/tests/hooks/branch-name-check.test.js +184 -0
- package/tests/hooks/smart-suggest.test.js +149 -0
- package/tests/hooks/test-reminder.test.js +181 -0
- package/tests/run-all.js +55 -0
- package/wiki/Agent-Reference.md +199 -0
- package/wiki/FAQ.md +142 -0
- package/wiki/Home.md +50 -0
- package/wiki/Hook-Reference.md +101 -0
- package/wiki/Installation-Guide.md +126 -0
- package/wiki/Platform-Support.md +106 -0
- package/wiki/Skill-Reference.md +103 -0
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: observability
|
|
3
|
+
description: Production observability patterns — structured logging, distributed tracing, metrics, health checks, alerting, and error budgets. Build systems you can understand when they break. Powered by Kodelyth.
|
|
4
|
+
origin: Kodelyth
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Observability — See Everything in Production
|
|
8
|
+
|
|
9
|
+
The three pillars of observability — Logs, Metrics, and Traces — plus health checks, alerting, and error budgets. Powered by Kodelyth.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- Setting up logging for a new service
|
|
14
|
+
- Adding tracing to an API or background job
|
|
15
|
+
- Designing a metrics + alerting strategy
|
|
16
|
+
- Debugging a production issue you can't reproduce locally
|
|
17
|
+
- Setting up health check endpoints
|
|
18
|
+
- Building SLOs and error budgets
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## The Three Pillars
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Logs → What happened (events, errors, audit trail)
|
|
26
|
+
Metrics → How much / how often (counts, rates, durations)
|
|
27
|
+
Traces → Why it was slow (request flow across services)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
You need all three. Metrics tell you *something is wrong*. Traces tell you *where*. Logs tell you *why*.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Structured Logging
|
|
35
|
+
|
|
36
|
+
### Never use console.log in production
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
// BAD: Unstructured — impossible to query, filter, or alert on
|
|
40
|
+
console.log("User logged in: " + userId)
|
|
41
|
+
console.log("Error: " + error.message)
|
|
42
|
+
|
|
43
|
+
// GOOD: Structured — every field is queryable
|
|
44
|
+
logger.info("user.login", {
|
|
45
|
+
userId,
|
|
46
|
+
email: user.email,
|
|
47
|
+
ip: request.ip,
|
|
48
|
+
userAgent: request.headers["user-agent"],
|
|
49
|
+
durationMs: Date.now() - startTime,
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
logger.error("payment.charge.failed", {
|
|
53
|
+
userId,
|
|
54
|
+
orderId,
|
|
55
|
+
amount,
|
|
56
|
+
currency,
|
|
57
|
+
errorCode: error.code,
|
|
58
|
+
errorMessage: error.message,
|
|
59
|
+
stripeErrorType: error.type,
|
|
60
|
+
})
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Log Levels — Use the Right Level
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
logger.debug("cache.hit", { key, ttlRemaining }) // Dev only, verbose
|
|
67
|
+
logger.info("order.created", { orderId, amount }) // Normal business events
|
|
68
|
+
logger.warn("rate.limit.approaching", { userId, count, limit }) // Potential problem
|
|
69
|
+
logger.error("db.query.failed", { query, error }) // Needs attention
|
|
70
|
+
logger.fatal("service.crashed", { reason }) // Immediate action required
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Rule:** INFO is for things you'd want to search in production. DEBUG is noise you turn on temporarily.
|
|
74
|
+
|
|
75
|
+
### TypeScript Logging Setup (Pino — fastest Node.js logger)
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
// lib/logger.ts
|
|
79
|
+
import pino from 'pino'
|
|
80
|
+
|
|
81
|
+
export const logger = pino({
|
|
82
|
+
level: process.env.LOG_LEVEL ?? 'info',
|
|
83
|
+
base: {
|
|
84
|
+
service: 'api',
|
|
85
|
+
version: process.env.npm_package_version,
|
|
86
|
+
env: process.env.NODE_ENV,
|
|
87
|
+
},
|
|
88
|
+
// Pretty print in dev, JSON in production
|
|
89
|
+
transport: process.env.NODE_ENV === 'development'
|
|
90
|
+
? { target: 'pino-pretty', options: { colorize: true } }
|
|
91
|
+
: undefined,
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
// Child logger with request context
|
|
95
|
+
export function requestLogger(requestId: string, userId?: string) {
|
|
96
|
+
return logger.child({ requestId, userId })
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Python Logging Setup (structlog)
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
# lib/logging.py
|
|
104
|
+
import structlog
|
|
105
|
+
import logging
|
|
106
|
+
|
|
107
|
+
structlog.configure(
|
|
108
|
+
processors=[
|
|
109
|
+
structlog.stdlib.filter_by_level,
|
|
110
|
+
structlog.stdlib.add_logger_name,
|
|
111
|
+
structlog.stdlib.add_log_level,
|
|
112
|
+
structlog.processors.TimeStamper(fmt="iso"),
|
|
113
|
+
structlog.processors.StackInfoRenderer(),
|
|
114
|
+
structlog.processors.format_exc_info,
|
|
115
|
+
structlog.processors.JSONRenderer(),
|
|
116
|
+
],
|
|
117
|
+
wrapper_class=structlog.stdlib.BoundLogger,
|
|
118
|
+
context_class=dict,
|
|
119
|
+
logger_factory=structlog.stdlib.LoggerFactory(),
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
log = structlog.get_logger()
|
|
123
|
+
|
|
124
|
+
# Usage:
|
|
125
|
+
log.info("order.created", order_id=order_id, amount=amount, user_id=user_id)
|
|
126
|
+
log.error("payment.failed", error=str(e), order_id=order_id)
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Metrics
|
|
132
|
+
|
|
133
|
+
### Naming Convention
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
# Format: namespace_subsystem_name_unit
|
|
137
|
+
http_requests_total # counter
|
|
138
|
+
http_request_duration_seconds # histogram
|
|
139
|
+
db_connections_active # gauge
|
|
140
|
+
cache_hits_total # counter
|
|
141
|
+
cache_misses_total # counter
|
|
142
|
+
queue_depth_messages # gauge
|
|
143
|
+
payment_amount_dollars # histogram
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Three Metric Types
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
// Counter — only goes up (requests, errors, events)
|
|
150
|
+
const requestsTotal = new Counter({
|
|
151
|
+
name: 'http_requests_total',
|
|
152
|
+
help: 'Total HTTP requests',
|
|
153
|
+
labelNames: ['method', 'route', 'status_code'],
|
|
154
|
+
})
|
|
155
|
+
requestsTotal.inc({ method: 'POST', route: '/api/orders', status_code: '201' })
|
|
156
|
+
|
|
157
|
+
// Gauge — goes up and down (active connections, queue depth, memory)
|
|
158
|
+
const activeConnections = new Gauge({
|
|
159
|
+
name: 'db_connections_active',
|
|
160
|
+
help: 'Active database connections',
|
|
161
|
+
})
|
|
162
|
+
activeConnections.set(pool.totalCount)
|
|
163
|
+
|
|
164
|
+
// Histogram — distribution of values (latency, request size)
|
|
165
|
+
const requestDuration = new Histogram({
|
|
166
|
+
name: 'http_request_duration_seconds',
|
|
167
|
+
help: 'HTTP request duration',
|
|
168
|
+
labelNames: ['method', 'route'],
|
|
169
|
+
buckets: [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5],
|
|
170
|
+
})
|
|
171
|
+
const end = requestDuration.startTimer({ method, route })
|
|
172
|
+
// ... handle request ...
|
|
173
|
+
end() // records duration automatically
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### The Four Golden Signals (Google SRE)
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
1. Latency → How long do requests take? (p50, p95, p99)
|
|
180
|
+
2. Traffic → How many requests/sec?
|
|
181
|
+
3. Errors → What % of requests fail?
|
|
182
|
+
4. Saturation → How full is the system? (CPU, memory, queue depth)
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Alert on these four before anything else.
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Distributed Tracing (OpenTelemetry)
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
// setup/tracing.ts
|
|
193
|
+
import { NodeSDK } from '@opentelemetry/sdk-node'
|
|
194
|
+
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
|
|
195
|
+
import { Resource } from '@opentelemetry/resources'
|
|
196
|
+
import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'
|
|
197
|
+
|
|
198
|
+
const sdk = new NodeSDK({
|
|
199
|
+
resource: new Resource({
|
|
200
|
+
[SEMRESATTRS_SERVICE_NAME]: 'payment-service',
|
|
201
|
+
}),
|
|
202
|
+
traceExporter: new OTLPTraceExporter({
|
|
203
|
+
url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,
|
|
204
|
+
}),
|
|
205
|
+
})
|
|
206
|
+
|
|
207
|
+
sdk.start() // call before importing anything else
|
|
208
|
+
|
|
209
|
+
// Usage — spans are created automatically for HTTP requests
|
|
210
|
+
// Add custom spans for important operations:
|
|
211
|
+
import { trace } from '@opentelemetry/api'
|
|
212
|
+
|
|
213
|
+
const tracer = trace.getTracer('payment-service')
|
|
214
|
+
|
|
215
|
+
async function processPayment(orderId: string) {
|
|
216
|
+
const span = tracer.startSpan('payment.process')
|
|
217
|
+
span.setAttributes({ 'order.id': orderId })
|
|
218
|
+
|
|
219
|
+
try {
|
|
220
|
+
const result = await chargeCard(orderId)
|
|
221
|
+
span.setStatus({ code: SpanStatusCode.OK })
|
|
222
|
+
return result
|
|
223
|
+
} catch (error) {
|
|
224
|
+
span.setStatus({ code: SpanStatusCode.ERROR, message: error.message })
|
|
225
|
+
span.recordException(error)
|
|
226
|
+
throw error
|
|
227
|
+
} finally {
|
|
228
|
+
span.end()
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Health Check Endpoints
|
|
236
|
+
|
|
237
|
+
### Basic Structure
|
|
238
|
+
|
|
239
|
+
```typescript
|
|
240
|
+
// Every service must expose /health and /ready
|
|
241
|
+
// /health → is the process alive? (used by load balancer)
|
|
242
|
+
// /ready → is the process ready to serve traffic? (used by k8s)
|
|
243
|
+
|
|
244
|
+
app.get('/health', (req, res) => {
|
|
245
|
+
res.json({ status: 'ok', uptime: process.uptime() })
|
|
246
|
+
})
|
|
247
|
+
|
|
248
|
+
app.get('/ready', async (req, res) => {
|
|
249
|
+
const checks = await Promise.allSettled([
|
|
250
|
+
checkDatabase(),
|
|
251
|
+
checkRedis(),
|
|
252
|
+
checkExternalApi(),
|
|
253
|
+
])
|
|
254
|
+
|
|
255
|
+
const results = {
|
|
256
|
+
database: checks[0].status === 'fulfilled' ? 'ok' : 'error',
|
|
257
|
+
redis: checks[1].status === 'fulfilled' ? 'ok' : 'error',
|
|
258
|
+
external: checks[2].status === 'fulfilled' ? 'ok' : 'error',
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
const allHealthy = Object.values(results).every(v => v === 'ok')
|
|
262
|
+
|
|
263
|
+
res.status(allHealthy ? 200 : 503).json({
|
|
264
|
+
status: allHealthy ? 'ready' : 'degraded',
|
|
265
|
+
checks: results,
|
|
266
|
+
timestamp: new Date().toISOString(),
|
|
267
|
+
})
|
|
268
|
+
})
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Alerting — What to Alert On
|
|
274
|
+
|
|
275
|
+
### Alert Design Rules
|
|
276
|
+
|
|
277
|
+
```
|
|
278
|
+
1. Alert on SYMPTOMS, not causes
|
|
279
|
+
BAD: Alert when CPU > 80%
|
|
280
|
+
GOOD: Alert when p99 latency > 2s (the symptom users feel)
|
|
281
|
+
|
|
282
|
+
2. Every alert must be actionable
|
|
283
|
+
BAD: "High error rate" with no runbook
|
|
284
|
+
GOOD: "Error rate > 1% — check Datadog dashboard, likely DB issue"
|
|
285
|
+
|
|
286
|
+
3. Alert on SLOs, not arbitrary thresholds
|
|
287
|
+
BAD: Alert when error rate > 5% (where does 5% come from?)
|
|
288
|
+
GOOD: Alert when error budget burn rate > 2x (based on SLO math)
|
|
289
|
+
|
|
290
|
+
4. Avoid alert fatigue
|
|
291
|
+
BAD: 50 alerts, most noise
|
|
292
|
+
GOOD: 5 alerts, all critical, all actionable
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### The Four Alerts Every Service Needs
|
|
296
|
+
|
|
297
|
+
```yaml
|
|
298
|
+
# 1. High error rate
|
|
299
|
+
alert: HighErrorRate
|
|
300
|
+
expr: rate(http_requests_total{status_code=~"5.."}[5m]) /
|
|
301
|
+
rate(http_requests_total[5m]) > 0.01
|
|
302
|
+
for: 2m
|
|
303
|
+
annotations:
|
|
304
|
+
summary: "Error rate above 1% for 2 minutes"
|
|
305
|
+
runbook: "https://runbooks.example.com/high-error-rate"
|
|
306
|
+
|
|
307
|
+
# 2. High latency
|
|
308
|
+
alert: HighLatency
|
|
309
|
+
expr: histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m])) > 2
|
|
310
|
+
for: 5m
|
|
311
|
+
annotations:
|
|
312
|
+
summary: "p99 latency above 2s for 5 minutes"
|
|
313
|
+
|
|
314
|
+
# 3. Service down
|
|
315
|
+
alert: ServiceDown
|
|
316
|
+
expr: up{job="my-service"} == 0
|
|
317
|
+
for: 1m
|
|
318
|
+
annotations:
|
|
319
|
+
summary: "Service has been down for 1 minute"
|
|
320
|
+
|
|
321
|
+
# 4. High queue depth
|
|
322
|
+
alert: QueueBacklog
|
|
323
|
+
expr: queue_depth_messages > 10000
|
|
324
|
+
for: 10m
|
|
325
|
+
annotations:
|
|
326
|
+
summary: "Queue depth above 10k for 10 minutes — consumers may be stuck"
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Error Budgets & SLOs
|
|
332
|
+
|
|
333
|
+
```
|
|
334
|
+
SLO: Service Level Objective — the target you're trying to hit
|
|
335
|
+
SLA: Service Level Agreement — the contract with consequences
|
|
336
|
+
SLI: Service Level Indicator — the measurement
|
|
337
|
+
|
|
338
|
+
Example:
|
|
339
|
+
SLO: 99.9% of requests succeed within 500ms over 30 days
|
|
340
|
+
SLI: (successful_requests_under_500ms / total_requests) over 30 days
|
|
341
|
+
Error budget: 0.1% of requests can fail = ~43 minutes of downtime/month
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
```typescript
|
|
345
|
+
// Error budget calculation
|
|
346
|
+
const sloTarget = 0.999 // 99.9%
|
|
347
|
+
const errorBudget = 1 - sloTarget // 0.001 = 0.1%
|
|
348
|
+
const minutesPerMonth = 30 * 24 * 60 // 43,200 minutes
|
|
349
|
+
const allowedDowntime = errorBudget * minutesPerMonth // 43.2 minutes
|
|
350
|
+
|
|
351
|
+
// Burn rate alert: if you're consuming budget 2x faster than allowed
|
|
352
|
+
const burnRateThreshold = 2
|
|
353
|
+
// Alert if current_error_rate > burn_rate * (1 - slo_target)
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## Correlation IDs — Connect Logs Across Services
|
|
359
|
+
|
|
360
|
+
```typescript
|
|
361
|
+
// Middleware: generate or propagate request ID
|
|
362
|
+
app.use((req, res, next) => {
|
|
363
|
+
const requestId = req.headers['x-request-id'] as string
|
|
364
|
+
?? crypto.randomUUID()
|
|
365
|
+
|
|
366
|
+
// Set on response so clients can reference it in support tickets
|
|
367
|
+
res.setHeader('x-request-id', requestId)
|
|
368
|
+
|
|
369
|
+
// Make available for the duration of the request
|
|
370
|
+
req.requestId = requestId
|
|
371
|
+
req.log = logger.child({ requestId })
|
|
372
|
+
|
|
373
|
+
next()
|
|
374
|
+
})
|
|
375
|
+
|
|
376
|
+
// Pass downstream to every service call
|
|
377
|
+
async function callPaymentService(orderId: string, requestId: string) {
|
|
378
|
+
return fetch('https://payment-service/charge', {
|
|
379
|
+
headers: {
|
|
380
|
+
'x-request-id': requestId, // ← propagate to child services
|
|
381
|
+
'Content-Type': 'application/json',
|
|
382
|
+
},
|
|
383
|
+
body: JSON.stringify({ orderId }),
|
|
384
|
+
})
|
|
385
|
+
}
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
> Powered by Kodelyth — you can't fix what you can't see.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.cs"
|
|
4
|
+
- "**/*.csx"
|
|
5
|
+
---
|
|
6
|
+
# C# Patterns
|
|
7
|
+
|
|
8
|
+
> This file extends [common/patterns.md](../common/patterns.md) with C#-specific content.
|
|
9
|
+
|
|
10
|
+
## API Response Pattern
|
|
11
|
+
|
|
12
|
+
```csharp
|
|
13
|
+
public sealed record ApiResponse<T>(
|
|
14
|
+
bool Success,
|
|
15
|
+
T? Data = default,
|
|
16
|
+
string? Error = null,
|
|
17
|
+
object? Meta = null);
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Repository Pattern
|
|
21
|
+
|
|
22
|
+
```csharp
|
|
23
|
+
public interface IRepository<T>
|
|
24
|
+
{
|
|
25
|
+
Task<IReadOnlyList<T>> FindAllAsync(CancellationToken cancellationToken);
|
|
26
|
+
Task<T?> FindByIdAsync(Guid id, CancellationToken cancellationToken);
|
|
27
|
+
Task<T> CreateAsync(T entity, CancellationToken cancellationToken);
|
|
28
|
+
Task<T> UpdateAsync(T entity, CancellationToken cancellationToken);
|
|
29
|
+
Task DeleteAsync(Guid id, CancellationToken cancellationToken);
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Options Pattern
|
|
34
|
+
|
|
35
|
+
Use strongly typed options for config instead of reading raw strings throughout the codebase.
|
|
36
|
+
|
|
37
|
+
```csharp
|
|
38
|
+
public sealed class PaymentsOptions
|
|
39
|
+
{
|
|
40
|
+
public const string SectionName = "Payments";
|
|
41
|
+
public required string BaseUrl { get; init; }
|
|
42
|
+
public required string ApiKeySecretName { get; init; }
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Dependency Injection
|
|
47
|
+
|
|
48
|
+
- Depend on interfaces at service boundaries
|
|
49
|
+
- Keep constructors focused; if a service needs too many dependencies, split responsibilities
|
|
50
|
+
- Register lifetimes intentionally: singleton for stateless/shared services, scoped for request data, transient for lightweight pure workers
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Performance & Cost Optimization
|
|
2
|
+
|
|
3
|
+
## Budget-First Principle (CRITICAL)
|
|
4
|
+
|
|
5
|
+
**Every token costs money. Every agent invocation costs money. Treat both as finite resources.**
|
|
6
|
+
|
|
7
|
+
Match the model to the task complexity. Do not default to the heaviest model — that wastes money. Do not default to the lightest model on complex work — that wastes time and produces worse output. Pick the right tier for the actual task in front of you.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Model Selection by Platform
|
|
12
|
+
|
|
13
|
+
### Claude Code (Anthropic Models)
|
|
14
|
+
|
|
15
|
+
| Tier | Model | Task Examples |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| **Trivial** | Claude Haiku | Rename, format, autocomplete, write a single test, update a comment |
|
|
18
|
+
| **Standard** | Claude Sonnet 4.6 | Build a component, write an API route, debug a bug, refactor a module — **most real coding work** |
|
|
19
|
+
| **Maximum** | Claude Opus 4.6 | Architect a system, plan a large migration, analyze cross-cutting security issues, hardest problems |
|
|
20
|
+
|
|
21
|
+
**Most sessions run on Sonnet 4.6.** Haiku is for genuinely trivial edits. Opus 4.6 is for decisions that would take a senior engineer an hour of deep thinking.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
### Google Antigravity — Approved Model Stack
|
|
26
|
+
|
|
27
|
+
The approved stack is 4 models. **Gemini 3 Flash and GPT-OSS 120B are not used** — they are insufficient for production-grade, multi-language, 300B-scale work.
|
|
28
|
+
|
|
29
|
+
| Tier | Model | Task Examples |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| **Standard** | Gemini 3.1 Pro (Low) | Build components, write API routes, server actions, debug rendering issues, write tests, everyday refactoring — **most real coding work** |
|
|
32
|
+
| **Complex** | Gemini 3.1 Pro (High) | Deep multi-file reasoning, architecture decisions, hard bugs spanning many files, security audits, migration planning |
|
|
33
|
+
| **Claude Standard** | Claude Sonnet 4.6 (Thinking) | When Claude agent behavior is needed, extended thinking on difficult problems, complex agent orchestration |
|
|
34
|
+
| **Claude Maximum** | Claude Opus 4.6 (Thinking) | Hardest architectural decisions, maximum reasoning — use when Pro (High) and Sonnet both fall short |
|
|
35
|
+
|
|
36
|
+
**Do not use:**
|
|
37
|
+
- Gemini 3 Flash — insufficient depth for production work
|
|
38
|
+
- GPT-OSS 120B (Medium) — not part of the Kodelyth ECC stack
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
### Antigravity Task Mapping — Any Language, Any Scale
|
|
43
|
+
|
|
44
|
+
| What you are doing | Right model |
|
|
45
|
+
|---|---|
|
|
46
|
+
| Building a React/Next.js component | Gemini 3.1 Pro (Low) |
|
|
47
|
+
| Writing an API route or server action | Gemini 3.1 Pro (Low) |
|
|
48
|
+
| Writing tests | Gemini 3.1 Pro (Low) |
|
|
49
|
+
| Debugging a rendering or logic bug | Gemini 3.1 Pro (Low) |
|
|
50
|
+
| Go service implementation | Gemini 3.1 Pro (Low) |
|
|
51
|
+
| Python API endpoint | Gemini 3.1 Pro (Low) |
|
|
52
|
+
| Kotlin Android feature | Gemini 3.1 Pro (Low) |
|
|
53
|
+
| Rust systems code | Gemini 3.1 Pro (Low) |
|
|
54
|
+
| Java Spring Boot service | Gemini 3.1 Pro (Low) |
|
|
55
|
+
| Hard bug spanning 8+ files | Gemini 3.1 Pro (High) |
|
|
56
|
+
| Auth system architecture | Gemini 3.1 Pro (High) |
|
|
57
|
+
| Security audit across codebase | Gemini 3.1 Pro (High) |
|
|
58
|
+
| Cross-service debugging | Gemini 3.1 Pro (High) |
|
|
59
|
+
| Database schema and query design | Gemini 3.1 Pro (High) |
|
|
60
|
+
| Migration planning (framework, language) | Gemini 3.1 Pro (High) |
|
|
61
|
+
| Deep agent reasoning needed | Claude Sonnet 4.6 (Thinking) |
|
|
62
|
+
| Complex multi-agent orchestration | Claude Sonnet 4.6 (Thinking) |
|
|
63
|
+
| Hardest architectural decisions | Claude Opus 4.6 (Thinking) |
|
|
64
|
+
| Problem that Pro (High) could not solve | Claude Opus 4.6 (Thinking) |
|
|
65
|
+
|
|
66
|
+
**Gemini 3.1 Pro (High) vs (Low) — choose High when:**
|
|
67
|
+
- Task spans 10+ files and requires cross-file reasoning
|
|
68
|
+
- A bug has resisted Pro (Low)'s analysis
|
|
69
|
+
- Security or compliance audit needs full codebase context
|
|
70
|
+
- Architecture decision has significant long-term trade-offs
|
|
71
|
+
- Migration involves complex dependency trees across the project
|
|
72
|
+
|
|
73
|
+
**Claude Sonnet 4.6 (Thinking) — choose when:**
|
|
74
|
+
- You need Claude-specific agent behaviors from ECC
|
|
75
|
+
- The problem requires extended thinking beyond Gemini's reasoning
|
|
76
|
+
- You are orchestrating multiple agents and need deep coordination logic
|
|
77
|
+
|
|
78
|
+
**Claude Opus 4.6 (Thinking) — last resort:**
|
|
79
|
+
- Only when Gemini 3.1 Pro (High) and Claude Sonnet 4.6 have both been tried and fallen short
|
|
80
|
+
- Maximum reasoning on the hardest architectural problems
|
|
81
|
+
- Never open with Opus on a task Pro (Low) can handle
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Token Efficiency Rules
|
|
86
|
+
|
|
87
|
+
### Keep Context Lean
|
|
88
|
+
|
|
89
|
+
- Read only the function or section needed — never feed entire files when a targeted read works
|
|
90
|
+
- Summarize long conversations before continuing deep sessions (`/compact` in Claude Code)
|
|
91
|
+
- Avoid the last 20% of the context window for large operations — start a fresh session instead
|
|
92
|
+
- Clear context between unrelated tasks — stale context adds noise and cost
|
|
93
|
+
|
|
94
|
+
### Low-Context Tasks — safe at any point in a session
|
|
95
|
+
|
|
96
|
+
- Single-file edits
|
|
97
|
+
- Standalone utility creation
|
|
98
|
+
- Documentation updates
|
|
99
|
+
- Simple bug fixes
|
|
100
|
+
- Writing a test for a function that already exists
|
|
101
|
+
|
|
102
|
+
### High-Context Tasks — start fresh or compact first
|
|
103
|
+
|
|
104
|
+
- Large-scale refactoring across many files
|
|
105
|
+
- Feature implementation spanning multiple modules
|
|
106
|
+
- Debugging complex multi-service interactions
|
|
107
|
+
- Any task requiring reading 10+ files simultaneously
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Agent Invocation Cost Discipline
|
|
112
|
+
|
|
113
|
+
- **Don't spawn agents for trivial tasks** — a one-liner fix does not need a code-reviewer agent
|
|
114
|
+
- **Batch related changes** before invoking a reviewer — review once after a logical unit of work, not after every single edit
|
|
115
|
+
- **Use `async: true` for all non-blocking hooks** — never let a hook add latency to tool execution (Claude Code)
|
|
116
|
+
- **Set hook timeouts aggressively** — hooks must complete in under 5 seconds; anything longer gets killed
|
|
117
|
+
- **Disable hooks you don't use** (Claude Code):
|
|
118
|
+
```bash
|
|
119
|
+
export ECC_DISABLED_HOOKS=kodelyth:smart-suggest,kodelyth:test-reminder
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Thinking Mode — Use Surgically
|
|
125
|
+
|
|
126
|
+
Claude Sonnet 4.6 (Thinking) and Claude Opus 4.6 (Thinking) reserve large token budgets for internal reasoning. Gemini 3.1 Pro (High) activates deep reasoning mode. Both are expensive. Use deliberately.
|
|
127
|
+
|
|
128
|
+
**Enable thinking / Pro (High) for:**
|
|
129
|
+
- Architectural decisions with significant trade-offs
|
|
130
|
+
- Security analysis of sensitive code paths
|
|
131
|
+
- Debugging that has resisted standard analysis
|
|
132
|
+
- Migration planning across a large, complex codebase
|
|
133
|
+
|
|
134
|
+
**Stay on Pro (Low) for:**
|
|
135
|
+
- Routine code generation
|
|
136
|
+
- Documentation and comment updates
|
|
137
|
+
- Standard refactoring with a clear path
|
|
138
|
+
- Any task where the answer is immediately obvious from context
|
|
139
|
+
|
|
140
|
+
**Claude Code — cap thinking budget to control cost:**
|
|
141
|
+
```bash
|
|
142
|
+
export MAX_THINKING_TOKENS=5000
|
|
143
|
+
|
|
144
|
+
# Toggle extended thinking: Option+T (macOS) / Alt+T (Windows/Linux)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Antigravity — select at model picker:**
|
|
148
|
+
- Gemini 3.1 Pro (Low) = fast, capable, handles most work
|
|
149
|
+
- Gemini 3.1 Pro (High) = deep reasoning mode, costs more
|
|
150
|
+
- Claude Sonnet 4.6 (Thinking) = Claude agent behavior + thinking
|
|
151
|
+
- Claude Opus 4.6 (Thinking) = maximum, last resort
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Cost Tracking (Claude Code)
|
|
156
|
+
|
|
157
|
+
The cost-tracker hook logs token usage per session to `~/.claude/logs/token-usage.jsonl`.
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# Top 10 most expensive sessions
|
|
161
|
+
cat ~/.claude/logs/token-usage.jsonl | jq -s 'sort_by(.tokens) | reverse | .[0:10]'
|
|
162
|
+
|
|
163
|
+
# Average tokens per session
|
|
164
|
+
cat ~/.claude/logs/token-usage.jsonl | jq -s '[.[].tokens] | add / length'
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
High-cost sessions signal one of three problems: wrong model selection, poor context hygiene, or over-spawning agents. Fix the habit, not just the session.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Build Troubleshooting
|
|
172
|
+
|
|
173
|
+
Build errors are pattern-matching tasks, not deep reasoning tasks.
|
|
174
|
+
|
|
175
|
+
1. Use **build-error-resolver** agent — Pro (Low) or Sonnet tier, not Opus
|
|
176
|
+
2. Feed the exact error message, not the entire build log
|
|
177
|
+
3. Fix one error at a time
|
|
178
|
+
4. Verify after each fix before continuing
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.cs"
|
|
4
|
+
- "**/*.csx"
|
|
5
|
+
- "**/*.csproj"
|
|
6
|
+
- "**/appsettings*.json"
|
|
7
|
+
---
|
|
8
|
+
# C# Security
|
|
9
|
+
|
|
10
|
+
> This file extends [common/security.md](../common/security.md) with C#-specific content.
|
|
11
|
+
|
|
12
|
+
## Secret Management
|
|
13
|
+
|
|
14
|
+
- Never hardcode API keys, tokens, or connection strings in source code
|
|
15
|
+
- Use environment variables, user secrets for local development, and a secret manager in production
|
|
16
|
+
- Keep `appsettings.*.json` free of real credentials
|
|
17
|
+
|
|
18
|
+
```csharp
|
|
19
|
+
// BAD
|
|
20
|
+
const string ApiKey = "sk-live-123";
|
|
21
|
+
|
|
22
|
+
// GOOD
|
|
23
|
+
var apiKey = builder.Configuration["OpenAI:ApiKey"]
|
|
24
|
+
?? throw new InvalidOperationException("OpenAI:ApiKey is not configured.");
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## SQL Injection Prevention
|
|
28
|
+
|
|
29
|
+
- Always use parameterized queries with ADO.NET, Dapper, or EF Core
|
|
30
|
+
- Never concatenate user input into SQL strings
|
|
31
|
+
- Validate sort fields and filter operators before using dynamic query composition
|
|
32
|
+
|
|
33
|
+
```csharp
|
|
34
|
+
const string sql = "SELECT * FROM Orders WHERE CustomerId = @customerId";
|
|
35
|
+
await connection.QueryAsync<Order>(sql, new { customerId });
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Input Validation
|
|
39
|
+
|
|
40
|
+
- Validate DTOs at the application boundary
|
|
41
|
+
- Use data annotations, FluentValidation, or explicit guard clauses
|
|
42
|
+
- Reject invalid model state before running business logic
|
|
43
|
+
|
|
44
|
+
## Authentication and Authorization
|
|
45
|
+
|
|
46
|
+
- Prefer framework auth handlers instead of custom token parsing
|
|
47
|
+
- Enforce authorization policies at endpoint or handler boundaries
|
|
48
|
+
- Never log raw tokens, passwords, or PII
|
|
49
|
+
|
|
50
|
+
## Error Handling
|
|
51
|
+
|
|
52
|
+
- Return safe client-facing messages
|
|
53
|
+
- Log detailed exceptions with structured context server-side
|
|
54
|
+
- Do not expose stack traces, SQL text, or filesystem paths in API responses
|
|
55
|
+
|
|
56
|
+
## References
|
|
57
|
+
|
|
58
|
+
See skill: `security-review` for broader application security review checklists.
|