@ngxtm/devkit 2.1.0 → 3.0.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/cli/detect.js +292 -0
- package/cli/index.js +204 -92
- package/cli/init.js +245 -0
- package/cli/update.js +243 -0
- package/cli/utils.js +195 -0
- package/package.json +16 -20
- package/rules-index.json +76 -0
- package/scripts/generate-index.js +223 -0
- package/scripts/merge-commands.js +290 -0
- package/scripts/organize-rules.js +226 -0
- package/templates/base/hooks/lib/ck-config-utils.cjs +769 -0
- package/templates/base/hooks/lib/ck-paths.cjs +110 -0
- package/templates/base/hooks/lib/colors.cjs +95 -0
- package/templates/base/hooks/lib/config-counter.cjs +103 -0
- package/templates/base/hooks/lib/context-builder.cjs +600 -0
- package/templates/base/hooks/lib/context-tracker.cjs +335 -0
- package/templates/base/hooks/lib/privacy-checker.cjs +297 -0
- package/templates/base/hooks/lib/project-detector.cjs +430 -0
- package/templates/base/hooks/lib/scout-checker.cjs +172 -0
- package/templates/base/hooks/lib/transcript-parser.cjs +164 -0
- package/templates/base/hooks/privacy-block.cjs +145 -0
- package/agents/backend-engineer.md +0 -154
- package/agents/brainstormer.md +0 -169
- package/agents/business-analyst.md +0 -166
- package/agents/database-architect.md +0 -159
- package/agents/debugger.md +0 -155
- package/agents/designer.md +0 -150
- package/agents/devops-engineer.md +0 -155
- package/agents/docs-manager.md +0 -171
- package/agents/frontend-engineer.md +0 -159
- package/agents/game-engineer.md +0 -148
- package/agents/mobile-engineer.md +0 -149
- package/agents/performance-engineer.md +0 -152
- package/agents/planner.md +0 -161
- package/agents/project-manager.md +0 -160
- package/agents/researcher.md +0 -146
- package/agents/reviewer.md +0 -155
- package/agents/scouter.md +0 -157
- package/agents/security-engineer.md +0 -154
- package/agents/tech-lead.md +0 -159
- package/agents/tester.md +0 -157
- package/agents-claudekit/brainstormer.md +0 -113
- package/agents-claudekit/code-reviewer.md +0 -157
- package/agents-claudekit/code-simplifier.md +0 -42
- package/agents-claudekit/copywriter.md +0 -110
- package/agents-claudekit/database-admin.md +0 -92
- package/agents-claudekit/debugger.md +0 -137
- package/agents-claudekit/docs-manager.md +0 -208
- package/agents-claudekit/fullstack-developer.md +0 -95
- package/agents-claudekit/git-manager.md +0 -394
- package/agents-claudekit/journal-writer.md +0 -113
- package/agents-claudekit/mcp-manager.md +0 -93
- package/agents-claudekit/planner.md +0 -108
- package/agents-claudekit/project-manager.md +0 -125
- package/agents-claudekit/researcher.md +0 -38
- package/agents-claudekit/scout-external.md +0 -141
- package/agents-claudekit/scout.md +0 -107
- package/agents-claudekit/tester.md +0 -105
- package/agents-claudekit/ui-ux-designer.md +0 -236
- package/commands/ask.md +0 -64
- package/commands/brainstorm.md +0 -64
- package/commands/code.md +0 -64
- package/commands/cook.md +0 -64
- package/commands/debug.md +0 -64
- package/commands/design/fast.md +0 -134
- package/commands/fix/fast.md +0 -84
- package/commands/fix/hard.md +0 -116
- package/commands/fix.md +0 -64
- package/commands/plan/fast.md +0 -78
- package/commands/plan/hard.md +0 -131
- package/commands/plan.md +0 -64
- package/commands/test.md +0 -64
- package/matrix-skills/_index.yaml +0 -275
- package/matrix-skills/ai-ml.yaml +0 -353
- package/matrix-skills/architecture.yaml +0 -93
- package/matrix-skills/backend.yaml +0 -280
- package/matrix-skills/cloud.yaml +0 -112
- package/matrix-skills/data.yaml +0 -74
- package/matrix-skills/design.yaml +0 -98
- package/matrix-skills/devops.yaml +0 -200
- package/matrix-skills/frontend.yaml +0 -200
- package/matrix-skills/gaming.yaml +0 -39
- package/matrix-skills/languages.yaml +0 -160
- package/matrix-skills/management.yaml +0 -50
- package/matrix-skills/mcp.yaml +0 -82
- package/matrix-skills/mobile.yaml +0 -85
- package/matrix-skills/performance.yaml +0 -23
- package/matrix-skills/planning.yaml +0 -117
- package/matrix-skills/quality.yaml +0 -195
- package/matrix-skills/research.yaml +0 -106
- package/matrix-skills/security.yaml +0 -293
- package/matrix-skills/tools.yaml +0 -352
- package/output-styles/coding-level-0-eli5.md +0 -103
- package/output-styles/coding-level-1-junior.md +0 -124
- package/output-styles/coding-level-2-mid.md +0 -146
- package/output-styles/coding-level-3-senior.md +0 -148
- package/output-styles/coding-level-4-lead.md +0 -159
- package/output-styles/coding-level-5-god.md +0 -91
- package/rules/README.md +0 -141
- package/rules/metadata.json +0 -54
- package/settings.json +0 -3
- package/statusline.cjs +0 -500
- package/statusline.ps1 +0 -307
- package/statusline.sh +0 -237
- package/workflows/development-rules.md +0 -42
- package/workflows/documentation-management.md +0 -121
- package/workflows/orchestration-protocol.md +0 -16
- package/workflows/primary-workflow.md +0 -45
- /package/{commands → merged-commands}/ask/fast.md +0 -0
- /package/{commands → merged-commands}/ask/hard.md +0 -0
- /package/{commands-claudekit → merged-commands}/ask.md +0 -0
- /package/{commands → merged-commands}/auto.md +0 -0
- /package/{commands-claudekit → merged-commands}/bootstrap/auto/fast.md +0 -0
- /package/{commands-claudekit → merged-commands}/bootstrap/auto/parallel.md +0 -0
- /package/{commands-claudekit → merged-commands}/bootstrap/auto.md +0 -0
- /package/{commands-claudekit → merged-commands}/bootstrap.md +0 -0
- /package/{commands → merged-commands}/brainstorm/fast.md +0 -0
- /package/{commands → merged-commands}/brainstorm/hard.md +0 -0
- /package/{commands-claudekit → merged-commands}/brainstorm.md +0 -0
- /package/{commands-claudekit → merged-commands}/ck-help.md +0 -0
- /package/{commands-claudekit → merged-commands}/code/auto.md +0 -0
- /package/{commands → merged-commands}/code/fast.md +0 -0
- /package/{commands → merged-commands}/code/hard.md +0 -0
- /package/{commands-claudekit → merged-commands}/code/no-test.md +0 -0
- /package/{commands-claudekit → merged-commands}/code/parallel.md +0 -0
- /package/{commands-claudekit → merged-commands}/code.md +0 -0
- /package/{commands-claudekit → merged-commands}/coding-level.md +0 -0
- /package/{commands-claudekit → merged-commands}/content/cro.md +0 -0
- /package/{commands-claudekit → merged-commands}/content/enhance.md +0 -0
- /package/{commands-claudekit → merged-commands}/content/fast.md +0 -0
- /package/{commands-claudekit → merged-commands}/content/good.md +0 -0
- /package/{commands-claudekit → merged-commands}/cook/auto/fast.md +0 -0
- /package/{commands-claudekit → merged-commands}/cook/auto/parallel.md +0 -0
- /package/{commands-claudekit → merged-commands}/cook/auto.md +0 -0
- /package/{commands → merged-commands}/cook/fast.md +0 -0
- /package/{commands → merged-commands}/cook/hard.md +0 -0
- /package/{commands-claudekit → merged-commands}/cook.md +0 -0
- /package/{commands → merged-commands}/debug/fast.md +0 -0
- /package/{commands → merged-commands}/debug/hard.md +0 -0
- /package/{commands-claudekit → merged-commands}/debug.md +0 -0
- /package/{commands → merged-commands}/deploy/check.md +0 -0
- /package/{commands → merged-commands}/deploy/preview.md +0 -0
- /package/{commands → merged-commands}/deploy/production.md +0 -0
- /package/{commands → merged-commands}/deploy/rollback.md +0 -0
- /package/{commands → merged-commands}/deploy.md +0 -0
- /package/{commands-claudekit → merged-commands}/design/3d.md +0 -0
- /package/{commands-claudekit → merged-commands}/design/describe.md +0 -0
- /package/{commands-claudekit → merged-commands}/design/fast.md +0 -0
- /package/{commands-claudekit → merged-commands}/design/good.md +0 -0
- /package/{commands → merged-commands}/design/hard.md +0 -0
- /package/{commands-claudekit → merged-commands}/design/screenshot.md +0 -0
- /package/{commands-claudekit → merged-commands}/design/video.md +0 -0
- /package/{commands → merged-commands}/design.md +0 -0
- /package/{commands → merged-commands}/docs/audit.md +0 -0
- /package/{commands → merged-commands}/docs/business.md +0 -0
- /package/{commands → merged-commands}/docs/core.md +0 -0
- /package/{commands-claudekit → merged-commands}/docs/init.md +0 -0
- /package/{commands-claudekit → merged-commands}/docs/summarize.md +0 -0
- /package/{commands-claudekit → merged-commands}/docs/update.md +0 -0
- /package/{commands → merged-commands}/docs.md +0 -0
- /package/{commands-claudekit → merged-commands}/fix/ci.md +0 -0
- /package/{commands-claudekit → merged-commands}/fix/fast.md +0 -0
- /package/{commands-claudekit → merged-commands}/fix/hard.md +0 -0
- /package/{commands-claudekit → merged-commands}/fix/logs.md +0 -0
- /package/{commands-claudekit → merged-commands}/fix/parallel.md +0 -0
- /package/{commands-claudekit → merged-commands}/fix/test.md +0 -0
- /package/{commands-claudekit → merged-commands}/fix/types.md +0 -0
- /package/{commands-claudekit → merged-commands}/fix/ui.md +0 -0
- /package/{commands-claudekit → merged-commands}/fix.md +0 -0
- /package/{commands-claudekit → merged-commands}/git/cm.md +0 -0
- /package/{commands-claudekit → merged-commands}/git/cp.md +0 -0
- /package/{commands-claudekit → merged-commands}/git/merge.md +0 -0
- /package/{commands-claudekit → merged-commands}/git/pr.md +0 -0
- /package/{commands-claudekit → merged-commands}/integrate/polar.md +0 -0
- /package/{commands-claudekit → merged-commands}/integrate/sepay.md +0 -0
- /package/{commands-claudekit → merged-commands}/journal.md +0 -0
- /package/{commands-claudekit → merged-commands}/kanban.md +0 -0
- /package/{commands-claudekit → merged-commands}/plan/archive.md +0 -0
- /package/{commands-claudekit → merged-commands}/plan/ci.md +0 -0
- /package/{commands-claudekit → merged-commands}/plan/cro.md +0 -0
- /package/{commands-claudekit → merged-commands}/plan/fast.md +0 -0
- /package/{commands-claudekit → merged-commands}/plan/hard.md +0 -0
- /package/{commands-claudekit → merged-commands}/plan/parallel.md +0 -0
- /package/{commands-claudekit → merged-commands}/plan/two.md +0 -0
- /package/{commands-claudekit → merged-commands}/plan/validate.md +0 -0
- /package/{commands-claudekit → merged-commands}/plan.md +0 -0
- /package/{commands-claudekit → merged-commands}/preview.md +0 -0
- /package/{commands-claudekit → merged-commands}/review/codebase/parallel.md +0 -0
- /package/{commands-claudekit → merged-commands}/review/codebase.md +0 -0
- /package/{commands → merged-commands}/review/fast.md +0 -0
- /package/{commands → merged-commands}/review/hard.md +0 -0
- /package/{commands → merged-commands}/review.md +0 -0
- /package/{commands-claudekit → merged-commands}/scout/ext.md +0 -0
- /package/{commands-claudekit → merged-commands}/scout.md +0 -0
- /package/{commands-claudekit → merged-commands}/skill/add.md +0 -0
- /package/{commands-claudekit → merged-commands}/skill/create.md +0 -0
- /package/{commands-claudekit → merged-commands}/skill/fix-logs.md +0 -0
- /package/{commands-claudekit → merged-commands}/skill/optimize/auto.md +0 -0
- /package/{commands-claudekit → merged-commands}/skill/optimize.md +0 -0
- /package/{commands-claudekit → merged-commands}/skill/plan.md +0 -0
- /package/{commands-claudekit → merged-commands}/skill/update.md +0 -0
- /package/{commands → merged-commands}/test/fast.md +0 -0
- /package/{commands → merged-commands}/test/hard.md +0 -0
- /package/{commands-claudekit → merged-commands}/test/ui.md +0 -0
- /package/{commands-claudekit → merged-commands}/test.md +0 -0
- /package/{commands-claudekit → merged-commands}/use-mcp.md +0 -0
- /package/{commands-claudekit → merged-commands}/watzup.md +0 -0
- /package/{commands-claudekit → merged-commands}/worktree.md +0 -0
- /package/{rules → templates/dart/rules}/dart/best-practices/SKILL.md +0 -0
- /package/{rules → templates/dart/rules}/dart/language/SKILL.md +0 -0
- /package/{rules → templates/dart/rules}/dart/tooling/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/references/REFERENCE.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/references/router-config.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/REFERENCE.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/auth-bloc-example.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/equatable-usage.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/property-based-state.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/bloc.rule.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/cicd/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/cicd/references/advanced-workflow.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/cicd/references/fastlane.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/cicd/references/github-actions.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/dependency-injection/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/dependency-injection/references/REFERENCE.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/dependency-injection/references/modules.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/error-handling/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/error-handling/references/REFERENCE.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/error-handling/references/error-mapping.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/references/REFERENCE.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/references/folder-structure.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/getx-navigation/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/getx-navigation/references/app-pages.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/getx-navigation/references/middleware-example.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/getx-state-management/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/getx-state-management/references/binding-example.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/getx-state-management/references/reactive-vs-simple.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/go-router-navigation/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/idiomatic-flutter/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/references/REFERENCE.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/references/repository-mapping.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/localization/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/localization/references/REFERENCE.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/localization/references/sheet-loader.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/navigator-v1-navigation/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/navigator-v1-navigation/references/on-generate-route.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/performance/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/references/REFERENCE.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/references/token-refresh.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/architecture.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/best-practices.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/testing.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/riverpod.rule.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/security/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/security/references/REFERENCE.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/security/references/network-security.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/testing/SKILL.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/testing/references/REFERENCE.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/testing/references/bloc-testing.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/testing/references/integration-testing.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/testing/references/robot-pattern.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/testing/references/unit-testing.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/testing/references/widget-testing.md +0 -0
- /package/{rules → templates/flutter/rules}/flutter/widgets/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/chi-router/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/chi-router/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/chi-router/references/routing-patterns.md +0 -0
- /package/{rules → templates/golang/rules}/golang/cobra-cli/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/cobra-cli/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/cobra-cli/references/command-patterns.md +0 -0
- /package/{rules → templates/golang/rules}/golang/core/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/core/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/core/references/concurrency-patterns.md +0 -0
- /package/{rules → templates/golang/rules}/golang/core/references/error-handling.md +0 -0
- /package/{rules → templates/golang/rules}/golang/echo-framework/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/echo-framework/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/echo-framework/references/middleware-patterns.md +0 -0
- /package/{rules → templates/golang/rules}/golang/echo-framework/references/routing-patterns.md +0 -0
- /package/{rules → templates/golang/rules}/golang/ent-orm/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/ent-orm/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/ent-orm/references/schema-patterns.md +0 -0
- /package/{rules → templates/golang/rules}/golang/fiber-framework/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/fiber-framework/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/fiber-framework/references/routing-patterns.md +0 -0
- /package/{rules → templates/golang/rules}/golang/gin-framework/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/gin-framework/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/gin-framework/references/middleware-patterns.md +0 -0
- /package/{rules → templates/golang/rules}/golang/gorm-orm/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/gorm-orm/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/gorm-orm/references/model-definitions.md +0 -0
- /package/{rules → templates/golang/rules}/golang/gorm-orm/references/query-patterns.md +0 -0
- /package/{rules → templates/golang/rules}/golang/grpc/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/grpc/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/grpc/references/service-patterns.md +0 -0
- /package/{rules → templates/golang/rules}/golang/testify/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/testify/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/testify/references/assert-patterns.md +0 -0
- /package/{rules → templates/golang/rules}/golang/validator/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/validator/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/validator/references/validation-tags.md +0 -0
- /package/{rules → templates/golang/rules}/golang/viper-config/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/viper-config/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/viper-config/references/config-loading.md +0 -0
- /package/{rules → templates/golang/rules}/golang/wire-di/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/wire-di/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/wire-di/references/provider-patterns.md +0 -0
- /package/{rules → templates/golang/rules}/golang/zap-logging/SKILL.md +0 -0
- /package/{rules → templates/golang/rules}/golang/zap-logging/references/REFERENCE.md +0 -0
- /package/{rules → templates/golang/rules}/golang/zap-logging/references/logger-config.md +0 -0
- /package/{rules → templates/java/rules}/java/build-gradle/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/build-gradle/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/build-gradle/references/kotlin-dsl.md +0 -0
- /package/{rules → templates/java/rules}/java/build-gradle/references/task-configuration.md +0 -0
- /package/{rules → templates/java/rules}/java/build-maven/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/build-maven/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/build-maven/references/dependency-management.md +0 -0
- /package/{rules → templates/java/rules}/java/build-maven/references/lifecycle-phases.md +0 -0
- /package/{rules → templates/java/rules}/java/graalvm-native/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/graalvm-native/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/java-collections-streams/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/java-collections-streams/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/java-collections-streams/references/collectors-patterns.md +0 -0
- /package/{rules → templates/java/rules}/java/java-collections-streams/references/stream-pipelines.md +0 -0
- /package/{rules → templates/java/rules}/java/java-concurrency/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/java-concurrency/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/java-concurrency/references/completable-future.md +0 -0
- /package/{rules → templates/java/rules}/java/java-concurrency/references/executor-patterns.md +0 -0
- /package/{rules → templates/java/rules}/java/java-concurrency/references/virtual-threads.md +0 -0
- /package/{rules → templates/java/rules}/java/java-core-language/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/java-core-language/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/java-core-language/references/jvm-memory-model.md +0 -0
- /package/{rules → templates/java/rules}/java/java-core-language/references/modern-java-features.md +0 -0
- /package/{rules → templates/java/rules}/java/java-project-structure/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/java-project-structure/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/java-project-structure/references/maven-project-layout.md +0 -0
- /package/{rules → templates/java/rules}/java/java-project-structure/references/module-system.md +0 -0
- /package/{rules → templates/java/rules}/java/micronaut-core/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/micronaut-core/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/micronaut-reactive/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/micronaut-reactive/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/quarkus-core/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/quarkus-core/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/quarkus-reactive/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/quarkus-reactive/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-batch/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-batch/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-boot-architecture/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/auto-configuration.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/configuration-properties.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-boot-web/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-boot-web/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-cloud/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-cloud/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-data-jpa/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-data-jpa/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-security/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-security/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/spring-security/references/jwt-auth-flow.md +0 -0
- /package/{rules → templates/java/rules}/java/testing-junit-mockito/SKILL.md +0 -0
- /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/REFERENCE.md +0 -0
- /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/junit5-patterns.md +0 -0
- /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/mockito-patterns.md +0 -0
- /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/spring-boot-testing.md +0 -0
- /package/{rules → templates/javascript/rules}/javascript/best-practices/SKILL.md +0 -0
- /package/{rules → templates/javascript/rules}/javascript/best-practices/references/REFERENCE.md +0 -0
- /package/{rules → templates/javascript/rules}/javascript/language/SKILL.md +0 -0
- /package/{rules → templates/javascript/rules}/javascript/language/references/REFERENCE.md +0 -0
- /package/{rules → templates/javascript/rules}/javascript/tooling/SKILL.md +0 -0
- /package/{rules → templates/javascript/rules}/javascript/tooling/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/api-standards/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/api-standards/references/pagination-wrapper.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/architecture/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/architecture/references/dynamic-module.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/caching/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/caching/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/caching/references/cache-patterns.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/configuration/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/configuration/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/configuration/references/config-patterns.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/controller-patterns.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/service-patterns.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/database/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/database/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/database/references/typeorm-patterns.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/deployment/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/deployment/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/deployment/references/deployment-patterns.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/documentation/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/documentation/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/documentation/references/swagger-patterns.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/error-handling/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/error-handling/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/error-handling/references/exception-filters.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/references/upload-patterns.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/observability/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/observability/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/observability/references/logging-metrics.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/performance/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/performance/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/performance/references/performance-patterns.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/real-time/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/real-time/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/real-time/references/websocket-patterns.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/scheduling/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/scheduling/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/scheduling/references/scheduling-patterns.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/search/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/search/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/search/references/search-patterns.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/security/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/security/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/security/references/authentication.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/testing/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/testing/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/testing/references/unit-testing.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/transport/SKILL.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/transport/references/REFERENCE.md +0 -0
- /package/{rules → templates/nestjs/rules}/nestjs/transport/references/microservices-patterns.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/app-router/SKILL.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/app-router/references/REFERENCE.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/app-router/references/routing-patterns.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/architecture/SKILL.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/architecture/references/fsd-structure.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/authentication/SKILL.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/authentication/references/auth-implementation.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/caching/SKILL.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/caching/references/REFERENCE.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/caching/references/cache-strategies.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/data-access-layer/SKILL.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/data-access-layer/references/patterns.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/SKILL.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/references/REFERENCE.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/references/fetch-patterns.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/internationalization/SKILL.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/internationalization/references/REFERENCE.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/internationalization/references/i18n-patterns.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/optimization/SKILL.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/optimization/references/REFERENCE.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/optimization/references/optimization-patterns.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/rendering/SKILL.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/rendering/references/REFERENCE.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/rendering/references/rendering-modes.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/server-actions/SKILL.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/server-actions/references/REFERENCE.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/server-actions/references/action-patterns.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/server-components/SKILL.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/server-components/references/REFERENCE.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/server-components/references/component-patterns.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/state-management/SKILL.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/state-management/references/REFERENCE.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/state-management/references/state-patterns.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/styling/SKILL.md +0 -0
- /package/{rules → templates/nextjs/rules}/nextjs/styling/references/implementation.md +0 -0
- /package/{rules → templates/react/rules}/react/component-patterns/SKILL.md +0 -0
- /package/{rules → templates/react/rules}/react/component-patterns/references/REFERENCE.md +0 -0
- /package/{rules → templates/react/rules}/react/hooks/SKILL.md +0 -0
- /package/{rules → templates/react/rules}/react/hooks/references/REFERENCE.md +0 -0
- /package/{rules → templates/react/rules}/react/hooks.rule.md +0 -0
- /package/{rules → templates/react/rules}/react/performance/SKILL.md +0 -0
- /package/{rules → templates/react/rules}/react/performance/references/REFERENCE.md +0 -0
- /package/{rules → templates/react/rules}/react/security/SKILL.md +0 -0
- /package/{rules → templates/react/rules}/react/security/references/REFERENCE.md +0 -0
- /package/{rules → templates/react/rules}/react/state-management/SKILL.md +0 -0
- /package/{rules → templates/react/rules}/react/state-management/references/REFERENCE.md +0 -0
- /package/{rules → templates/react/rules}/react/testing/SKILL.md +0 -0
- /package/{rules → templates/react/rules}/react/testing/references/REFERENCE.md +0 -0
- /package/{rules → templates/react/rules}/react/tooling/SKILL.md +0 -0
- /package/{rules → templates/react/rules}/react/typescript/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/actix-web/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/actix-web/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/actix-web/references/handler-patterns.md +0 -0
- /package/{rules → templates/rust/rules}/rust/async-graphql/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/async-graphql/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/async-graphql/references/schema-patterns.md +0 -0
- /package/{rules → templates/rust/rules}/rust/axum/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/axum/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/axum/references/handler-patterns.md +0 -0
- /package/{rules → templates/rust/rules}/rust/bevy/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/bevy/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/bevy/references/ecs-patterns.md +0 -0
- /package/{rules → templates/rust/rules}/rust/clap/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/clap/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/clap/references/derive-patterns.md +0 -0
- /package/{rules → templates/rust/rules}/rust/core/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/core/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/core/references/error-handling.md +0 -0
- /package/{rules → templates/rust/rules}/rust/diesel-orm/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/diesel-orm/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/diesel-orm/references/schema-patterns.md +0 -0
- /package/{rules → templates/rust/rules}/rust/rocket/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/rocket/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/rocket/references/handler-patterns.md +0 -0
- /package/{rules → templates/rust/rules}/rust/sea-orm/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/sea-orm/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/sea-orm/references/entity-patterns.md +0 -0
- /package/{rules → templates/rust/rules}/rust/serde-serialization/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/serde-serialization/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/serde-serialization/references/serialization-patterns.md +0 -0
- /package/{rules → templates/rust/rules}/rust/sqlx-database/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/sqlx-database/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/sqlx-database/references/query-patterns.md +0 -0
- /package/{rules → templates/rust/rules}/rust/tauri/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/tauri/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/tauri/references/command-patterns.md +0 -0
- /package/{rules → templates/rust/rules}/rust/tokio-runtime/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/async-patterns.md +0 -0
- /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/synchronization.md +0 -0
- /package/{rules → templates/rust/rules}/rust/tonic/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/tonic/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/tonic/references/service-patterns.md +0 -0
- /package/{rules → templates/rust/rules}/rust/tracing/SKILL.md +0 -0
- /package/{rules → templates/rust/rules}/rust/tracing/references/REFERENCE.md +0 -0
- /package/{rules → templates/rust/rules}/rust/tracing/references/instrumentation.md +0 -0
- /package/{rules → templates/typescript/rules}/typescript/best-practices/SKILL.md +0 -0
- /package/{rules → templates/typescript/rules}/typescript/best-practices/references/REFERENCE.md +0 -0
- /package/{rules → templates/typescript/rules}/typescript/language/SKILL.md +0 -0
- /package/{rules → templates/typescript/rules}/typescript/language/references/REFERENCE.md +0 -0
- /package/{rules → templates/typescript/rules}/typescript/patterns.rule.md +0 -0
- /package/{rules → templates/typescript/rules}/typescript/security/SKILL.md +0 -0
- /package/{rules → templates/typescript/rules}/typescript/security/references/REFERENCE.md +0 -0
- /package/{rules → templates/typescript/rules}/typescript/tooling/SKILL.md +0 -0
- /package/{rules → templates/typescript/rules}/typescript/tooling/references/REFERENCE.md +0 -0
package/statusline.ps1
DELETED
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
#Requires -Version 5.1
|
|
2
|
-
# Custom Claude Code statusline for PowerShell
|
|
3
|
-
# Cross-platform support: Windows PowerShell 5.1+, PowerShell Core 7+
|
|
4
|
-
# Theme: detailed | Features: directory, git, model, usage, session, tokens
|
|
5
|
-
#
|
|
6
|
-
# Context Window Calculation:
|
|
7
|
-
# - 100% = compaction threshold (not model limit)
|
|
8
|
-
# - Self-calibrates via PreCompact hook
|
|
9
|
-
# - Falls back to smart defaults based on window size
|
|
10
|
-
|
|
11
|
-
# Set UTF-8 encoding
|
|
12
|
-
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
13
|
-
$OutputEncoding = [System.Text.Encoding]::UTF8
|
|
14
|
-
|
|
15
|
-
# Calibration file path (now in ck/ namespace - fixes #178)
|
|
16
|
-
$CalibrationPath = Join-Path (Join-Path $env:TEMP "ck") "calibration.json"
|
|
17
|
-
|
|
18
|
-
# Time conversion functions
|
|
19
|
-
function ConvertTo-Epoch {
|
|
20
|
-
param([string]$Timestamp)
|
|
21
|
-
|
|
22
|
-
try {
|
|
23
|
-
$dt = [DateTime]::Parse($Timestamp).ToUniversalTime()
|
|
24
|
-
$epoch = [DateTimeOffset]::new($dt).ToUnixTimeSeconds()
|
|
25
|
-
return $epoch
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
return 0
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function Format-TimeHM {
|
|
33
|
-
param([long]$Epoch)
|
|
34
|
-
|
|
35
|
-
try {
|
|
36
|
-
$dt = [DateTimeOffset]::FromUnixTimeSeconds($Epoch).LocalDateTime
|
|
37
|
-
return $dt.ToString("HH:mm")
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return "00:00"
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
# Get smart default compact threshold based on context window size
|
|
45
|
-
# Research-based defaults:
|
|
46
|
-
# - 200k window: ~80% (160k) - confirmed from GitHub issues
|
|
47
|
-
# - 500k window: ~60% (300k) - estimated
|
|
48
|
-
# - 1M window: ~33% (330k) - derived from user observations
|
|
49
|
-
function Get-DefaultCompactThreshold {
|
|
50
|
-
param([int]$ContextWindowSize)
|
|
51
|
-
|
|
52
|
-
# Known thresholds (autocompact buffer = 22.5% for 200k)
|
|
53
|
-
$KnownThresholds = @{
|
|
54
|
-
200000 = 155000 # 77.5% - confirmed via /context
|
|
55
|
-
1000000 = 330000 # 33% - 1M beta window
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
# Exact match
|
|
59
|
-
if ($KnownThresholds.ContainsKey($ContextWindowSize)) {
|
|
60
|
-
return $KnownThresholds[$ContextWindowSize]
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
# Tiered defaults based on window size
|
|
64
|
-
if ($ContextWindowSize -ge 1000000) {
|
|
65
|
-
return [Math]::Floor($ContextWindowSize * 0.33)
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
# Default: ~77.5% for standard windows (200k confirmed)
|
|
69
|
-
return [Math]::Floor($ContextWindowSize * 0.775)
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
# Read calibrated threshold from file if available
|
|
74
|
-
function Get-CompactThreshold {
|
|
75
|
-
param([int]$ContextWindowSize)
|
|
76
|
-
|
|
77
|
-
# Try to read calibration file
|
|
78
|
-
if (Test-Path $CalibrationPath) {
|
|
79
|
-
try {
|
|
80
|
-
$calibration = Get-Content $CalibrationPath -Raw | ConvertFrom-Json
|
|
81
|
-
$key = [string]$ContextWindowSize
|
|
82
|
-
if ($calibration.$key -and $calibration.$key.threshold -gt 0) {
|
|
83
|
-
return [int]$calibration.$key.threshold
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
catch {
|
|
87
|
-
# Silent fail - use defaults
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
# Fall back to smart defaults
|
|
92
|
-
return Get-DefaultCompactThreshold $ContextWindowSize
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
function Get-ProgressBar {
|
|
96
|
-
param(
|
|
97
|
-
[int]$Percent = 0,
|
|
98
|
-
[int]$Width = 12
|
|
99
|
-
)
|
|
100
|
-
|
|
101
|
-
if ($Percent -lt 0) { $Percent = 0 }
|
|
102
|
-
if ($Percent -gt 100) { $Percent = 100 }
|
|
103
|
-
|
|
104
|
-
$filled = [Math]::Round($Percent * $Width / 100)
|
|
105
|
-
$empty = $Width - $filled
|
|
106
|
-
|
|
107
|
-
# ▰ (U+25B0) filled, ▱ (U+25B1) empty - smooth horizontal rectangles
|
|
108
|
-
$bar = ("▰" * $filled) + ("▱" * $empty)
|
|
109
|
-
return $bar
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
# Get severity emoji based on percentage (no color codes)
|
|
113
|
-
function Get-SeverityEmoji {
|
|
114
|
-
param([int]$Percent)
|
|
115
|
-
|
|
116
|
-
if ($Percent -ge 90) {
|
|
117
|
-
return "🔴" # Critical
|
|
118
|
-
}
|
|
119
|
-
elseif ($Percent -ge 70) {
|
|
120
|
-
return "🟡" # Warning
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
return "🟢" # Healthy
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
# Read JSON from stdin
|
|
128
|
-
try {
|
|
129
|
-
$inputLines = @()
|
|
130
|
-
while ($null -ne ($line = [Console]::In.ReadLine())) {
|
|
131
|
-
$inputLines += $line
|
|
132
|
-
}
|
|
133
|
-
$inputJson = $inputLines -join "`n"
|
|
134
|
-
|
|
135
|
-
if ([string]::IsNullOrWhiteSpace($inputJson)) {
|
|
136
|
-
Write-Error "No input provided"
|
|
137
|
-
exit 1
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
$data = $inputJson | ConvertFrom-Json
|
|
141
|
-
}
|
|
142
|
-
catch {
|
|
143
|
-
Write-Error "Failed to parse JSON input: $_"
|
|
144
|
-
exit 1
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
# Extract basic information
|
|
148
|
-
$currentDir = "unknown"
|
|
149
|
-
if ($data.workspace.current_dir) {
|
|
150
|
-
$currentDir = $data.workspace.current_dir
|
|
151
|
-
}
|
|
152
|
-
elseif ($data.cwd) {
|
|
153
|
-
$currentDir = $data.cwd
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
# Replace home directory with ~
|
|
157
|
-
$homeDir = $env:USERPROFILE
|
|
158
|
-
if (-not $homeDir) {
|
|
159
|
-
$homeDir = $env:HOME
|
|
160
|
-
}
|
|
161
|
-
if ($homeDir -and $currentDir.StartsWith($homeDir)) {
|
|
162
|
-
$currentDir = $currentDir.Replace($homeDir, "~")
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
$modelName = "Claude"
|
|
166
|
-
if ($data.model.display_name) {
|
|
167
|
-
$modelName = $data.model.display_name
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
$modelVersion = ""
|
|
171
|
-
if ($data.model.version -and $data.model.version -ne "null") {
|
|
172
|
-
$modelVersion = $data.model.version
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
# Git branch detection
|
|
176
|
-
$gitBranch = ""
|
|
177
|
-
try {
|
|
178
|
-
$null = git rev-parse --git-dir 2>$null
|
|
179
|
-
if ($LASTEXITCODE -eq 0) {
|
|
180
|
-
$gitBranch = git branch --show-current 2>$null
|
|
181
|
-
if ([string]::IsNullOrWhiteSpace($gitBranch)) {
|
|
182
|
-
$gitBranch = git rev-parse --short HEAD 2>$null
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
catch {
|
|
187
|
-
# Not in a git repository
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
# Context window usage (Claude Code v2.0.65+)
|
|
191
|
-
# Calculate percentage against COMPACT THRESHOLD, not model limit
|
|
192
|
-
# 100% = compaction imminent
|
|
193
|
-
$contextPercent = 0
|
|
194
|
-
$contextText = ""
|
|
195
|
-
|
|
196
|
-
$contextInput = 0
|
|
197
|
-
$contextOutput = 0
|
|
198
|
-
$contextSize = 0
|
|
199
|
-
|
|
200
|
-
if ($data.context_window) {
|
|
201
|
-
$contextInput = [int]($data.context_window.total_input_tokens ?? 0)
|
|
202
|
-
$contextOutput = [int]($data.context_window.total_output_tokens ?? 0)
|
|
203
|
-
$contextSize = [int]($data.context_window.context_window_size ?? 0)
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
if ($contextSize -gt 0) {
|
|
207
|
-
$contextTotal = $contextInput + $contextOutput
|
|
208
|
-
$compactThreshold = Get-CompactThreshold $contextSize
|
|
209
|
-
|
|
210
|
-
# Calculate percentage against compact threshold
|
|
211
|
-
$contextPercent = [Math]::Floor($contextTotal * 100 / $compactThreshold)
|
|
212
|
-
# Clamp to 100% max to handle edge cases
|
|
213
|
-
if ($contextPercent -gt 100) { $contextPercent = 100 }
|
|
214
|
-
|
|
215
|
-
# Get severity emoji and progress bar
|
|
216
|
-
$severityEmoji = Get-SeverityEmoji $contextPercent
|
|
217
|
-
$bar = Get-ProgressBar $contextPercent 12
|
|
218
|
-
$contextText = "$severityEmoji $bar ${contextPercent}%"
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
# Session timer
|
|
222
|
-
$sessionText = ""
|
|
223
|
-
|
|
224
|
-
try {
|
|
225
|
-
# Try npx first, then ccusage
|
|
226
|
-
$blocksOutput = $null
|
|
227
|
-
try {
|
|
228
|
-
$blocksOutput = npx ccusage@latest blocks --json 2>$null
|
|
229
|
-
}
|
|
230
|
-
catch {
|
|
231
|
-
try {
|
|
232
|
-
$blocksOutput = ccusage blocks --json 2>$null
|
|
233
|
-
}
|
|
234
|
-
catch {
|
|
235
|
-
# ccusage not available
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
if ($blocksOutput) {
|
|
240
|
-
$blocks = $blocksOutput | ConvertFrom-Json
|
|
241
|
-
$activeBlock = $blocks.blocks | Where-Object { $_.isActive -eq $true } | Select-Object -First 1
|
|
242
|
-
|
|
243
|
-
if ($activeBlock) {
|
|
244
|
-
# Session time calculation
|
|
245
|
-
$resetTimeStr = $activeBlock.usageLimitResetTime
|
|
246
|
-
if (-not $resetTimeStr) {
|
|
247
|
-
$resetTimeStr = $activeBlock.endTime
|
|
248
|
-
}
|
|
249
|
-
$startTimeStr = $activeBlock.startTime
|
|
250
|
-
|
|
251
|
-
if ($resetTimeStr -and $startTimeStr) {
|
|
252
|
-
$startSec = ConvertTo-Epoch $startTimeStr
|
|
253
|
-
$endSec = ConvertTo-Epoch $resetTimeStr
|
|
254
|
-
$nowSec = [DateTimeOffset]::UtcNow.ToUnixTimeSeconds()
|
|
255
|
-
|
|
256
|
-
$total = $endSec - $startSec
|
|
257
|
-
if ($total -lt 1) { $total = 1 }
|
|
258
|
-
|
|
259
|
-
$elapsed = $nowSec - $startSec
|
|
260
|
-
if ($elapsed -lt 0) { $elapsed = 0 }
|
|
261
|
-
if ($elapsed -gt $total) { $elapsed = $total }
|
|
262
|
-
|
|
263
|
-
$remaining = $endSec - $nowSec
|
|
264
|
-
if ($remaining -lt 0) { $remaining = 0 }
|
|
265
|
-
|
|
266
|
-
if ($remaining -gt 0 -and $remaining -lt 18000) {
|
|
267
|
-
$rh = [Math]::Floor($remaining / 3600)
|
|
268
|
-
$rm = [Math]::Floor(($remaining % 3600) / 60)
|
|
269
|
-
$endHM = Format-TimeHM $endSec
|
|
270
|
-
$sessionText = "${rh}h ${rm}m until reset at ${endHM}"
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
catch {
|
|
277
|
-
# Silent fail - ccusage not available
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
# Render statusline (no ANSI colors - emoji only)
|
|
281
|
-
$output = ""
|
|
282
|
-
$output += "📁 ${currentDir}"
|
|
283
|
-
|
|
284
|
-
# Git branch
|
|
285
|
-
if ($gitBranch) {
|
|
286
|
-
$output += " 🌿 ${gitBranch}"
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
# Model
|
|
290
|
-
$output += " 🤖 ${modelName}"
|
|
291
|
-
|
|
292
|
-
# Model version
|
|
293
|
-
if ($modelVersion) {
|
|
294
|
-
$output += " ${modelVersion}"
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
# Session time
|
|
298
|
-
if ($sessionText) {
|
|
299
|
-
$output += " ⌛ ${sessionText}"
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
# Context window usage (Claude Code v2.0.65+)
|
|
303
|
-
if ($contextText) {
|
|
304
|
-
$output += " $contextText"
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
Write-Host $output
|
package/statusline.sh
DELETED
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Custom Claude Code statusline for Bash
|
|
3
|
-
# Cross-platform support: macOS, Linux
|
|
4
|
-
# Theme: detailed | Features: directory, git, model, usage, session, tokens
|
|
5
|
-
#
|
|
6
|
-
# Context Window Calculation:
|
|
7
|
-
# - 100% = compaction threshold (not model limit)
|
|
8
|
-
# - Self-calibrates via PreCompact hook
|
|
9
|
-
# - Falls back to smart defaults based on window size
|
|
10
|
-
|
|
11
|
-
input=$(cat)
|
|
12
|
-
|
|
13
|
-
# Calibration file path (now in /tmp/ck/ namespace - fixes #178)
|
|
14
|
-
CALIBRATION_PATH="${TMPDIR:-/tmp}/ck/calibration.json"
|
|
15
|
-
|
|
16
|
-
# ---- time helpers ----
|
|
17
|
-
to_epoch() {
|
|
18
|
-
ts="$1"
|
|
19
|
-
if command -v gdate >/dev/null 2>&1; then gdate -d "$ts" +%s 2>/dev/null && return; fi
|
|
20
|
-
date -u -j -f "%Y-%m-%dT%H:%M:%S%z" "${ts/Z/+0000}" +%s 2>/dev/null && return
|
|
21
|
-
python3 - "$ts" <<'PY' 2>/dev/null
|
|
22
|
-
import sys, datetime
|
|
23
|
-
s=sys.argv[1].replace('Z','+00:00')
|
|
24
|
-
print(int(datetime.datetime.fromisoformat(s).timestamp()))
|
|
25
|
-
PY
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
fmt_time_hm() {
|
|
29
|
-
epoch="$1"
|
|
30
|
-
if date -r 0 +%s >/dev/null 2>&1; then date -r "$epoch" +"%H:%M"; else date -d "@$epoch" +"%H:%M"; fi
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
# ---- compact threshold calculation ----
|
|
34
|
-
# Get smart default compact threshold based on context window size
|
|
35
|
-
# Research-based defaults:
|
|
36
|
-
# - 200k window: ~80% (160k) - confirmed from GitHub issues
|
|
37
|
-
# - 500k window: ~60% (300k) - estimated
|
|
38
|
-
# - 1M window: ~33% (330k) - derived from user observations
|
|
39
|
-
get_default_compact_threshold() {
|
|
40
|
-
local context_size="$1"
|
|
41
|
-
|
|
42
|
-
# Known thresholds (autocompact buffer = 22.5% for 200k)
|
|
43
|
-
case "$context_size" in
|
|
44
|
-
200000) echo 155000; return ;; # 77.5% - confirmed via /context
|
|
45
|
-
1000000) echo 330000; return ;; # 33% - 1M beta window
|
|
46
|
-
esac
|
|
47
|
-
|
|
48
|
-
# Tiered defaults based on window size
|
|
49
|
-
if [ "$context_size" -ge 1000000 ] 2>/dev/null; then
|
|
50
|
-
echo $((context_size * 33 / 100))
|
|
51
|
-
else
|
|
52
|
-
# Default: ~77.5% for standard windows (200k confirmed)
|
|
53
|
-
echo $((context_size * 775 / 1000))
|
|
54
|
-
fi
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
# Read calibrated threshold from file if available
|
|
58
|
-
get_compact_threshold() {
|
|
59
|
-
local context_size="$1"
|
|
60
|
-
|
|
61
|
-
# Try to read calibration file
|
|
62
|
-
if [ -f "$CALIBRATION_PATH" ] && command -v jq >/dev/null 2>&1; then
|
|
63
|
-
local calibrated
|
|
64
|
-
calibrated=$(jq -r --arg key "$context_size" '.[$key].threshold // empty' "$CALIBRATION_PATH" 2>/dev/null)
|
|
65
|
-
if [ -n "$calibrated" ] && [ "$calibrated" -gt 0 ] 2>/dev/null; then
|
|
66
|
-
echo "$calibrated"
|
|
67
|
-
return
|
|
68
|
-
fi
|
|
69
|
-
fi
|
|
70
|
-
|
|
71
|
-
# Fall back to smart defaults
|
|
72
|
-
get_default_compact_threshold "$context_size"
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
# ---- progress bar ----
|
|
76
|
-
progress_bar() {
|
|
77
|
-
pct="${1:-0}"; width="${2:-12}"
|
|
78
|
-
[[ "$pct" =~ ^[0-9]+$ ]] || pct=0; ((pct<0))&&pct=0; ((pct>100))&&pct=100
|
|
79
|
-
filled=$(( pct * width / 100 )); empty=$(( width - filled ))
|
|
80
|
-
# ▰ (U+25B0) filled, ▱ (U+25B1) empty - smooth horizontal rectangles
|
|
81
|
-
for ((i=0; i<filled; i++)); do printf '▰'; done
|
|
82
|
-
for ((i=0; i<empty; i++)); do printf '▱'; done
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
# ---- severity emoji (no colors) ----
|
|
86
|
-
get_severity_emoji() {
|
|
87
|
-
local pct="$1"
|
|
88
|
-
if [ "$pct" -ge 90 ] 2>/dev/null; then
|
|
89
|
-
echo "🔴" # Critical
|
|
90
|
-
elif [ "$pct" -ge 70 ] 2>/dev/null; then
|
|
91
|
-
echo "🟡" # Warning
|
|
92
|
-
else
|
|
93
|
-
echo "🟢" # Healthy
|
|
94
|
-
fi
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
# git utilities
|
|
98
|
-
num_or_zero() { v="$1"; [[ "$v" =~ ^[0-9]+$ ]] && echo "$v" || echo 0; }
|
|
99
|
-
|
|
100
|
-
# ---- git (detect early for fallback mode) ----
|
|
101
|
-
git_branch=""
|
|
102
|
-
if git rev-parse --git-dir >/dev/null 2>&1; then
|
|
103
|
-
git_branch=$(git branch --show-current 2>/dev/null || git rev-parse --short HEAD 2>/dev/null)
|
|
104
|
-
fi
|
|
105
|
-
|
|
106
|
-
# ---- basics ----
|
|
107
|
-
if command -v jq >/dev/null 2>&1; then
|
|
108
|
-
current_dir=$(echo "$input" | jq -r '.workspace.current_dir // .cwd // "unknown"' 2>/dev/null | sed "s|^$HOME|~|g")
|
|
109
|
-
model_name=$(echo "$input" | jq -r '.model.display_name // "Claude"' 2>/dev/null)
|
|
110
|
-
model_version=$(echo "$input" | jq -r '.model.version // ""' 2>/dev/null)
|
|
111
|
-
else
|
|
112
|
-
# Fallback: Extract basic info without jq using grep/sed
|
|
113
|
-
current_dir=$(echo "$input" | grep -o '"current_dir"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | sed 's/.*:.*"\([^"]*\)".*/\1/' | sed "s|^$HOME|~|g")
|
|
114
|
-
[ -z "$current_dir" ] && current_dir=$(pwd | sed "s|^$HOME|~|g")
|
|
115
|
-
model_name=$(echo "$input" | grep -o '"display_name"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | sed 's/.*:.*"\([^"]*\)".*/\1/')
|
|
116
|
-
[ -z "$model_name" ] && model_name="Claude"
|
|
117
|
-
model_version=""
|
|
118
|
-
# Render minimal statusline without jq and exit
|
|
119
|
-
printf '📁 %s' "$current_dir"
|
|
120
|
-
if [ -n "$git_branch" ]; then
|
|
121
|
-
printf ' 🌿 %s' "$git_branch"
|
|
122
|
-
fi
|
|
123
|
-
printf ' 🤖 %s' "$model_name"
|
|
124
|
-
printf '\n'
|
|
125
|
-
exit 0
|
|
126
|
-
fi
|
|
127
|
-
|
|
128
|
-
# ---- Native Claude Code data integration ----
|
|
129
|
-
session_txt=""
|
|
130
|
-
cost_usd=""; lines_added=0; lines_removed=0
|
|
131
|
-
context_pct=0; context_txt=""
|
|
132
|
-
BILLING_MODE="${CLAUDE_BILLING_MODE:-api}"
|
|
133
|
-
|
|
134
|
-
# Extract native cost data from Claude Code
|
|
135
|
-
cost_usd=$(echo "$input" | jq -r '.cost.total_cost_usd // empty' 2>/dev/null)
|
|
136
|
-
lines_added=$(echo "$input" | jq -r '.cost.total_lines_added // 0' 2>/dev/null)
|
|
137
|
-
lines_removed=$(echo "$input" | jq -r '.cost.total_lines_removed // 0' 2>/dev/null)
|
|
138
|
-
|
|
139
|
-
# Extract context window usage (Claude Code v2.0.65+)
|
|
140
|
-
# Calculate percentage against COMPACT THRESHOLD, not model limit
|
|
141
|
-
# 100% = compaction imminent
|
|
142
|
-
context_input=$(echo "$input" | jq -r '.context_window.total_input_tokens // 0' 2>/dev/null)
|
|
143
|
-
context_output=$(echo "$input" | jq -r '.context_window.total_output_tokens // 0' 2>/dev/null)
|
|
144
|
-
context_size=$(echo "$input" | jq -r '.context_window.context_window_size // 0' 2>/dev/null)
|
|
145
|
-
|
|
146
|
-
if [ -n "$context_size" ] && [ "$context_size" -gt 0 ] 2>/dev/null; then
|
|
147
|
-
context_total=$((context_input + context_output))
|
|
148
|
-
compact_threshold=$(get_compact_threshold "$context_size")
|
|
149
|
-
|
|
150
|
-
# Calculate percentage against compact threshold
|
|
151
|
-
context_pct=$((context_total * 100 / compact_threshold))
|
|
152
|
-
# Clamp to 100% max to handle edge cases
|
|
153
|
-
((context_pct > 100)) && context_pct=100
|
|
154
|
-
|
|
155
|
-
# Get severity emoji and progress bar
|
|
156
|
-
severity_emoji=$(get_severity_emoji "$context_pct")
|
|
157
|
-
bar=$(progress_bar "$context_pct" 12)
|
|
158
|
-
context_txt="${severity_emoji} ${bar} ${context_pct}%"
|
|
159
|
-
fi
|
|
160
|
-
|
|
161
|
-
# Session timer - parse local transcript JSONL (zero external dependencies)
|
|
162
|
-
transcript_path=$(echo "$input" | jq -r '.transcript_path // empty' 2>/dev/null)
|
|
163
|
-
|
|
164
|
-
if [ -n "$transcript_path" ] && [ -f "$transcript_path" ]; then
|
|
165
|
-
# Get first API call timestamp from session JSONL
|
|
166
|
-
first_api_call=$(grep -m1 '"usage"' "$transcript_path" 2>/dev/null | jq -r '.timestamp // empty' 2>/dev/null)
|
|
167
|
-
|
|
168
|
-
if [ -n "$first_api_call" ]; then
|
|
169
|
-
# Calculate 5-hour billing block (Anthropic windows)
|
|
170
|
-
# Blocks: 00:00-05:00, 05:00-10:00, 10:00-15:00, 15:00-20:00, 20:00-01:00 UTC
|
|
171
|
-
current_utc_hour=$(date -u +%H)
|
|
172
|
-
block_start=$((10#$current_utc_hour / 5 * 5))
|
|
173
|
-
block_end=$((block_start + 5))
|
|
174
|
-
|
|
175
|
-
# Handle day wraparound (e.g., 20:00 UTC block ends at 01:00 UTC next day)
|
|
176
|
-
if [ $block_end -ge 24 ]; then
|
|
177
|
-
block_end=$((block_end - 24))
|
|
178
|
-
block_end_date="tomorrow"
|
|
179
|
-
else
|
|
180
|
-
block_end_date="today"
|
|
181
|
-
fi
|
|
182
|
-
|
|
183
|
-
# Calculate remaining time until block reset
|
|
184
|
-
now_sec=$(date +%s)
|
|
185
|
-
block_end_sec=$(date -u -d "${block_end_date} ${block_end}:00 UTC" +%s 2>/dev/null)
|
|
186
|
-
|
|
187
|
-
if [ -n "$block_end_sec" ] && [ "$block_end_sec" -gt 0 ]; then
|
|
188
|
-
remaining=$((block_end_sec - now_sec))
|
|
189
|
-
|
|
190
|
-
if [ $remaining -gt 0 ] && [ $remaining -lt 18000 ]; then
|
|
191
|
-
rh=$((remaining / 3600))
|
|
192
|
-
rm=$(((remaining % 3600) / 60))
|
|
193
|
-
block_end_local=$(date -d "@${block_end_sec}" +"%H:%M" 2>/dev/null)
|
|
194
|
-
session_txt="${rh}h ${rm}m until reset at ${block_end_local}"
|
|
195
|
-
fi
|
|
196
|
-
fi
|
|
197
|
-
fi
|
|
198
|
-
fi
|
|
199
|
-
|
|
200
|
-
# ---- render statusline (no ANSI colors - emoji only) ----
|
|
201
|
-
printf '📁 %s' "$current_dir"
|
|
202
|
-
|
|
203
|
-
# git display
|
|
204
|
-
if [ -n "$git_branch" ]; then
|
|
205
|
-
printf ' 🌿 %s' "$git_branch"
|
|
206
|
-
fi
|
|
207
|
-
|
|
208
|
-
printf ' 🤖 %s' "$model_name"
|
|
209
|
-
|
|
210
|
-
if [ -n "$model_version" ] && [ "$model_version" != "null" ]; then
|
|
211
|
-
printf ' %s' "$model_version"
|
|
212
|
-
fi
|
|
213
|
-
|
|
214
|
-
# session time
|
|
215
|
-
if [ -n "$session_txt" ]; then
|
|
216
|
-
printf ' ⌛ %s' "$session_txt"
|
|
217
|
-
fi
|
|
218
|
-
|
|
219
|
-
# cost (only show for API billing mode)
|
|
220
|
-
if [ "$BILLING_MODE" = "api" ] && [ -n "$cost_usd" ] && [[ "$cost_usd" =~ ^[0-9.]+$ ]]; then
|
|
221
|
-
printf ' 💵 $%.4f' "$cost_usd"
|
|
222
|
-
fi
|
|
223
|
-
|
|
224
|
-
# lines changed
|
|
225
|
-
if [ -n "$lines_added" ] && [ -n "$lines_removed" ] && [[ "$lines_added" =~ ^[0-9]+$ ]] && [[ "$lines_removed" =~ ^[0-9]+$ ]]; then
|
|
226
|
-
if [ "$lines_added" -gt 0 ] || [ "$lines_removed" -gt 0 ]; then
|
|
227
|
-
printf ' 📝 +%d -%d' "$lines_added" "$lines_removed"
|
|
228
|
-
fi
|
|
229
|
-
fi
|
|
230
|
-
|
|
231
|
-
# context window usage (Claude Code v2.0.65+)
|
|
232
|
-
if [ -n "$context_txt" ]; then
|
|
233
|
-
printf ' %s' "$context_txt"
|
|
234
|
-
fi
|
|
235
|
-
|
|
236
|
-
# trailing newline (POSIX compliance)
|
|
237
|
-
printf '\n'
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# Development Rules
|
|
2
|
-
|
|
3
|
-
**IMPORTANT:** Analyze the skills catalog and activate the skills that are needed for the task during the process.
|
|
4
|
-
**IMPORTANT:** You ALWAYS follow these principles: **YAGNI (You Aren't Gonna Need It) - KISS (Keep It Simple, Stupid) - DRY (Don't Repeat Yourself)**
|
|
5
|
-
|
|
6
|
-
## General
|
|
7
|
-
- **File Naming**: Use kebab-case for file names with a meaningful name that describes the purpose of the file, doesn't matter if the file name is long, just make sure when LLMs read the file names while using Grep or other tools, they can understand the purpose of the file right away without reading the file content.
|
|
8
|
-
- **File Size Management**: Keep individual code files under 200 lines for optimal context management
|
|
9
|
-
- Split large files into smaller, focused components/modules
|
|
10
|
-
- Use composition over inheritance for complex widgets
|
|
11
|
-
- Extract utility functions into separate modules
|
|
12
|
-
- Create dedicated service classes for business logic
|
|
13
|
-
- When looking for docs, activate `docs-seeker` skill (`context7` reference) for exploring latest docs.
|
|
14
|
-
- Use `gh` bash command to interact with Github features if needed
|
|
15
|
-
- Use `psql` bash command to query Postgres database for debugging if needed
|
|
16
|
-
- Use `ai-multimodal` skill for describing details of images, videos, documents, etc. if needed
|
|
17
|
-
- Use `ai-multimodal` skill and `imagemagick` skill for generating and editing images, videos, documents, etc. if needed
|
|
18
|
-
- Use `sequential-thinking` and `debugging` skills for sequential thinking, analyzing code, debugging, etc. if needed
|
|
19
|
-
- **[IMPORTANT]** Follow the codebase structure and code standards in `./docs` during implementation.
|
|
20
|
-
- **[IMPORTANT]** Do not just simulate the implementation or mocking them, always implement the real code.
|
|
21
|
-
|
|
22
|
-
## Code Quality Guidelines
|
|
23
|
-
- Read and follow codebase structure and code standards in `./docs`
|
|
24
|
-
- Don't be too harsh on code linting, but **make sure there are no syntax errors and code are compilable**
|
|
25
|
-
- Prioritize functionality and readability over strict style enforcement and code formatting
|
|
26
|
-
- Use reasonable code quality standards that enhance developer productivity
|
|
27
|
-
- Use try catch error handling & cover security standards
|
|
28
|
-
- Use `code-reviewer` agent to review code after every implementation
|
|
29
|
-
|
|
30
|
-
## Pre-commit/Push Rules
|
|
31
|
-
- Run linting before commit
|
|
32
|
-
- Run tests before push (DO NOT ignore failed tests just to pass the build or github actions)
|
|
33
|
-
- Keep commits focused on the actual code changes
|
|
34
|
-
- **DO NOT** commit and push any confidential information (such as dotenv files, API keys, database credentials, etc.) to git repository!
|
|
35
|
-
- Create clean, professional commit messages without AI references. Use conventional commit format.
|
|
36
|
-
|
|
37
|
-
## Code Implementation
|
|
38
|
-
- Write clean, readable, and maintainable code
|
|
39
|
-
- Follow established architectural patterns
|
|
40
|
-
- Implement features according to specifications
|
|
41
|
-
- Handle edge cases and error scenarios
|
|
42
|
-
- **DO NOT** create new enhanced files, update to the existing files directly.
|