aigroup-workflow 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/fix-build.md +10 -5
- package/.claude/commands/init-project.md +13 -8
- package/.claude/commands/plan.md +15 -8
- package/.claude/commands/review.md +12 -6
- package/.claude/commands/tdd.md +11 -5
- package/.claude/commands/workflow-start.md +20 -11
- package/.claude/settings.json +28 -0
- package/.codex/agents/architect.toml +207 -0
- package/.codex/agents/build-error-resolver.toml +110 -0
- package/.codex/agents/code-reviewer.toml +233 -0
- package/.codex/agents/doc-updater.toml +103 -0
- package/.codex/agents/e2e-runner.toml +103 -0
- package/.codex/agents/get-current-datetime.toml +23 -0
- package/.codex/agents/init-architect.toml +181 -0
- package/.codex/agents/planner.toml +208 -0
- package/.codex/agents/refactor-cleaner.toml +81 -0
- package/.codex/agents/rust-reviewer.toml +90 -0
- package/.codex/agents/security-reviewer.toml +104 -0
- package/.codex/agents/tdd-guide.toml +87 -0
- package/AGENTS.md +2 -2
- package/CLAUDE.md +23 -1
- package/LICENSE +20 -20
- package/README.md +333 -333
- package/agents/a11y-architect.md +141 -141
- package/agents/architect.md +211 -211
- package/agents/build-error-resolver.md +114 -114
- package/agents/chief-of-staff.md +151 -151
- package/agents/code-architect.md +71 -71
- package/agents/code-explorer.md +69 -69
- package/agents/code-reviewer.md +237 -237
- package/agents/code-simplifier.md +47 -47
- package/agents/comment-analyzer.md +45 -45
- package/agents/conversation-analyzer.md +52 -52
- package/agents/cpp-build-resolver.md +90 -90
- package/agents/cpp-reviewer.md +72 -72
- package/agents/csharp-reviewer.md +101 -101
- package/agents/dart-build-resolver.md +201 -201
- package/agents/database-reviewer.md +91 -91
- package/agents/doc-updater.md +107 -107
- package/agents/docs-lookup.md +68 -68
- package/agents/e2e-runner.md +107 -107
- package/agents/flutter-reviewer.md +243 -243
- package/agents/gan-evaluator.md +209 -209
- package/agents/gan-generator.md +131 -131
- package/agents/gan-planner.md +99 -99
- package/agents/get-current-datetime.md +26 -26
- package/agents/go-build-resolver.md +94 -94
- package/agents/go-reviewer.md +76 -76
- package/agents/harness-optimizer.md +35 -35
- package/agents/healthcare-reviewer.md +83 -83
- package/agents/java-build-resolver.md +153 -153
- package/agents/java-reviewer.md +92 -92
- package/agents/kotlin-build-resolver.md +118 -118
- package/agents/kotlin-reviewer.md +159 -159
- package/agents/loop-operator.md +36 -36
- package/agents/opensource-forker.md +198 -198
- package/agents/opensource-packager.md +249 -249
- package/agents/opensource-sanitizer.md +188 -188
- package/agents/performance-optimizer.md +446 -446
- package/agents/planner.md +212 -212
- package/agents/pr-test-analyzer.md +45 -45
- package/agents/python-reviewer.md +98 -98
- package/agents/pytorch-build-resolver.md +120 -120
- package/agents/refactor-cleaner.md +85 -85
- package/agents/rust-build-resolver.md +148 -148
- package/agents/rust-reviewer.md +94 -94
- package/agents/security-reviewer.md +108 -108
- package/agents/seo-specialist.md +59 -59
- package/agents/silent-failure-hunter.md +50 -50
- package/agents/tdd-guide.md +91 -91
- package/agents/type-design-analyzer.md +41 -41
- package/agents/typescript-reviewer.md +112 -112
- package/cli/commands/update.mjs +1 -1
- package/cli/utils/scaffold.mjs +53 -0
- package/docs/rules/agents.md +166 -50
- package/docs/rules/cpp/coding-style.md +44 -44
- package/docs/rules/cpp/hooks.md +39 -39
- package/docs/rules/cpp/patterns.md +51 -51
- package/docs/rules/cpp/security.md +51 -51
- package/docs/rules/cpp/testing.md +44 -44
- package/docs/rules/csharp/coding-style.md +72 -72
- package/docs/rules/csharp/hooks.md +25 -25
- package/docs/rules/csharp/patterns.md +50 -50
- package/docs/rules/csharp/security.md +58 -58
- package/docs/rules/csharp/testing.md +46 -46
- package/docs/rules/dart/coding-style.md +159 -159
- package/docs/rules/dart/hooks.md +66 -66
- package/docs/rules/dart/patterns.md +261 -261
- package/docs/rules/dart/security.md +135 -135
- package/docs/rules/dart/testing.md +215 -215
- package/docs/rules/golang/coding-style.md +32 -32
- package/docs/rules/golang/hooks.md +17 -17
- package/docs/rules/golang/patterns.md +45 -45
- package/docs/rules/golang/security.md +34 -34
- package/docs/rules/golang/testing.md +31 -31
- package/docs/rules/java/coding-style.md +114 -114
- package/docs/rules/java/hooks.md +18 -18
- package/docs/rules/java/patterns.md +146 -146
- package/docs/rules/java/security.md +100 -100
- package/docs/rules/java/testing.md +131 -131
- package/docs/rules/kotlin/coding-style.md +86 -86
- package/docs/rules/kotlin/hooks.md +17 -17
- package/docs/rules/kotlin/patterns.md +146 -146
- package/docs/rules/kotlin/security.md +82 -82
- package/docs/rules/kotlin/testing.md +128 -128
- package/docs/rules/perl/coding-style.md +46 -46
- package/docs/rules/perl/hooks.md +22 -22
- package/docs/rules/perl/patterns.md +76 -76
- package/docs/rules/perl/security.md +69 -69
- package/docs/rules/perl/testing.md +54 -54
- package/docs/rules/php/coding-style.md +40 -40
- package/docs/rules/php/hooks.md +24 -24
- package/docs/rules/php/patterns.md +33 -33
- package/docs/rules/php/security.md +37 -37
- package/docs/rules/php/testing.md +39 -39
- package/docs/rules/python/coding-style.md +42 -42
- package/docs/rules/python/hooks.md +19 -19
- package/docs/rules/python/patterns.md +39 -39
- package/docs/rules/python/security.md +30 -30
- package/docs/rules/python/testing.md +38 -38
- package/docs/rules/rust/coding-style.md +151 -151
- package/docs/rules/rust/hooks.md +16 -16
- package/docs/rules/rust/patterns.md +168 -168
- package/docs/rules/rust/security.md +141 -141
- package/docs/rules/rust/testing.md +154 -154
- package/docs/rules/swift/coding-style.md +47 -47
- package/docs/rules/swift/hooks.md +20 -20
- package/docs/rules/swift/patterns.md +66 -66
- package/docs/rules/swift/security.md +33 -33
- package/docs/rules/swift/testing.md +45 -45
- package/docs/rules/typescript/coding-style.md +199 -199
- package/docs/rules/typescript/hooks.md +22 -22
- package/docs/rules/typescript/patterns.md +52 -52
- package/docs/rules/typescript/security.md +28 -28
- package/docs/rules/typescript/testing.md +18 -18
- package/docs/rules/web/coding-style.md +96 -96
- package/docs/rules/web/design-quality.md +62 -62
- package/docs/rules/web/hooks.md +120 -120
- package/docs/rules/web/patterns.md +79 -79
- package/docs/rules/web/performance.md +64 -64
- package/docs/rules/web/security.md +57 -57
- package/docs/rules/web/testing.md +55 -55
- package/docs/templates/README.md +36 -36
- package/docs/templates/ai-project-final.md +124 -124
- package/docs/templates/ai-project.md +105 -105
- package/docs/templates/api.md +157 -157
- package/docs/templates/bug.md +62 -62
- package/docs/templates/code-review.md +87 -87
- package/docs/templates/generic.md +116 -116
- package/docs/templates/implementation-plan.md +1 -1
- package/docs/templates/meeting.md +68 -68
- package/docs/templates/prd.md +98 -98
- package/docs/templates/ui.md +134 -134
- package/docs/workflow-pipeline.md +11 -10
- package/package.json +40 -39
- package/scripts/hooks/checks/orchestration-artifacts.cjs +28 -23
- package/scripts/hooks/checks/workflow-state.cjs +4 -5
- package/scripts/orchestration/lib/orchestrator.cjs +344 -117
- package/scripts/orchestration/lib/validate.cjs +145 -0
- package/scripts/orchestration/session.cjs +88 -44
- package/skills/SUPERPOWERS-LICENSE +21 -21
- package/skills/ai-ml/fine-tuning-expert/SKILL.md +162 -162
- package/skills/ai-ml/fine-tuning-expert/references/dataset-preparation.md +540 -540
- package/skills/ai-ml/fine-tuning-expert/references/deployment-optimization.md +673 -673
- package/skills/ai-ml/fine-tuning-expert/references/evaluation-metrics.md +597 -597
- package/skills/ai-ml/fine-tuning-expert/references/hyperparameter-tuning.md +565 -565
- package/skills/ai-ml/fine-tuning-expert/references/lora-peft.md +347 -347
- package/skills/ai-ml/ml-pipeline/SKILL.md +159 -159
- package/skills/ai-ml/ml-pipeline/references/experiment-tracking.md +833 -833
- package/skills/ai-ml/ml-pipeline/references/feature-engineering.md +631 -631
- package/skills/ai-ml/ml-pipeline/references/model-validation.md +978 -978
- package/skills/ai-ml/ml-pipeline/references/pipeline-orchestration.md +907 -907
- package/skills/ai-ml/ml-pipeline/references/training-pipelines.md +782 -782
- package/skills/ai-ml/rag-architect/SKILL.md +194 -194
- package/skills/ai-ml/rag-architect/references/chunking-strategies.md +878 -878
- package/skills/ai-ml/rag-architect/references/embedding-models.md +561 -561
- package/skills/ai-ml/rag-architect/references/rag-evaluation.md +833 -833
- package/skills/ai-ml/rag-architect/references/retrieval-optimization.md +795 -795
- package/skills/ai-ml/rag-architect/references/vector-databases.md +589 -589
- package/skills/ai-ml/spark-engineer/SKILL.md +148 -148
- package/skills/ai-ml/spark-engineer/references/partitioning-caching.md +543 -543
- package/skills/ai-ml/spark-engineer/references/performance-tuning.md +544 -544
- package/skills/ai-ml/spark-engineer/references/rdd-operations.md +599 -599
- package/skills/ai-ml/spark-engineer/references/spark-sql-dataframes.md +474 -474
- package/skills/ai-ml/spark-engineer/references/streaming-patterns.md +786 -786
- package/skills/backend/api-designer/SKILL.md +217 -217
- package/skills/backend/api-designer/references/error-handling.md +541 -541
- package/skills/backend/api-designer/references/openapi.md +824 -824
- package/skills/backend/api-designer/references/pagination.md +494 -494
- package/skills/backend/api-designer/references/rest-patterns.md +335 -335
- package/skills/backend/api-designer/references/versioning.md +391 -391
- package/skills/backend/architecture-designer/SKILL.md +117 -117
- package/skills/backend/architecture-designer/references/adr-template.md +116 -116
- package/skills/backend/architecture-designer/references/architecture-patterns.md +111 -111
- package/skills/backend/architecture-designer/references/database-selection.md +102 -102
- package/skills/backend/architecture-designer/references/nfr-checklist.md +112 -112
- package/skills/backend/architecture-designer/references/system-design.md +100 -100
- package/skills/backend/code-documenter/SKILL.md +147 -147
- package/skills/backend/code-documenter/references/api-docs-fastapi-django.md +166 -166
- package/skills/backend/code-documenter/references/api-docs-nestjs-express.md +220 -220
- package/skills/backend/code-documenter/references/coverage-reports.md +125 -125
- package/skills/backend/code-documenter/references/documentation-systems.md +333 -333
- package/skills/backend/code-documenter/references/interactive-api-docs.md +531 -531
- package/skills/backend/code-documenter/references/python-docstrings.md +121 -121
- package/skills/backend/code-documenter/references/typescript-jsdoc.md +145 -145
- package/skills/backend/code-documenter/references/user-guides-tutorials.md +530 -530
- package/skills/backend/debugging-wizard/SKILL.md +105 -105
- package/skills/backend/debugging-wizard/references/common-patterns.md +132 -132
- package/skills/backend/debugging-wizard/references/debugging-tools.md +140 -140
- package/skills/backend/debugging-wizard/references/quick-fixes.md +177 -177
- package/skills/backend/debugging-wizard/references/strategies.md +142 -142
- package/skills/backend/debugging-wizard/references/systematic-debugging.md +367 -367
- package/skills/backend/feature-forge/SKILL.md +98 -98
- package/skills/backend/feature-forge/references/acceptance-criteria.md +104 -104
- package/skills/backend/feature-forge/references/ears-syntax.md +99 -99
- package/skills/backend/feature-forge/references/interview-questions.md +150 -150
- package/skills/backend/feature-forge/references/pre-discovery-subagents.md +54 -54
- package/skills/backend/feature-forge/references/specification-template.md +103 -103
- package/skills/backend/fullstack-guardian/SKILL.md +105 -105
- package/skills/backend/fullstack-guardian/references/api-design-standards.md +307 -307
- package/skills/backend/fullstack-guardian/references/architecture-decisions.md +350 -350
- package/skills/backend/fullstack-guardian/references/backend-patterns.md +237 -237
- package/skills/backend/fullstack-guardian/references/common-patterns.md +134 -134
- package/skills/backend/fullstack-guardian/references/deliverables-checklist.md +354 -354
- package/skills/backend/fullstack-guardian/references/design-template.md +91 -91
- package/skills/backend/fullstack-guardian/references/error-handling.md +135 -135
- package/skills/backend/fullstack-guardian/references/frontend-patterns.md +340 -340
- package/skills/backend/fullstack-guardian/references/integration-patterns.md +333 -333
- package/skills/backend/fullstack-guardian/references/security-checklist.md +106 -106
- package/skills/backend/graphql-architect/SKILL.md +146 -146
- package/skills/backend/graphql-architect/references/federation.md +418 -418
- package/skills/backend/graphql-architect/references/migration-from-rest.md +1141 -1141
- package/skills/backend/graphql-architect/references/resolvers.md +425 -425
- package/skills/backend/graphql-architect/references/schema-design.md +393 -393
- package/skills/backend/graphql-architect/references/security.md +569 -569
- package/skills/backend/graphql-architect/references/subscriptions.md +510 -510
- package/skills/backend/legacy-modernizer/SKILL.md +137 -137
- package/skills/backend/legacy-modernizer/references/legacy-testing.md +381 -381
- package/skills/backend/legacy-modernizer/references/migration-strategies.md +423 -423
- package/skills/backend/legacy-modernizer/references/refactoring-patterns.md +395 -395
- package/skills/backend/legacy-modernizer/references/strangler-fig-pattern.md +281 -281
- package/skills/backend/legacy-modernizer/references/system-assessment.md +487 -487
- package/skills/backend/microservices-architect/SKILL.md +164 -164
- package/skills/backend/microservices-architect/references/communication.md +499 -499
- package/skills/backend/microservices-architect/references/data.md +721 -721
- package/skills/backend/microservices-architect/references/decomposition.md +344 -344
- package/skills/backend/microservices-architect/references/observability.md +805 -805
- package/skills/backend/microservices-architect/references/patterns.md +603 -603
- package/skills/database/database-optimizer/SKILL.md +147 -147
- package/skills/database/database-optimizer/references/index-strategies.md +331 -331
- package/skills/database/database-optimizer/references/monitoring-analysis.md +501 -501
- package/skills/database/database-optimizer/references/mysql-tuning.md +452 -452
- package/skills/database/database-optimizer/references/postgresql-tuning.md +413 -413
- package/skills/database/database-optimizer/references/query-optimization.md +251 -251
- package/skills/database/postgres-pro/SKILL.md +152 -152
- package/skills/database/postgres-pro/references/extensions.md +404 -404
- package/skills/database/postgres-pro/references/jsonb.md +321 -321
- package/skills/database/postgres-pro/references/maintenance.md +481 -481
- package/skills/database/postgres-pro/references/performance.md +265 -265
- package/skills/database/postgres-pro/references/replication.md +446 -446
- package/skills/database/sql-pro/SKILL.md +129 -129
- package/skills/database/sql-pro/references/database-design.md +402 -402
- package/skills/database/sql-pro/references/dialect-differences.md +419 -419
- package/skills/database/sql-pro/references/optimization.md +384 -384
- package/skills/database/sql-pro/references/query-patterns.md +285 -285
- package/skills/database/sql-pro/references/window-functions.md +328 -328
- package/skills/dotnet/csharp-developer/SKILL.md +125 -125
- package/skills/dotnet/csharp-developer/references/aspnet-core.md +394 -394
- package/skills/dotnet/csharp-developer/references/blazor.md +553 -553
- package/skills/dotnet/csharp-developer/references/entity-framework.md +409 -409
- package/skills/dotnet/csharp-developer/references/modern-csharp.md +248 -248
- package/skills/dotnet/csharp-developer/references/performance.md +498 -498
- package/skills/dotnet/dotnet-core-expert/SKILL.md +138 -138
- package/skills/dotnet/dotnet-core-expert/references/authentication.md +546 -546
- package/skills/dotnet/dotnet-core-expert/references/clean-architecture.md +455 -455
- package/skills/dotnet/dotnet-core-expert/references/cloud-native.md +548 -548
- package/skills/dotnet/dotnet-core-expert/references/entity-framework.md +440 -440
- package/skills/dotnet/dotnet-core-expert/references/minimal-apis.md +319 -319
- package/skills/frontend/angular-architect/SKILL.md +152 -152
- package/skills/frontend/angular-architect/references/components.md +297 -297
- package/skills/frontend/angular-architect/references/ngrx.md +401 -401
- package/skills/frontend/angular-architect/references/routing.md +361 -361
- package/skills/frontend/angular-architect/references/rxjs.md +319 -319
- package/skills/frontend/angular-architect/references/testing.md +405 -405
- package/skills/frontend/design-commands/design.md +91 -91
- package/skills/frontend/design-commands/handoff.md +97 -97
- package/skills/frontend/design-commands/prototype.md +120 -120
- package/skills/frontend/design-commands/spec.md +160 -160
- package/skills/frontend/design-commands/style.md +78 -78
- package/skills/frontend/flutter-expert/SKILL.md +138 -138
- package/skills/frontend/flutter-expert/references/bloc-state.md +259 -259
- package/skills/frontend/flutter-expert/references/gorouter-navigation.md +119 -119
- package/skills/frontend/flutter-expert/references/performance.md +99 -99
- package/skills/frontend/flutter-expert/references/project-structure.md +118 -118
- package/skills/frontend/flutter-expert/references/riverpod-state.md +130 -130
- package/skills/frontend/flutter-expert/references/widget-patterns.md +123 -123
- package/skills/frontend/nextjs-developer/SKILL.md +143 -143
- package/skills/frontend/nextjs-developer/references/app-router.md +311 -311
- package/skills/frontend/nextjs-developer/references/data-fetching.md +482 -482
- package/skills/frontend/nextjs-developer/references/deployment.md +545 -545
- package/skills/frontend/nextjs-developer/references/server-actions.md +462 -462
- package/skills/frontend/nextjs-developer/references/server-components.md +384 -384
- package/skills/frontend/react-expert/SKILL.md +149 -149
- package/skills/frontend/react-expert/references/hooks-patterns.md +162 -162
- package/skills/frontend/react-expert/references/migration-class-to-modern.md +1119 -1119
- package/skills/frontend/react-expert/references/performance.md +168 -168
- package/skills/frontend/react-expert/references/react-19-features.md +174 -174
- package/skills/frontend/react-expert/references/server-components.md +143 -143
- package/skills/frontend/react-expert/references/state-management.md +171 -171
- package/skills/frontend/react-expert/references/testing-react.md +174 -174
- package/skills/frontend/react-native-expert/SKILL.md +185 -185
- package/skills/frontend/react-native-expert/references/expo-router.md +187 -187
- package/skills/frontend/react-native-expert/references/list-optimization.md +204 -204
- package/skills/frontend/react-native-expert/references/platform-handling.md +188 -188
- package/skills/frontend/react-native-expert/references/project-structure.md +171 -171
- package/skills/frontend/react-native-expert/references/storage-hooks.md +173 -173
- package/skills/frontend/senior-frontend/SKILL.md +477 -477
- package/skills/frontend/senior-frontend/references/frontend_best_practices.md +806 -806
- package/skills/frontend/senior-frontend/references/nextjs_optimization_guide.md +724 -724
- package/skills/frontend/senior-frontend/references/react_patterns.md +746 -746
- package/skills/frontend/senior-frontend/scripts/bundle_analyzer.py +407 -407
- package/skills/frontend/senior-frontend/scripts/component_generator.py +329 -329
- package/skills/frontend/senior-frontend/scripts/frontend_scaffolder.py +1005 -1005
- package/skills/frontend/ui-ux-pro-max/SKILL.md +386 -386
- package/skills/frontend/ui-ux-pro-max/data/charts.csv +26 -26
- package/skills/frontend/ui-ux-pro-max/data/colors.csv +97 -97
- package/skills/frontend/ui-ux-pro-max/data/icons.csv +101 -101
- package/skills/frontend/ui-ux-pro-max/data/landing.csv +31 -31
- package/skills/frontend/ui-ux-pro-max/data/products.csv +96 -96
- package/skills/frontend/ui-ux-pro-max/data/react-performance.csv +45 -45
- package/skills/frontend/ui-ux-pro-max/data/stacks/astro.csv +54 -54
- package/skills/frontend/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
- package/skills/frontend/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
- package/skills/frontend/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
- package/skills/frontend/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
- package/skills/frontend/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
- package/skills/frontend/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
- package/skills/frontend/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
- package/skills/frontend/ui-ux-pro-max/data/stacks/react.csv +54 -54
- package/skills/frontend/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
- package/skills/frontend/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
- package/skills/frontend/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
- package/skills/frontend/ui-ux-pro-max/data/stacks/vue.csv +50 -50
- package/skills/frontend/ui-ux-pro-max/data/styles.csv +68 -68
- package/skills/frontend/ui-ux-pro-max/data/typography.csv +57 -57
- package/skills/frontend/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
- package/skills/frontend/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
- package/skills/frontend/ui-ux-pro-max/data/web-interface.csv +31 -31
- package/skills/frontend/ui-ux-pro-max/scripts/core.py +253 -253
- package/skills/frontend/ui-ux-pro-max/scripts/design_system.py +1067 -1067
- package/skills/frontend/ui-ux-pro-max/scripts/search.py +114 -114
- package/skills/frontend/vue-expert/SKILL.md +98 -98
- package/skills/frontend/vue-expert/references/build-tooling.md +480 -480
- package/skills/frontend/vue-expert/references/components.md +448 -448
- package/skills/frontend/vue-expert/references/composition-api.md +299 -299
- package/skills/frontend/vue-expert/references/mobile-hybrid.md +636 -636
- package/skills/frontend/vue-expert/references/nuxt.md +669 -669
- package/skills/frontend/vue-expert/references/state-management.md +449 -449
- package/skills/frontend/vue-expert/references/typescript.md +584 -584
- package/skills/frontend/vue-expert-js/SKILL.md +167 -167
- package/skills/frontend/vue-expert-js/references/component-architecture.md +219 -219
- package/skills/frontend/vue-expert-js/references/composables-patterns.md +183 -183
- package/skills/frontend/vue-expert-js/references/jsdoc-typing.md +535 -535
- package/skills/frontend/vue-expert-js/references/state-management.md +249 -249
- package/skills/frontend/vue-expert-js/references/testing-patterns.md +237 -237
- package/skills/go-rust-cpp/cpp-pro/SKILL.md +115 -115
- package/skills/go-rust-cpp/cpp-pro/references/build-tooling.md +440 -440
- package/skills/go-rust-cpp/cpp-pro/references/concurrency.md +437 -437
- package/skills/go-rust-cpp/cpp-pro/references/memory-performance.md +397 -397
- package/skills/go-rust-cpp/cpp-pro/references/modern-cpp.md +304 -304
- package/skills/go-rust-cpp/cpp-pro/references/templates.md +357 -357
- package/skills/go-rust-cpp/golang-pro/SKILL.md +122 -122
- package/skills/go-rust-cpp/golang-pro/references/concurrency.md +329 -329
- package/skills/go-rust-cpp/golang-pro/references/generics.md +442 -442
- package/skills/go-rust-cpp/golang-pro/references/interfaces.md +432 -432
- package/skills/go-rust-cpp/golang-pro/references/project-structure.md +477 -477
- package/skills/go-rust-cpp/golang-pro/references/testing.md +451 -451
- package/skills/go-rust-cpp/rust-engineer/SKILL.md +167 -167
- package/skills/go-rust-cpp/rust-engineer/references/async.md +458 -458
- package/skills/go-rust-cpp/rust-engineer/references/error-handling.md +334 -334
- package/skills/go-rust-cpp/rust-engineer/references/ownership.md +278 -278
- package/skills/go-rust-cpp/rust-engineer/references/testing.md +470 -470
- package/skills/go-rust-cpp/rust-engineer/references/traits.md +413 -413
- package/skills/infra/cli-developer/SKILL.md +113 -113
- package/skills/infra/cli-developer/references/design-patterns.md +221 -221
- package/skills/infra/cli-developer/references/go-cli.md +540 -540
- package/skills/infra/cli-developer/references/node-cli.md +383 -383
- package/skills/infra/cli-developer/references/python-cli.md +422 -422
- package/skills/infra/cli-developer/references/ux-patterns.md +448 -448
- package/skills/infra/cloud-architect/SKILL.md +216 -216
- package/skills/infra/cloud-architect/references/aws.md +394 -394
- package/skills/infra/cloud-architect/references/azure.md +562 -562
- package/skills/infra/cloud-architect/references/cost.md +582 -582
- package/skills/infra/cloud-architect/references/gcp.md +633 -633
- package/skills/infra/cloud-architect/references/multi-cloud.md +483 -483
- package/skills/infra/devops-engineer/SKILL.md +144 -144
- package/skills/infra/devops-engineer/references/deployment-strategies.md +241 -241
- package/skills/infra/devops-engineer/references/docker-patterns.md +113 -113
- package/skills/infra/devops-engineer/references/github-actions.md +139 -139
- package/skills/infra/devops-engineer/references/incident-response.md +331 -331
- package/skills/infra/devops-engineer/references/kubernetes.md +154 -154
- package/skills/infra/devops-engineer/references/platform-engineering.md +417 -417
- package/skills/infra/devops-engineer/references/release-automation.md +527 -527
- package/skills/infra/devops-engineer/references/terraform-iac.md +141 -141
- package/skills/infra/kubernetes-specialist/SKILL.md +241 -241
- package/skills/infra/kubernetes-specialist/references/configuration.md +452 -452
- package/skills/infra/kubernetes-specialist/references/cost-optimization.md +458 -458
- package/skills/infra/kubernetes-specialist/references/custom-operators.md +563 -563
- package/skills/infra/kubernetes-specialist/references/gitops.md +530 -530
- package/skills/infra/kubernetes-specialist/references/helm-charts.md +912 -912
- package/skills/infra/kubernetes-specialist/references/multi-cluster.md +507 -507
- package/skills/infra/kubernetes-specialist/references/networking.md +447 -447
- package/skills/infra/kubernetes-specialist/references/service-mesh.md +459 -459
- package/skills/infra/kubernetes-specialist/references/storage.md +535 -535
- package/skills/infra/kubernetes-specialist/references/troubleshooting.md +414 -414
- package/skills/infra/kubernetes-specialist/references/workloads.md +377 -377
- package/skills/infra/mcp-developer/SKILL.md +143 -143
- package/skills/infra/mcp-developer/references/protocol.md +244 -244
- package/skills/infra/mcp-developer/references/python-sdk.md +367 -367
- package/skills/infra/mcp-developer/references/resources.md +554 -554
- package/skills/infra/mcp-developer/references/tools.md +480 -480
- package/skills/infra/mcp-developer/references/typescript-sdk.md +350 -350
- package/skills/infra/monitoring-expert/SKILL.md +176 -176
- package/skills/infra/monitoring-expert/references/alerting-rules.md +141 -141
- package/skills/infra/monitoring-expert/references/application-profiling.md +331 -331
- package/skills/infra/monitoring-expert/references/capacity-planning.md +344 -344
- package/skills/infra/monitoring-expert/references/dashboards.md +126 -126
- package/skills/infra/monitoring-expert/references/opentelemetry.md +123 -123
- package/skills/infra/monitoring-expert/references/performance-testing.md +269 -269
- package/skills/infra/monitoring-expert/references/prometheus-metrics.md +136 -136
- package/skills/infra/monitoring-expert/references/structured-logging.md +142 -142
- package/skills/infra/sre-engineer/SKILL.md +181 -181
- package/skills/infra/sre-engineer/references/automation-toil.md +492 -492
- package/skills/infra/sre-engineer/references/error-budget-policy.md +334 -334
- package/skills/infra/sre-engineer/references/incident-chaos.md +576 -576
- package/skills/infra/sre-engineer/references/monitoring-alerting.md +424 -424
- package/skills/infra/sre-engineer/references/slo-sli-management.md +238 -238
- package/skills/infra/terraform-engineer/SKILL.md +143 -143
- package/skills/infra/terraform-engineer/references/best-practices.md +583 -583
- package/skills/infra/terraform-engineer/references/module-patterns.md +297 -297
- package/skills/infra/terraform-engineer/references/providers.md +452 -452
- package/skills/infra/terraform-engineer/references/state-management.md +371 -371
- package/skills/infra/terraform-engineer/references/testing.md +486 -486
- package/skills/infra/websocket-engineer/SKILL.md +168 -168
- package/skills/infra/websocket-engineer/references/alternatives.md +391 -391
- package/skills/infra/websocket-engineer/references/patterns.md +400 -400
- package/skills/infra/websocket-engineer/references/protocol.md +195 -195
- package/skills/infra/websocket-engineer/references/scaling.md +333 -333
- package/skills/infra/websocket-engineer/references/security.md +474 -474
- package/skills/java/java-architect/SKILL.md +132 -132
- package/skills/java/java-architect/references/jpa-optimization.md +393 -393
- package/skills/java/java-architect/references/reactive-webflux.md +356 -356
- package/skills/java/java-architect/references/spring-boot-setup.md +269 -269
- package/skills/java/java-architect/references/spring-security.md +445 -445
- package/skills/java/java-architect/references/testing-patterns.md +500 -500
- package/skills/java/kotlin-specialist/SKILL.md +147 -147
- package/skills/java/kotlin-specialist/references/android-compose.md +419 -419
- package/skills/java/kotlin-specialist/references/coroutines-flow.md +276 -276
- package/skills/java/kotlin-specialist/references/dsl-idioms.md +421 -421
- package/skills/java/kotlin-specialist/references/ktor-server.md +426 -426
- package/skills/java/kotlin-specialist/references/multiplatform-kmp.md +380 -380
- package/skills/java/spring-boot-engineer/SKILL.md +195 -195
- package/skills/java/spring-boot-engineer/references/cloud.md +498 -498
- package/skills/java/spring-boot-engineer/references/data.md +381 -381
- package/skills/java/spring-boot-engineer/references/security.md +459 -459
- package/skills/java/spring-boot-engineer/references/testing.md +545 -545
- package/skills/java/spring-boot-engineer/references/web.md +295 -295
- package/skills/javascript/javascript-pro/SKILL.md +132 -132
- package/skills/javascript/javascript-pro/references/async-patterns.md +334 -334
- package/skills/javascript/javascript-pro/references/browser-apis.md +398 -398
- package/skills/javascript/javascript-pro/references/modern-syntax.md +272 -272
- package/skills/javascript/javascript-pro/references/modules.md +357 -357
- package/skills/javascript/javascript-pro/references/node-essentials.md +471 -471
- package/skills/javascript/nestjs-expert/SKILL.md +206 -206
- package/skills/javascript/nestjs-expert/references/authentication.md +166 -166
- package/skills/javascript/nestjs-expert/references/controllers-routing.md +111 -111
- package/skills/javascript/nestjs-expert/references/dtos-validation.md +153 -153
- package/skills/javascript/nestjs-expert/references/migration-from-express.md +1237 -1237
- package/skills/javascript/nestjs-expert/references/services-di.md +140 -140
- package/skills/javascript/nestjs-expert/references/testing-patterns.md +186 -186
- package/skills/javascript/typescript-pro/SKILL.md +145 -145
- package/skills/javascript/typescript-pro/references/advanced-types.md +259 -259
- package/skills/javascript/typescript-pro/references/configuration.md +445 -445
- package/skills/javascript/typescript-pro/references/patterns.md +484 -484
- package/skills/javascript/typescript-pro/references/type-guards.md +352 -352
- package/skills/javascript/typescript-pro/references/utility-types.md +329 -329
- package/skills/php/laravel-specialist/SKILL.md +262 -262
- package/skills/php/laravel-specialist/references/eloquent.md +351 -351
- package/skills/php/laravel-specialist/references/livewire.md +512 -512
- package/skills/php/laravel-specialist/references/queues.md +423 -423
- package/skills/php/laravel-specialist/references/routing.md +362 -362
- package/skills/php/laravel-specialist/references/testing.md +522 -522
- package/skills/php/php-pro/SKILL.md +206 -206
- package/skills/php/php-pro/references/async-patterns.md +412 -412
- package/skills/php/php-pro/references/laravel-patterns.md +377 -377
- package/skills/php/php-pro/references/modern-php-features.md +323 -323
- package/skills/php/php-pro/references/symfony-patterns.md +466 -466
- package/skills/php/php-pro/references/testing-quality.md +466 -466
- package/skills/product/competitive-analysis/SKILL.md +257 -257
- package/skills/product/meeting-notes/SKILL.md +266 -266
- package/skills/product/prd-template/SKILL.md +150 -150
- package/skills/product/stakeholder-update/SKILL.md +225 -225
- package/skills/product/user-research-synthesis/SKILL.md +235 -235
- package/skills/python/django-expert/SKILL.md +162 -162
- package/skills/python/django-expert/references/authentication.md +145 -145
- package/skills/python/django-expert/references/drf-serializers.md +148 -148
- package/skills/python/django-expert/references/models-orm.md +151 -151
- package/skills/python/django-expert/references/testing-django.md +204 -204
- package/skills/python/django-expert/references/viewsets-views.md +153 -153
- package/skills/python/fastapi-expert/SKILL.md +185 -185
- package/skills/python/fastapi-expert/references/async-sqlalchemy.md +146 -146
- package/skills/python/fastapi-expert/references/authentication.md +159 -159
- package/skills/python/fastapi-expert/references/endpoints-routing.md +142 -142
- package/skills/python/fastapi-expert/references/migration-from-django.md +996 -996
- package/skills/python/fastapi-expert/references/pydantic-v2.md +135 -135
- package/skills/python/fastapi-expert/references/testing-async.md +159 -159
- package/skills/python/pandas-pro/SKILL.md +178 -178
- package/skills/python/pandas-pro/references/aggregation-groupby.md +545 -545
- package/skills/python/pandas-pro/references/data-cleaning.md +500 -500
- package/skills/python/pandas-pro/references/dataframe-operations.md +420 -420
- package/skills/python/pandas-pro/references/merging-joining.md +596 -596
- package/skills/python/pandas-pro/references/performance-optimization.md +597 -597
- package/skills/python/python-pro/SKILL.md +177 -177
- package/skills/python/python-pro/references/async-patterns.md +356 -356
- package/skills/python/python-pro/references/packaging.md +460 -460
- package/skills/python/python-pro/references/standard-library.md +378 -378
- package/skills/python/python-pro/references/testing.md +404 -404
- package/skills/python/python-pro/references/type-system.md +290 -290
- package/skills/quality/chaos-engineer/SKILL.md +182 -182
- package/skills/quality/chaos-engineer/references/chaos-tools.md +511 -511
- package/skills/quality/chaos-engineer/references/experiment-design.md +229 -229
- package/skills/quality/chaos-engineer/references/game-days.md +434 -434
- package/skills/quality/chaos-engineer/references/infrastructure-chaos.md +348 -348
- package/skills/quality/chaos-engineer/references/kubernetes-chaos.md +432 -432
- package/skills/quality/code-reviewer/SKILL.md +119 -119
- package/skills/quality/code-reviewer/references/common-issues.md +142 -142
- package/skills/quality/code-reviewer/references/feedback-examples.md +144 -144
- package/skills/quality/code-reviewer/references/receiving-feedback.md +238 -238
- package/skills/quality/code-reviewer/references/report-template.md +109 -109
- package/skills/quality/code-reviewer/references/review-checklist.md +88 -88
- package/skills/quality/code-reviewer/references/spec-compliance-review.md +258 -258
- package/skills/quality/playwright-expert/SKILL.md +169 -169
- package/skills/quality/playwright-expert/references/api-mocking.md +140 -140
- package/skills/quality/playwright-expert/references/configuration.md +155 -155
- package/skills/quality/playwright-expert/references/debugging-flaky.md +150 -150
- package/skills/quality/playwright-expert/references/page-object-model.md +152 -152
- package/skills/quality/playwright-expert/references/selectors-locators.md +119 -119
- package/skills/quality/secure-code-guardian/SKILL.md +191 -191
- package/skills/quality/secure-code-guardian/references/authentication.md +136 -136
- package/skills/quality/secure-code-guardian/references/input-validation.md +146 -146
- package/skills/quality/secure-code-guardian/references/owasp-prevention.md +135 -135
- package/skills/quality/secure-code-guardian/references/security-headers.md +133 -133
- package/skills/quality/secure-code-guardian/references/xss-csrf.md +157 -157
- package/skills/quality/security-reviewer/SKILL.md +103 -103
- package/skills/quality/security-reviewer/references/infrastructure-security.md +268 -268
- package/skills/quality/security-reviewer/references/penetration-testing.md +268 -268
- package/skills/quality/security-reviewer/references/report-template.md +170 -170
- package/skills/quality/security-reviewer/references/sast-tools.md +117 -117
- package/skills/quality/security-reviewer/references/secret-scanning.md +125 -125
- package/skills/quality/security-reviewer/references/vulnerability-patterns.md +152 -152
- package/skills/quality/senior-qa/README.md +196 -196
- package/skills/quality/senior-qa/SKILL.md +399 -399
- package/skills/quality/senior-qa/references/qa_best_practices.md +964 -964
- package/skills/quality/senior-qa/references/test_automation_patterns.md +1009 -1009
- package/skills/quality/senior-qa/references/testing_strategies.md +649 -649
- package/skills/quality/senior-qa/scripts/coverage_analyzer.py +836 -836
- package/skills/quality/senior-qa/scripts/e2e_test_scaffolder.py +820 -820
- package/skills/quality/senior-qa/scripts/test_suite_generator.py +605 -605
- package/skills/quality/tdd-guide/HOW_TO_USE.md +313 -313
- package/skills/quality/tdd-guide/README.md +680 -680
- package/skills/quality/tdd-guide/SKILL.md +122 -122
- package/skills/quality/tdd-guide/assets/expected_output.json +77 -77
- package/skills/quality/tdd-guide/assets/sample_input_python.json +39 -39
- package/skills/quality/tdd-guide/assets/sample_input_typescript.json +36 -36
- package/skills/quality/tdd-guide/references/ci-integration.md +195 -195
- package/skills/quality/tdd-guide/references/framework-guide.md +206 -206
- package/skills/quality/tdd-guide/references/tdd-best-practices.md +128 -128
- package/skills/quality/tdd-guide/scripts/coverage_analyzer.py +434 -434
- package/skills/quality/tdd-guide/scripts/fixture_generator.py +440 -440
- package/skills/quality/tdd-guide/scripts/format_detector.py +384 -384
- package/skills/quality/tdd-guide/scripts/framework_adapter.py +428 -428
- package/skills/quality/tdd-guide/scripts/metrics_calculator.py +456 -456
- package/skills/quality/tdd-guide/scripts/output_formatter.py +354 -354
- package/skills/quality/tdd-guide/scripts/tdd_workflow.py +474 -474
- package/skills/quality/tdd-guide/scripts/test_generator.py +438 -438
- package/skills/quality/test-master/SKILL.md +94 -94
- package/skills/quality/test-master/references/automation-frameworks.md +294 -294
- package/skills/quality/test-master/references/e2e-testing.md +128 -128
- package/skills/quality/test-master/references/integration-testing.md +120 -120
- package/skills/quality/test-master/references/performance-testing.md +118 -118
- package/skills/quality/test-master/references/qa-methodology.md +247 -247
- package/skills/quality/test-master/references/security-testing.md +127 -127
- package/skills/quality/test-master/references/tdd-iron-laws.md +174 -174
- package/skills/quality/test-master/references/test-reports.md +104 -104
- package/skills/quality/test-master/references/testing-anti-patterns.md +231 -231
- package/skills/quality/test-master/references/unit-testing.md +113 -113
- package/skills/ruby/rails-expert/SKILL.md +154 -154
- package/skills/ruby/rails-expert/references/active-record.md +244 -244
- package/skills/ruby/rails-expert/references/api-development.md +401 -401
- package/skills/ruby/rails-expert/references/background-jobs.md +272 -272
- package/skills/ruby/rails-expert/references/hotwire-turbo.md +228 -228
- package/skills/ruby/rails-expert/references/rspec-testing.md +367 -367
- package/skills/swift/swift-expert/SKILL.md +163 -163
- package/skills/swift/swift-expert/references/async-concurrency.md +360 -360
- package/skills/swift/swift-expert/references/memory-performance.md +377 -377
- package/skills/swift/swift-expert/references/protocol-oriented.md +354 -354
- package/skills/swift/swift-expert/references/swiftui-patterns.md +291 -291
- package/skills/swift/swift-expert/references/testing-patterns.md +399 -399
- package/skills/workflow/brainstorming/SKILL.md +164 -164
- package/skills/workflow/brainstorming/scripts/frame-template.html +214 -214
- package/skills/workflow/brainstorming/scripts/helper.js +88 -88
- package/skills/workflow/brainstorming/scripts/server.cjs +354 -354
- package/skills/workflow/brainstorming/scripts/start-server.sh +148 -148
- package/skills/workflow/brainstorming/scripts/stop-server.sh +56 -56
- package/skills/workflow/brainstorming/spec-document-reviewer-prompt.md +49 -49
- package/skills/workflow/brainstorming/visual-companion.md +287 -287
- package/skills/workflow/documentation/SKILL.md +45 -45
- package/skills/workflow/entropy-management/SKILL.md +115 -115
- package/skills/workflow/executing-plans/SKILL.md +70 -70
- package/skills/workflow/finishing-a-development-branch/SKILL.md +200 -200
- package/skills/workflow/receiving-code-review/SKILL.md +213 -213
- package/skills/workflow/requesting-code-review/SKILL.md +105 -105
- package/skills/workflow/requesting-code-review/code-reviewer.md +146 -146
- package/skills/workflow/requirement-engineering/SKILL.md +111 -111
- package/skills/workflow/systematic-debugging/CREATION-LOG.md +119 -119
- package/skills/workflow/systematic-debugging/SKILL.md +296 -296
- package/skills/workflow/systematic-debugging/condition-based-waiting-example.ts +158 -158
- package/skills/workflow/systematic-debugging/condition-based-waiting.md +115 -115
- package/skills/workflow/systematic-debugging/defense-in-depth.md +122 -122
- package/skills/workflow/systematic-debugging/find-polluter.sh +63 -63
- package/skills/workflow/systematic-debugging/root-cause-tracing.md +169 -169
- package/skills/workflow/systematic-debugging/test-academic.md +14 -14
- package/skills/workflow/systematic-debugging/test-pressure-1.md +58 -58
- package/skills/workflow/systematic-debugging/test-pressure-2.md +68 -68
- package/skills/workflow/systematic-debugging/test-pressure-3.md +69 -69
- package/skills/workflow/using-git-worktrees/SKILL.md +218 -218
- package/skills/workflow/verification-before-completion/SKILL.md +139 -139
- package/skills/workflow/writing-plans/SKILL.md +151 -151
- package/skills/workflow/writing-plans/plan-document-reviewer-prompt.md +49 -49
- package/skills/workflow/writing-skills/SKILL.md +655 -655
- package/skills/workflow/writing-skills/anthropic-best-practices.md +1150 -1150
- package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -189
- package/skills/workflow/writing-skills/persuasion-principles.md +187 -187
- package/skills/workflow/writing-skills/render-graphs.js +168 -168
- package/skills/workflow/writing-skills/testing-skills-with-subagents.md +384 -384
|
@@ -1,113 +1,113 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cli-developer
|
|
3
|
-
description: Use when building CLI tools, implementing argument parsing, or adding interactive prompts. Invoke for parsing flags and subcommands, displaying progress bars and spinners, generating bash/zsh/fish completion scripts, CLI design, shell completions, and cross-platform terminal applications using commander, click, typer, or cobra.
|
|
4
|
-
license: MIT
|
|
5
|
-
metadata:
|
|
6
|
-
author: https://github.com/Jeffallan
|
|
7
|
-
version: "1.1.0"
|
|
8
|
-
domain: devops
|
|
9
|
-
triggers: CLI, command-line, terminal app, argument parsing, shell completion, interactive prompt, progress bar, commander, click, typer, cobra
|
|
10
|
-
role: specialist
|
|
11
|
-
scope: implementation
|
|
12
|
-
output-format: code
|
|
13
|
-
related-skills: devops-engineer
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
# CLI Developer
|
|
17
|
-
|
|
18
|
-
## Core Workflow
|
|
19
|
-
|
|
20
|
-
1. **Analyze UX** — Identify user workflows, command hierarchy, common tasks. Validate by listing all commands and their expected `--help` output before writing code.
|
|
21
|
-
2. **Design commands** — Plan subcommands, flags, arguments, configuration. Confirm flag naming is consistent and no existing signatures are broken.
|
|
22
|
-
3. **Implement** — Build with the appropriate CLI framework for the language (see Reference Guide below). After wiring up commands, run `<cli> --help` to verify help text renders correctly and `<cli> --version` to confirm version output.
|
|
23
|
-
4. **Polish** — Add completions, help text, error messages, progress indicators. Verify TTY detection for color output and graceful SIGINT handling.
|
|
24
|
-
5. **Test** — Run cross-platform smoke tests; benchmark startup time (target: <50ms).
|
|
25
|
-
|
|
26
|
-
## Reference Guide
|
|
27
|
-
|
|
28
|
-
Load detailed guidance based on context:
|
|
29
|
-
|
|
30
|
-
| Topic | Reference | Load When |
|
|
31
|
-
|-------|-----------|-----------|
|
|
32
|
-
| Design Patterns | `references/design-patterns.md` | Subcommands, flags, config, architecture |
|
|
33
|
-
| Node.js CLIs | `references/node-cli.md` | commander, yargs, inquirer, chalk |
|
|
34
|
-
| Python CLIs | `references/python-cli.md` | click, typer, argparse, rich |
|
|
35
|
-
| Go CLIs | `references/go-cli.md` | cobra, viper, bubbletea |
|
|
36
|
-
| UX Patterns | `references/ux-patterns.md` | Progress bars, colors, help text |
|
|
37
|
-
|
|
38
|
-
## Quick-Start Example
|
|
39
|
-
|
|
40
|
-
### Node.js (commander)
|
|
41
|
-
|
|
42
|
-
```js
|
|
43
|
-
#!/usr/bin/env node
|
|
44
|
-
// npm install commander
|
|
45
|
-
const { program } = require('commander');
|
|
46
|
-
|
|
47
|
-
program
|
|
48
|
-
.name('mytool')
|
|
49
|
-
.description('Example CLI')
|
|
50
|
-
.version('1.0.0');
|
|
51
|
-
|
|
52
|
-
program
|
|
53
|
-
.command('greet <name>')
|
|
54
|
-
.description('Greet a user')
|
|
55
|
-
.option('-l, --loud', 'uppercase the greeting')
|
|
56
|
-
.action((name, opts) => {
|
|
57
|
-
const msg = `Hello, ${name}!`;
|
|
58
|
-
console.log(opts.loud ? msg.toUpperCase() : msg);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
program.parse();
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
For Python (click/typer) and Go (cobra) quick-start examples, see `references/python-cli.md` and `references/go-cli.md`.
|
|
65
|
-
|
|
66
|
-
## Constraints
|
|
67
|
-
|
|
68
|
-
### MUST DO
|
|
69
|
-
- Keep startup time under 50ms
|
|
70
|
-
- Provide clear, actionable error messages
|
|
71
|
-
- Support `--help` and `--version` flags
|
|
72
|
-
- Use consistent flag naming conventions
|
|
73
|
-
- Handle SIGINT (Ctrl+C) gracefully
|
|
74
|
-
- Validate user input early
|
|
75
|
-
- Support both interactive and non-interactive modes
|
|
76
|
-
- Test on Windows, macOS, and Linux
|
|
77
|
-
|
|
78
|
-
### MUST NOT DO
|
|
79
|
-
|
|
80
|
-
- **Block on synchronous I/O unnecessarily** — use async reads or stream processing instead.
|
|
81
|
-
- **Print to stdout when output will be piped** — write logs/diagnostics to stderr.
|
|
82
|
-
- **Use colors when output is not a TTY** — detect before applying color:
|
|
83
|
-
```js
|
|
84
|
-
// Node.js
|
|
85
|
-
const useColor = process.stdout.isTTY;
|
|
86
|
-
```
|
|
87
|
-
```python
|
|
88
|
-
# Python
|
|
89
|
-
import sys
|
|
90
|
-
use_color = sys.stdout.isatty()
|
|
91
|
-
```
|
|
92
|
-
```go
|
|
93
|
-
// Go
|
|
94
|
-
import "golang.org/x/term"
|
|
95
|
-
useColor := term.IsTerminal(int(os.Stdout.Fd()))
|
|
96
|
-
```
|
|
97
|
-
- **Break existing command signatures** — treat flag/subcommand renames as breaking changes.
|
|
98
|
-
- **Require interactive input in CI/CD environments** — always provide non-interactive fallbacks via flags or env vars.
|
|
99
|
-
- **Hardcode paths or platform-specific logic** — use `os.homedir()` / `os.UserHomeDir()` / `Path.home()` instead.
|
|
100
|
-
- **Ship without shell completions** — all three frameworks above have built-in completion generation.
|
|
101
|
-
|
|
102
|
-
## Output Templates
|
|
103
|
-
|
|
104
|
-
When implementing CLI features, provide:
|
|
105
|
-
1. Command structure (main entry point, subcommands)
|
|
106
|
-
2. Configuration handling (files, env vars, flags)
|
|
107
|
-
3. Core implementation with error handling
|
|
108
|
-
4. Shell completion scripts if applicable
|
|
109
|
-
5. Brief explanation of UX decisions
|
|
110
|
-
|
|
111
|
-
## Knowledge Reference
|
|
112
|
-
|
|
113
|
-
CLI frameworks (commander, yargs, oclif, click, typer, argparse, cobra, viper), terminal UI (chalk, inquirer, rich, bubbletea), testing (snapshot testing, E2E), distribution (npm, pip, homebrew, releases), performance optimization
|
|
1
|
+
---
|
|
2
|
+
name: cli-developer
|
|
3
|
+
description: Use when building CLI tools, implementing argument parsing, or adding interactive prompts. Invoke for parsing flags and subcommands, displaying progress bars and spinners, generating bash/zsh/fish completion scripts, CLI design, shell completions, and cross-platform terminal applications using commander, click, typer, or cobra.
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: https://github.com/Jeffallan
|
|
7
|
+
version: "1.1.0"
|
|
8
|
+
domain: devops
|
|
9
|
+
triggers: CLI, command-line, terminal app, argument parsing, shell completion, interactive prompt, progress bar, commander, click, typer, cobra
|
|
10
|
+
role: specialist
|
|
11
|
+
scope: implementation
|
|
12
|
+
output-format: code
|
|
13
|
+
related-skills: devops-engineer
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# CLI Developer
|
|
17
|
+
|
|
18
|
+
## Core Workflow
|
|
19
|
+
|
|
20
|
+
1. **Analyze UX** — Identify user workflows, command hierarchy, common tasks. Validate by listing all commands and their expected `--help` output before writing code.
|
|
21
|
+
2. **Design commands** — Plan subcommands, flags, arguments, configuration. Confirm flag naming is consistent and no existing signatures are broken.
|
|
22
|
+
3. **Implement** — Build with the appropriate CLI framework for the language (see Reference Guide below). After wiring up commands, run `<cli> --help` to verify help text renders correctly and `<cli> --version` to confirm version output.
|
|
23
|
+
4. **Polish** — Add completions, help text, error messages, progress indicators. Verify TTY detection for color output and graceful SIGINT handling.
|
|
24
|
+
5. **Test** — Run cross-platform smoke tests; benchmark startup time (target: <50ms).
|
|
25
|
+
|
|
26
|
+
## Reference Guide
|
|
27
|
+
|
|
28
|
+
Load detailed guidance based on context:
|
|
29
|
+
|
|
30
|
+
| Topic | Reference | Load When |
|
|
31
|
+
|-------|-----------|-----------|
|
|
32
|
+
| Design Patterns | `references/design-patterns.md` | Subcommands, flags, config, architecture |
|
|
33
|
+
| Node.js CLIs | `references/node-cli.md` | commander, yargs, inquirer, chalk |
|
|
34
|
+
| Python CLIs | `references/python-cli.md` | click, typer, argparse, rich |
|
|
35
|
+
| Go CLIs | `references/go-cli.md` | cobra, viper, bubbletea |
|
|
36
|
+
| UX Patterns | `references/ux-patterns.md` | Progress bars, colors, help text |
|
|
37
|
+
|
|
38
|
+
## Quick-Start Example
|
|
39
|
+
|
|
40
|
+
### Node.js (commander)
|
|
41
|
+
|
|
42
|
+
```js
|
|
43
|
+
#!/usr/bin/env node
|
|
44
|
+
// npm install commander
|
|
45
|
+
const { program } = require('commander');
|
|
46
|
+
|
|
47
|
+
program
|
|
48
|
+
.name('mytool')
|
|
49
|
+
.description('Example CLI')
|
|
50
|
+
.version('1.0.0');
|
|
51
|
+
|
|
52
|
+
program
|
|
53
|
+
.command('greet <name>')
|
|
54
|
+
.description('Greet a user')
|
|
55
|
+
.option('-l, --loud', 'uppercase the greeting')
|
|
56
|
+
.action((name, opts) => {
|
|
57
|
+
const msg = `Hello, ${name}!`;
|
|
58
|
+
console.log(opts.loud ? msg.toUpperCase() : msg);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
program.parse();
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
For Python (click/typer) and Go (cobra) quick-start examples, see `references/python-cli.md` and `references/go-cli.md`.
|
|
65
|
+
|
|
66
|
+
## Constraints
|
|
67
|
+
|
|
68
|
+
### MUST DO
|
|
69
|
+
- Keep startup time under 50ms
|
|
70
|
+
- Provide clear, actionable error messages
|
|
71
|
+
- Support `--help` and `--version` flags
|
|
72
|
+
- Use consistent flag naming conventions
|
|
73
|
+
- Handle SIGINT (Ctrl+C) gracefully
|
|
74
|
+
- Validate user input early
|
|
75
|
+
- Support both interactive and non-interactive modes
|
|
76
|
+
- Test on Windows, macOS, and Linux
|
|
77
|
+
|
|
78
|
+
### MUST NOT DO
|
|
79
|
+
|
|
80
|
+
- **Block on synchronous I/O unnecessarily** — use async reads or stream processing instead.
|
|
81
|
+
- **Print to stdout when output will be piped** — write logs/diagnostics to stderr.
|
|
82
|
+
- **Use colors when output is not a TTY** — detect before applying color:
|
|
83
|
+
```js
|
|
84
|
+
// Node.js
|
|
85
|
+
const useColor = process.stdout.isTTY;
|
|
86
|
+
```
|
|
87
|
+
```python
|
|
88
|
+
# Python
|
|
89
|
+
import sys
|
|
90
|
+
use_color = sys.stdout.isatty()
|
|
91
|
+
```
|
|
92
|
+
```go
|
|
93
|
+
// Go
|
|
94
|
+
import "golang.org/x/term"
|
|
95
|
+
useColor := term.IsTerminal(int(os.Stdout.Fd()))
|
|
96
|
+
```
|
|
97
|
+
- **Break existing command signatures** — treat flag/subcommand renames as breaking changes.
|
|
98
|
+
- **Require interactive input in CI/CD environments** — always provide non-interactive fallbacks via flags or env vars.
|
|
99
|
+
- **Hardcode paths or platform-specific logic** — use `os.homedir()` / `os.UserHomeDir()` / `Path.home()` instead.
|
|
100
|
+
- **Ship without shell completions** — all three frameworks above have built-in completion generation.
|
|
101
|
+
|
|
102
|
+
## Output Templates
|
|
103
|
+
|
|
104
|
+
When implementing CLI features, provide:
|
|
105
|
+
1. Command structure (main entry point, subcommands)
|
|
106
|
+
2. Configuration handling (files, env vars, flags)
|
|
107
|
+
3. Core implementation with error handling
|
|
108
|
+
4. Shell completion scripts if applicable
|
|
109
|
+
5. Brief explanation of UX decisions
|
|
110
|
+
|
|
111
|
+
## Knowledge Reference
|
|
112
|
+
|
|
113
|
+
CLI frameworks (commander, yargs, oclif, click, typer, argparse, cobra, viper), terminal UI (chalk, inquirer, rich, bubbletea), testing (snapshot testing, E2E), distribution (npm, pip, homebrew, releases), performance optimization
|
|
@@ -1,221 +1,221 @@
|
|
|
1
|
-
# CLI Design Patterns
|
|
2
|
-
|
|
3
|
-
## Command Hierarchy
|
|
4
|
-
|
|
5
|
-
```
|
|
6
|
-
mycli # Root command
|
|
7
|
-
├── init [options] # Simple command
|
|
8
|
-
├── config
|
|
9
|
-
│ ├── get <key> # Nested subcommand
|
|
10
|
-
│ ├── set <key> <value>
|
|
11
|
-
│ └── list
|
|
12
|
-
├── deploy [environment] # Command with args
|
|
13
|
-
│ ├── --dry-run # Flag
|
|
14
|
-
│ ├── --force
|
|
15
|
-
│ └── --config <file> # Option with value
|
|
16
|
-
└── plugins
|
|
17
|
-
├── install <name>
|
|
18
|
-
├── list
|
|
19
|
-
└── remove <name>
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Flag Conventions
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
# Boolean flags (presence = true)
|
|
26
|
-
mycli deploy --force --dry-run
|
|
27
|
-
|
|
28
|
-
# Short + long forms
|
|
29
|
-
mycli -v --verbose
|
|
30
|
-
mycli -c config.yml --config config.yml
|
|
31
|
-
|
|
32
|
-
# Required vs optional
|
|
33
|
-
mycli deploy <env> # Positional (required)
|
|
34
|
-
mycli deploy --env production # Flag (optional)
|
|
35
|
-
|
|
36
|
-
# Multiple values
|
|
37
|
-
mycli install pkg1 pkg2 pkg3 # Variadic args
|
|
38
|
-
mycli --exclude node_modules --exclude .git
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Configuration Layers
|
|
42
|
-
|
|
43
|
-
Priority order (highest to lowest):
|
|
44
|
-
|
|
45
|
-
1. **Command-line flags** - Explicit user intent
|
|
46
|
-
2. **Environment variables** - Runtime context
|
|
47
|
-
3. **Config files (project)** - `.myclirc`, `mycli.config.js`
|
|
48
|
-
4. **Config files (user)** - `~/.myclirc`, `~/.config/mycli/config.yml`
|
|
49
|
-
5. **Config files (system)** - `/etc/mycli/config.yml`
|
|
50
|
-
6. **Defaults** - Hard-coded sensible defaults
|
|
51
|
-
|
|
52
|
-
```javascript
|
|
53
|
-
// Example config resolution
|
|
54
|
-
const config = {
|
|
55
|
-
...systemDefaults,
|
|
56
|
-
...loadSystemConfig(),
|
|
57
|
-
...loadUserConfig(),
|
|
58
|
-
...loadProjectConfig(),
|
|
59
|
-
...loadEnvVars(),
|
|
60
|
-
...parseCliFlags(),
|
|
61
|
-
};
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## Exit Codes
|
|
65
|
-
|
|
66
|
-
Standard POSIX exit codes:
|
|
67
|
-
|
|
68
|
-
```javascript
|
|
69
|
-
const EXIT_CODES = {
|
|
70
|
-
SUCCESS: 0,
|
|
71
|
-
GENERAL_ERROR: 1,
|
|
72
|
-
MISUSE: 2, // Invalid arguments
|
|
73
|
-
PERMISSION_DENIED: 77,
|
|
74
|
-
NOT_FOUND: 127,
|
|
75
|
-
SIGINT: 130, // Ctrl+C
|
|
76
|
-
};
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## Plugin Architecture
|
|
80
|
-
|
|
81
|
-
```
|
|
82
|
-
mycli/
|
|
83
|
-
├── core/ # Core functionality
|
|
84
|
-
├── plugins/
|
|
85
|
-
│ ├── aws/ # Plugin: AWS integration
|
|
86
|
-
│ │ ├── package.json
|
|
87
|
-
│ │ └── index.js
|
|
88
|
-
│ └── github/ # Plugin: GitHub integration
|
|
89
|
-
│ ├── package.json
|
|
90
|
-
│ └── index.js
|
|
91
|
-
└── plugin-loader.js # Discovery & loading
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Plugin discovery:
|
|
95
|
-
1. Check `~/.mycli/plugins/`
|
|
96
|
-
2. Check `node_modules/mycli-plugin-*`
|
|
97
|
-
3. Check `MYCLI_PLUGIN_PATH` env var
|
|
98
|
-
|
|
99
|
-
## Error Handling Patterns
|
|
100
|
-
|
|
101
|
-
```javascript
|
|
102
|
-
// Good: Actionable error messages
|
|
103
|
-
Error: Config file not found at /path/to/config.yml
|
|
104
|
-
|
|
105
|
-
Tried locations:
|
|
106
|
-
• ./mycli.config.yml
|
|
107
|
-
• ~/.myclirc
|
|
108
|
-
• /etc/mycli/config.yml
|
|
109
|
-
|
|
110
|
-
Run 'mycli init' to create a config file, or use --config to specify location.
|
|
111
|
-
|
|
112
|
-
// Bad: Unhelpful errors
|
|
113
|
-
Error: ENOENT
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
## Interactive vs Non-Interactive
|
|
117
|
-
|
|
118
|
-
```javascript
|
|
119
|
-
// Detect if running in CI/CD
|
|
120
|
-
const isCI = process.env.CI === 'true' || !process.stdout.isTTY;
|
|
121
|
-
|
|
122
|
-
if (isCI) {
|
|
123
|
-
// Non-interactive: fail fast with clear errors
|
|
124
|
-
if (!options.environment) {
|
|
125
|
-
throw new Error('--environment required in non-interactive mode');
|
|
126
|
-
}
|
|
127
|
-
} else {
|
|
128
|
-
// Interactive: prompt user
|
|
129
|
-
const environment = await prompt({
|
|
130
|
-
type: 'select',
|
|
131
|
-
message: 'Select environment:',
|
|
132
|
-
choices: ['development', 'staging', 'production'],
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## State Management
|
|
138
|
-
|
|
139
|
-
```
|
|
140
|
-
~/.mycli/
|
|
141
|
-
├── config.yml # User configuration
|
|
142
|
-
├── cache/ # Cached data
|
|
143
|
-
│ ├── plugins.json
|
|
144
|
-
│ └── api-responses/
|
|
145
|
-
├── credentials.json # Sensitive data (600 perms)
|
|
146
|
-
└── state.json # Session state
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
## Performance Patterns
|
|
150
|
-
|
|
151
|
-
```javascript
|
|
152
|
-
// Lazy loading: Don't load unused dependencies
|
|
153
|
-
if (command === 'deploy') {
|
|
154
|
-
const deploy = require('./commands/deploy'); // Load on demand
|
|
155
|
-
await deploy.run();
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Caching: Avoid repeated API calls
|
|
159
|
-
const cache = new Cache('~/.mycli/cache', { ttl: 3600 });
|
|
160
|
-
let plugins = await cache.get('plugins');
|
|
161
|
-
if (!plugins) {
|
|
162
|
-
plugins = await fetchPlugins();
|
|
163
|
-
await cache.set('plugins', plugins);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// Async operations: Don't block unnecessarily
|
|
167
|
-
await Promise.all([
|
|
168
|
-
validateConfig(),
|
|
169
|
-
checkForUpdates(),
|
|
170
|
-
loadPlugins(),
|
|
171
|
-
]);
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
## Versioning & Updates
|
|
175
|
-
|
|
176
|
-
```javascript
|
|
177
|
-
// Check for updates (non-blocking)
|
|
178
|
-
checkForUpdates().then(update => {
|
|
179
|
-
if (update.available) {
|
|
180
|
-
console.log(`Update available: ${update.version}`);
|
|
181
|
-
console.log(`Run: npm install -g mycli@latest`);
|
|
182
|
-
}
|
|
183
|
-
}).catch(() => {
|
|
184
|
-
// Silently fail - don't interrupt user workflow
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
// Version compatibility
|
|
188
|
-
const MIN_NODE_VERSION = '18.0.0';
|
|
189
|
-
if (!semver.satisfies(process.version, `>=${MIN_NODE_VERSION}`)) {
|
|
190
|
-
console.error(`mycli requires Node.js ${MIN_NODE_VERSION} or higher`);
|
|
191
|
-
process.exit(1);
|
|
192
|
-
}
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
## Help Text Design
|
|
196
|
-
|
|
197
|
-
```
|
|
198
|
-
USAGE
|
|
199
|
-
mycli deploy [environment] [options]
|
|
200
|
-
|
|
201
|
-
ARGUMENTS
|
|
202
|
-
environment Target environment (development|staging|production)
|
|
203
|
-
|
|
204
|
-
OPTIONS
|
|
205
|
-
-c, --config <file> Path to config file
|
|
206
|
-
-f, --force Skip confirmation prompts
|
|
207
|
-
-d, --dry-run Preview changes without executing
|
|
208
|
-
-v, --verbose Show detailed output
|
|
209
|
-
|
|
210
|
-
EXAMPLES
|
|
211
|
-
# Deploy to production
|
|
212
|
-
mycli deploy production
|
|
213
|
-
|
|
214
|
-
# Preview staging deployment
|
|
215
|
-
mycli deploy staging --dry-run
|
|
216
|
-
|
|
217
|
-
# Use custom config
|
|
218
|
-
mycli deploy --config ./custom.yml
|
|
219
|
-
|
|
220
|
-
Learn more: https://docs.mycli.dev/deploy
|
|
221
|
-
```
|
|
1
|
+
# CLI Design Patterns
|
|
2
|
+
|
|
3
|
+
## Command Hierarchy
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
mycli # Root command
|
|
7
|
+
├── init [options] # Simple command
|
|
8
|
+
├── config
|
|
9
|
+
│ ├── get <key> # Nested subcommand
|
|
10
|
+
│ ├── set <key> <value>
|
|
11
|
+
│ └── list
|
|
12
|
+
├── deploy [environment] # Command with args
|
|
13
|
+
│ ├── --dry-run # Flag
|
|
14
|
+
│ ├── --force
|
|
15
|
+
│ └── --config <file> # Option with value
|
|
16
|
+
└── plugins
|
|
17
|
+
├── install <name>
|
|
18
|
+
├── list
|
|
19
|
+
└── remove <name>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Flag Conventions
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Boolean flags (presence = true)
|
|
26
|
+
mycli deploy --force --dry-run
|
|
27
|
+
|
|
28
|
+
# Short + long forms
|
|
29
|
+
mycli -v --verbose
|
|
30
|
+
mycli -c config.yml --config config.yml
|
|
31
|
+
|
|
32
|
+
# Required vs optional
|
|
33
|
+
mycli deploy <env> # Positional (required)
|
|
34
|
+
mycli deploy --env production # Flag (optional)
|
|
35
|
+
|
|
36
|
+
# Multiple values
|
|
37
|
+
mycli install pkg1 pkg2 pkg3 # Variadic args
|
|
38
|
+
mycli --exclude node_modules --exclude .git
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Configuration Layers
|
|
42
|
+
|
|
43
|
+
Priority order (highest to lowest):
|
|
44
|
+
|
|
45
|
+
1. **Command-line flags** - Explicit user intent
|
|
46
|
+
2. **Environment variables** - Runtime context
|
|
47
|
+
3. **Config files (project)** - `.myclirc`, `mycli.config.js`
|
|
48
|
+
4. **Config files (user)** - `~/.myclirc`, `~/.config/mycli/config.yml`
|
|
49
|
+
5. **Config files (system)** - `/etc/mycli/config.yml`
|
|
50
|
+
6. **Defaults** - Hard-coded sensible defaults
|
|
51
|
+
|
|
52
|
+
```javascript
|
|
53
|
+
// Example config resolution
|
|
54
|
+
const config = {
|
|
55
|
+
...systemDefaults,
|
|
56
|
+
...loadSystemConfig(),
|
|
57
|
+
...loadUserConfig(),
|
|
58
|
+
...loadProjectConfig(),
|
|
59
|
+
...loadEnvVars(),
|
|
60
|
+
...parseCliFlags(),
|
|
61
|
+
};
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Exit Codes
|
|
65
|
+
|
|
66
|
+
Standard POSIX exit codes:
|
|
67
|
+
|
|
68
|
+
```javascript
|
|
69
|
+
const EXIT_CODES = {
|
|
70
|
+
SUCCESS: 0,
|
|
71
|
+
GENERAL_ERROR: 1,
|
|
72
|
+
MISUSE: 2, // Invalid arguments
|
|
73
|
+
PERMISSION_DENIED: 77,
|
|
74
|
+
NOT_FOUND: 127,
|
|
75
|
+
SIGINT: 130, // Ctrl+C
|
|
76
|
+
};
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Plugin Architecture
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
mycli/
|
|
83
|
+
├── core/ # Core functionality
|
|
84
|
+
├── plugins/
|
|
85
|
+
│ ├── aws/ # Plugin: AWS integration
|
|
86
|
+
│ │ ├── package.json
|
|
87
|
+
│ │ └── index.js
|
|
88
|
+
│ └── github/ # Plugin: GitHub integration
|
|
89
|
+
│ ├── package.json
|
|
90
|
+
│ └── index.js
|
|
91
|
+
└── plugin-loader.js # Discovery & loading
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Plugin discovery:
|
|
95
|
+
1. Check `~/.mycli/plugins/`
|
|
96
|
+
2. Check `node_modules/mycli-plugin-*`
|
|
97
|
+
3. Check `MYCLI_PLUGIN_PATH` env var
|
|
98
|
+
|
|
99
|
+
## Error Handling Patterns
|
|
100
|
+
|
|
101
|
+
```javascript
|
|
102
|
+
// Good: Actionable error messages
|
|
103
|
+
Error: Config file not found at /path/to/config.yml
|
|
104
|
+
|
|
105
|
+
Tried locations:
|
|
106
|
+
• ./mycli.config.yml
|
|
107
|
+
• ~/.myclirc
|
|
108
|
+
• /etc/mycli/config.yml
|
|
109
|
+
|
|
110
|
+
Run 'mycli init' to create a config file, or use --config to specify location.
|
|
111
|
+
|
|
112
|
+
// Bad: Unhelpful errors
|
|
113
|
+
Error: ENOENT
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Interactive vs Non-Interactive
|
|
117
|
+
|
|
118
|
+
```javascript
|
|
119
|
+
// Detect if running in CI/CD
|
|
120
|
+
const isCI = process.env.CI === 'true' || !process.stdout.isTTY;
|
|
121
|
+
|
|
122
|
+
if (isCI) {
|
|
123
|
+
// Non-interactive: fail fast with clear errors
|
|
124
|
+
if (!options.environment) {
|
|
125
|
+
throw new Error('--environment required in non-interactive mode');
|
|
126
|
+
}
|
|
127
|
+
} else {
|
|
128
|
+
// Interactive: prompt user
|
|
129
|
+
const environment = await prompt({
|
|
130
|
+
type: 'select',
|
|
131
|
+
message: 'Select environment:',
|
|
132
|
+
choices: ['development', 'staging', 'production'],
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## State Management
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
~/.mycli/
|
|
141
|
+
├── config.yml # User configuration
|
|
142
|
+
├── cache/ # Cached data
|
|
143
|
+
│ ├── plugins.json
|
|
144
|
+
│ └── api-responses/
|
|
145
|
+
├── credentials.json # Sensitive data (600 perms)
|
|
146
|
+
└── state.json # Session state
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Performance Patterns
|
|
150
|
+
|
|
151
|
+
```javascript
|
|
152
|
+
// Lazy loading: Don't load unused dependencies
|
|
153
|
+
if (command === 'deploy') {
|
|
154
|
+
const deploy = require('./commands/deploy'); // Load on demand
|
|
155
|
+
await deploy.run();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Caching: Avoid repeated API calls
|
|
159
|
+
const cache = new Cache('~/.mycli/cache', { ttl: 3600 });
|
|
160
|
+
let plugins = await cache.get('plugins');
|
|
161
|
+
if (!plugins) {
|
|
162
|
+
plugins = await fetchPlugins();
|
|
163
|
+
await cache.set('plugins', plugins);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Async operations: Don't block unnecessarily
|
|
167
|
+
await Promise.all([
|
|
168
|
+
validateConfig(),
|
|
169
|
+
checkForUpdates(),
|
|
170
|
+
loadPlugins(),
|
|
171
|
+
]);
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Versioning & Updates
|
|
175
|
+
|
|
176
|
+
```javascript
|
|
177
|
+
// Check for updates (non-blocking)
|
|
178
|
+
checkForUpdates().then(update => {
|
|
179
|
+
if (update.available) {
|
|
180
|
+
console.log(`Update available: ${update.version}`);
|
|
181
|
+
console.log(`Run: npm install -g mycli@latest`);
|
|
182
|
+
}
|
|
183
|
+
}).catch(() => {
|
|
184
|
+
// Silently fail - don't interrupt user workflow
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
// Version compatibility
|
|
188
|
+
const MIN_NODE_VERSION = '18.0.0';
|
|
189
|
+
if (!semver.satisfies(process.version, `>=${MIN_NODE_VERSION}`)) {
|
|
190
|
+
console.error(`mycli requires Node.js ${MIN_NODE_VERSION} or higher`);
|
|
191
|
+
process.exit(1);
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Help Text Design
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
USAGE
|
|
199
|
+
mycli deploy [environment] [options]
|
|
200
|
+
|
|
201
|
+
ARGUMENTS
|
|
202
|
+
environment Target environment (development|staging|production)
|
|
203
|
+
|
|
204
|
+
OPTIONS
|
|
205
|
+
-c, --config <file> Path to config file
|
|
206
|
+
-f, --force Skip confirmation prompts
|
|
207
|
+
-d, --dry-run Preview changes without executing
|
|
208
|
+
-v, --verbose Show detailed output
|
|
209
|
+
|
|
210
|
+
EXAMPLES
|
|
211
|
+
# Deploy to production
|
|
212
|
+
mycli deploy production
|
|
213
|
+
|
|
214
|
+
# Preview staging deployment
|
|
215
|
+
mycli deploy staging --dry-run
|
|
216
|
+
|
|
217
|
+
# Use custom config
|
|
218
|
+
mycli deploy --config ./custom.yml
|
|
219
|
+
|
|
220
|
+
Learn more: https://docs.mycli.dev/deploy
|
|
221
|
+
```
|