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
|
@@ -8,39 +8,52 @@ const {
|
|
|
8
8
|
ROOT,
|
|
9
9
|
sessionDir,
|
|
10
10
|
workerArtifacts,
|
|
11
|
+
initSession,
|
|
11
12
|
createWorker,
|
|
12
13
|
updateStatus,
|
|
13
14
|
appendHandoff,
|
|
14
15
|
completeHandoff,
|
|
16
|
+
refreshPlan,
|
|
17
|
+
buildPlan,
|
|
18
|
+
validateSession,
|
|
19
|
+
readJson,
|
|
15
20
|
slugify,
|
|
16
21
|
relPosix
|
|
17
22
|
} = require('./lib/orchestrator.cjs');
|
|
18
23
|
|
|
19
|
-
const COMMANDS = ['init', 'add-worker', 'status', 'set-status', 'append', 'complete', 'list', 'help'];
|
|
24
|
+
const COMMANDS = ['init', 'add-worker', 'status', 'set-status', 'append', 'complete', 'plan', 'validate', 'list', 'help'];
|
|
20
25
|
|
|
21
26
|
function usage() {
|
|
22
27
|
console.log([
|
|
23
28
|
'Usage:',
|
|
24
|
-
' node scripts/orchestration/session.
|
|
29
|
+
' node scripts/orchestration/session.cjs init <session>',
|
|
25
30
|
' node scripts/orchestration/session.cjs add-worker <session> <worker> --agent <name> --objective <text>',
|
|
26
|
-
'
|
|
27
|
-
'
|
|
28
|
-
' node scripts/orchestration/session.
|
|
31
|
+
' [--context <line>]... [--deliverable <line>]...',
|
|
32
|
+
' [--depends-on <worker>]... [--lightweight]',
|
|
33
|
+
' node scripts/orchestration/session.cjs set-status <session> <worker> <state> [--details <text>]',
|
|
34
|
+
' node scripts/orchestration/session.cjs append <session> <worker> <section> --content <text>',
|
|
29
35
|
' node scripts/orchestration/session.cjs complete <session> <worker>',
|
|
30
|
-
'
|
|
31
|
-
'
|
|
32
|
-
'
|
|
33
|
-
'
|
|
36
|
+
' [--summary <text>] [--validation <text>]',
|
|
37
|
+
' [--files <newline-or-comma-separated>]',
|
|
38
|
+
' [--follow-ups <newline-separated>]',
|
|
39
|
+
' [--stage-spec <text>] [--stage-quality <text>]',
|
|
40
|
+
' node scripts/orchestration/session.cjs status <session>',
|
|
41
|
+
' node scripts/orchestration/session.cjs plan <session> # refresh and print plan.json',
|
|
42
|
+
' node scripts/orchestration/session.cjs validate <session> # validate all artifacts against schemas',
|
|
43
|
+
' node scripts/orchestration/session.cjs list',
|
|
34
44
|
'',
|
|
35
45
|
'States: not_started | running | blocked | completed | failed',
|
|
36
|
-
`Coordination root: ${relPosix(COORDINATION_ROOT)}
|
|
46
|
+
`Coordination root: ${relPosix(COORDINATION_ROOT)}/`,
|
|
47
|
+
'Schemas: schemas/orchestration/'
|
|
37
48
|
].join('\n'));
|
|
38
49
|
}
|
|
39
50
|
|
|
40
51
|
const BOOLEAN_FLAGS = new Set(['lightweight']);
|
|
52
|
+
const REPEATABLE_FLAGS = new Set(['context', 'deliverable', 'depends-on']);
|
|
41
53
|
|
|
42
54
|
function parseFlags(args) {
|
|
43
|
-
const flags = {
|
|
55
|
+
const flags = {};
|
|
56
|
+
for (const k of REPEATABLE_FLAGS) flags[k] = [];
|
|
44
57
|
const positional = [];
|
|
45
58
|
for (let i = 0; i < args.length; i += 1) {
|
|
46
59
|
const arg = args[i];
|
|
@@ -51,7 +64,7 @@ function parseFlags(args) {
|
|
|
51
64
|
continue;
|
|
52
65
|
}
|
|
53
66
|
const value = args[i + 1];
|
|
54
|
-
if (key
|
|
67
|
+
if (REPEATABLE_FLAGS.has(key)) {
|
|
55
68
|
flags[key].push(value);
|
|
56
69
|
} else {
|
|
57
70
|
flags[key] = value;
|
|
@@ -65,17 +78,8 @@ function parseFlags(args) {
|
|
|
65
78
|
}
|
|
66
79
|
|
|
67
80
|
function cmdInit(name) {
|
|
68
|
-
if (!name) throw new Error('session
|
|
69
|
-
const dir =
|
|
70
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
71
|
-
const meta = path.join(dir, 'session.json');
|
|
72
|
-
if (!fs.existsSync(meta)) {
|
|
73
|
-
fs.writeFileSync(meta, JSON.stringify({
|
|
74
|
-
name: slugify(name, 'session'),
|
|
75
|
-
label: name,
|
|
76
|
-
createdAt: new Date().toISOString()
|
|
77
|
-
}, null, 2) + '\n', 'utf8');
|
|
78
|
-
}
|
|
81
|
+
if (!name) throw new Error('session name is required');
|
|
82
|
+
const dir = initSession(name);
|
|
79
83
|
console.log(relPosix(dir));
|
|
80
84
|
}
|
|
81
85
|
|
|
@@ -88,8 +92,9 @@ function cmdAddWorker(session, worker, flags) {
|
|
|
88
92
|
workerName: worker,
|
|
89
93
|
agent: flags.agent,
|
|
90
94
|
objective: flags.objective,
|
|
91
|
-
context: flags.context,
|
|
92
|
-
deliverables: flags.deliverable,
|
|
95
|
+
context: flags.context || [],
|
|
96
|
+
deliverables: flags.deliverable || [],
|
|
97
|
+
dependsOn: flags['depends-on'] || [],
|
|
93
98
|
lightweight: Boolean(flags.lightweight)
|
|
94
99
|
});
|
|
95
100
|
const out = {
|
|
@@ -116,37 +121,70 @@ function cmdAppend(session, worker, section, flags) {
|
|
|
116
121
|
|
|
117
122
|
function cmdComplete(session, worker, flags) {
|
|
118
123
|
if (!session || !worker) throw new Error('session and worker names are required');
|
|
119
|
-
const fields = {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
if (
|
|
127
|
-
|
|
124
|
+
const fields = {};
|
|
125
|
+
if (flags.summary !== undefined) fields.summary = flags.summary;
|
|
126
|
+
if (flags.validation !== undefined) fields.validation = flags.validation;
|
|
127
|
+
if (flags.files !== undefined) fields.filesChanged = flags.files;
|
|
128
|
+
if (flags['follow-ups'] !== undefined) fields.followUps = flags['follow-ups'];
|
|
129
|
+
const stages = {};
|
|
130
|
+
if (flags['stage-spec'] !== undefined) stages.spec = flags['stage-spec'];
|
|
131
|
+
if (flags['stage-quality'] !== undefined) stages.quality = flags['stage-quality'];
|
|
132
|
+
if (Object.keys(stages).length > 0) fields.stages = stages;
|
|
133
|
+
|
|
134
|
+
if (Object.keys(fields).length === 0) {
|
|
135
|
+
throw new Error('at least one of --summary | --validation | --files | --follow-ups | --stage-spec | --stage-quality is required');
|
|
128
136
|
}
|
|
129
137
|
const file = completeHandoff(session, worker, fields);
|
|
130
138
|
console.log(relPosix(file));
|
|
131
139
|
}
|
|
132
140
|
|
|
133
141
|
function cmdStatus(session) {
|
|
134
|
-
if (!session) throw new Error('session
|
|
142
|
+
if (!session) throw new Error('session name is required');
|
|
135
143
|
const dir = sessionDir(session);
|
|
136
144
|
if (!fs.existsSync(dir)) {
|
|
137
145
|
console.log(`(no such session: ${session})`);
|
|
138
146
|
return;
|
|
139
147
|
}
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
+
const plan = buildPlan(session);
|
|
149
|
+
if (plan.workers.length === 0) {
|
|
150
|
+
console.log('(no workers)');
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const lines = plan.workers.map(w => {
|
|
154
|
+
const lw = w.lightweight ? ' [lightweight]' : '';
|
|
155
|
+
const dep = w.dependsOn.length > 0 ? ` ⟵ ${w.dependsOn.join(',')}` : '';
|
|
156
|
+
return `${w.name}\t${w.state}${lw}${dep}`;
|
|
148
157
|
});
|
|
149
|
-
console.log(
|
|
158
|
+
console.log(lines.join('\n'));
|
|
159
|
+
console.log('');
|
|
160
|
+
console.log(`ready: ${plan.buckets.ready.join(', ') || '∅'}`);
|
|
161
|
+
console.log(`running: ${plan.buckets.running.join(', ') || '∅'}`);
|
|
162
|
+
console.log(`blocked: ${plan.buckets.blocked.join(', ') || '∅'}`);
|
|
163
|
+
console.log(`waiting: ${plan.buckets.waiting.join(', ') || '∅'}`);
|
|
164
|
+
console.log(`completed: ${plan.buckets.completed.join(', ') || '∅'}`);
|
|
165
|
+
if (plan.buckets.failed.length > 0) console.log(`failed: ${plan.buckets.failed.join(', ')}`);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function cmdPlan(session) {
|
|
169
|
+
if (!session) throw new Error('session name is required');
|
|
170
|
+
const file = refreshPlan(session);
|
|
171
|
+
console.log(relPosix(file));
|
|
172
|
+
console.log(JSON.stringify(readJson(file), null, 2));
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function cmdValidate(session) {
|
|
176
|
+
if (!session) throw new Error('session name is required');
|
|
177
|
+
const errors = validateSession(session);
|
|
178
|
+
if (errors.length === 0) {
|
|
179
|
+
console.log(`✔ session '${slugify(session, 'session')}' artifacts conform to schemas/orchestration/*.schema.json`);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
console.error(`✖ ${errors.length} file(s) failed validation:`);
|
|
183
|
+
for (const e of errors) {
|
|
184
|
+
console.error(` ${e.file}`);
|
|
185
|
+
for (const p of e.problems) console.error(` - ${p}`);
|
|
186
|
+
}
|
|
187
|
+
process.exit(1);
|
|
150
188
|
}
|
|
151
189
|
|
|
152
190
|
function cmdList() {
|
|
@@ -187,6 +225,12 @@ function main() {
|
|
|
187
225
|
case 'status':
|
|
188
226
|
cmdStatus(positional[0]);
|
|
189
227
|
break;
|
|
228
|
+
case 'plan':
|
|
229
|
+
cmdPlan(positional[0]);
|
|
230
|
+
break;
|
|
231
|
+
case 'validate':
|
|
232
|
+
cmdValidate(positional[0]);
|
|
233
|
+
break;
|
|
190
234
|
case 'list':
|
|
191
235
|
cmdList();
|
|
192
236
|
break;
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 Jesse Vincent
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Jesse Vincent
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,162 +1,162 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: fine-tuning-expert
|
|
3
|
-
description: "Use when fine-tuning LLMs, training custom models, or adapting foundation models for specific tasks. Invoke for configuring LoRA/QLoRA adapters, preparing JSONL training datasets, setting hyperparameters for fine-tuning runs, adapter training, transfer learning, finetuning with Hugging Face PEFT, OpenAI fine-tuning, instruction tuning, RLHF, DPO, or quantizing and deploying fine-tuned models. Trigger terms include: LoRA, QLoRA, PEFT, finetuning, fine-tuning, adapter tuning, LLM training, model training, custom model."
|
|
4
|
-
license: MIT
|
|
5
|
-
metadata:
|
|
6
|
-
author: https://github.com/Jeffallan
|
|
7
|
-
version: "1.1.0"
|
|
8
|
-
domain: data-ml
|
|
9
|
-
triggers: fine-tuning, fine tuning, finetuning, LoRA, QLoRA, PEFT, adapter tuning, transfer learning, model training, custom model, LLM training, instruction tuning, RLHF, model optimization, quantization
|
|
10
|
-
role: expert
|
|
11
|
-
scope: implementation
|
|
12
|
-
output-format: code
|
|
13
|
-
related-skills: devops-engineer
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
# Fine-Tuning Expert
|
|
17
|
-
|
|
18
|
-
Senior ML engineer specializing in LLM fine-tuning, parameter-efficient methods, and production model optimization.
|
|
19
|
-
|
|
20
|
-
## Core Workflow
|
|
21
|
-
|
|
22
|
-
1. **Dataset preparation** — Validate and format data; run quality checks before training starts
|
|
23
|
-
- Checkpoint: `python validate_dataset.py --input data.jsonl` — fix all errors before proceeding
|
|
24
|
-
2. **Method selection** — Choose PEFT technique based on GPU memory and task requirements
|
|
25
|
-
- Use LoRA for most tasks; QLoRA (4-bit) when GPU memory is constrained; full fine-tune only for small models
|
|
26
|
-
3. **Training** — Configure hyperparameters, monitor loss curves, checkpoint regularly
|
|
27
|
-
- Checkpoint: validation loss must decrease; plateau or increase signals overfitting
|
|
28
|
-
4. **Evaluation** — Benchmark against the base model; test on held-out set and edge cases
|
|
29
|
-
- Checkpoint: collect perplexity, task-specific metrics (BLEU/ROUGE), and latency numbers
|
|
30
|
-
5. **Deployment** — Merge adapter weights, quantize, measure inference throughput before serving
|
|
31
|
-
|
|
32
|
-
## Reference Guide
|
|
33
|
-
|
|
34
|
-
Load detailed guidance based on context:
|
|
35
|
-
|
|
36
|
-
| Topic | Reference | Load When |
|
|
37
|
-
|-------|-----------|-----------|
|
|
38
|
-
| LoRA/PEFT | `references/lora-peft.md` | Parameter-efficient fine-tuning, adapters |
|
|
39
|
-
| Dataset Prep | `references/dataset-preparation.md` | Training data formatting, quality checks |
|
|
40
|
-
| Hyperparameters | `references/hyperparameter-tuning.md` | Learning rates, batch sizes, schedulers |
|
|
41
|
-
| Evaluation | `references/evaluation-metrics.md` | Benchmarking, metrics, model comparison |
|
|
42
|
-
| Deployment | `references/deployment-optimization.md` | Model merging, quantization, serving |
|
|
43
|
-
|
|
44
|
-
## Minimal Working Example — LoRA Fine-Tuning with Hugging Face PEFT
|
|
45
|
-
|
|
46
|
-
```python
|
|
47
|
-
from datasets import load_dataset
|
|
48
|
-
from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments
|
|
49
|
-
from peft import LoraConfig, get_peft_model, TaskType
|
|
50
|
-
from trl import SFTTrainer
|
|
51
|
-
import torch
|
|
52
|
-
|
|
53
|
-
# 1. Load base model and tokenizer
|
|
54
|
-
model_id = "meta-llama/Llama-3-8B"
|
|
55
|
-
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
|
56
|
-
tokenizer.pad_token = tokenizer.eos_token
|
|
57
|
-
|
|
58
|
-
model = AutoModelForCausalLM.from_pretrained(
|
|
59
|
-
model_id,
|
|
60
|
-
torch_dtype=torch.bfloat16,
|
|
61
|
-
device_map="auto",
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
# 2. Configure LoRA adapter
|
|
65
|
-
lora_config = LoraConfig(
|
|
66
|
-
task_type=TaskType.CAUSAL_LM,
|
|
67
|
-
r=16, # rank — increase for more capacity, decrease to save memory
|
|
68
|
-
lora_alpha=32, # scaling factor; typically 2× rank
|
|
69
|
-
target_modules=["q_proj", "v_proj"],
|
|
70
|
-
lora_dropout=0.05,
|
|
71
|
-
bias="none",
|
|
72
|
-
)
|
|
73
|
-
model = get_peft_model(model, lora_config)
|
|
74
|
-
model.print_trainable_parameters() # verify: should be ~0.1–1% of total params
|
|
75
|
-
|
|
76
|
-
# 3. Load and format dataset (Alpaca-style JSONL)
|
|
77
|
-
dataset = load_dataset("json", data_files={"train": "train.jsonl", "test": "test.jsonl"})
|
|
78
|
-
|
|
79
|
-
def format_prompt(example):
|
|
80
|
-
return {"text": f"### Instruction:\n{example['instruction']}\n\n### Response:\n{example['output']}"}
|
|
81
|
-
|
|
82
|
-
dataset = dataset.map(format_prompt)
|
|
83
|
-
|
|
84
|
-
# 4. Training arguments
|
|
85
|
-
training_args = TrainingArguments(
|
|
86
|
-
output_dir="./checkpoints",
|
|
87
|
-
num_train_epochs=3,
|
|
88
|
-
per_device_train_batch_size=4,
|
|
89
|
-
gradient_accumulation_steps=4, # effective batch size = 16
|
|
90
|
-
learning_rate=2e-4,
|
|
91
|
-
lr_scheduler_type="cosine",
|
|
92
|
-
warmup_ratio=0.03, # always use warmup
|
|
93
|
-
fp16=False,
|
|
94
|
-
bf16=True,
|
|
95
|
-
logging_steps=10,
|
|
96
|
-
eval_strategy="steps",
|
|
97
|
-
eval_steps=100,
|
|
98
|
-
save_steps=200,
|
|
99
|
-
load_best_model_at_end=True,
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
# 5. Train
|
|
103
|
-
trainer = SFTTrainer(
|
|
104
|
-
model=model,
|
|
105
|
-
args=training_args,
|
|
106
|
-
train_dataset=dataset["train"],
|
|
107
|
-
eval_dataset=dataset["test"],
|
|
108
|
-
dataset_text_field="text",
|
|
109
|
-
max_seq_length=2048,
|
|
110
|
-
)
|
|
111
|
-
trainer.train()
|
|
112
|
-
|
|
113
|
-
# 6. Save adapter weights only
|
|
114
|
-
model.save_pretrained("./lora-adapter")
|
|
115
|
-
tokenizer.save_pretrained("./lora-adapter")
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
**QLoRA variant** — add these lines before loading the model to enable 4-bit quantization:
|
|
119
|
-
```python
|
|
120
|
-
from transformers import BitsAndBytesConfig
|
|
121
|
-
|
|
122
|
-
bnb_config = BitsAndBytesConfig(
|
|
123
|
-
load_in_4bit=True,
|
|
124
|
-
bnb_4bit_quant_type="nf4",
|
|
125
|
-
bnb_4bit_compute_dtype=torch.bfloat16,
|
|
126
|
-
bnb_4bit_use_double_quant=True,
|
|
127
|
-
)
|
|
128
|
-
model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=bnb_config, device_map="auto")
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
**Merge adapter into base model for deployment:**
|
|
132
|
-
```python
|
|
133
|
-
from peft import PeftModel
|
|
134
|
-
|
|
135
|
-
base = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16)
|
|
136
|
-
merged = PeftModel.from_pretrained(base, "./lora-adapter").merge_and_unload()
|
|
137
|
-
merged.save_pretrained("./merged-model")
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Constraints
|
|
141
|
-
|
|
142
|
-
### MUST DO
|
|
143
|
-
- Validate dataset quality before training
|
|
144
|
-
- Use parameter-efficient methods for large models (>7B)
|
|
145
|
-
- Monitor training/validation loss curves
|
|
146
|
-
- Document hyperparameters and training config
|
|
147
|
-
- Version datasets and model checkpoints
|
|
148
|
-
- Always include a learning rate warmup
|
|
149
|
-
|
|
150
|
-
### MUST NOT DO
|
|
151
|
-
- Skip data quality validation
|
|
152
|
-
- Overfit on small datasets — use regularisation (dropout, weight decay) and early stopping
|
|
153
|
-
- Merge incompatible adapters (mismatched rank, base model, or target modules)
|
|
154
|
-
- Deploy without evaluation against a held-out set and latency benchmark
|
|
155
|
-
|
|
156
|
-
## Output Templates
|
|
157
|
-
|
|
158
|
-
When implementing fine-tuning, always provide:
|
|
159
|
-
1. **Dataset preparation script** with validation logic (schema checks, token-length histogram, deduplication)
|
|
160
|
-
2. **Training configuration** (full `TrainingArguments` + `LoraConfig` block, commented)
|
|
161
|
-
3. **Evaluation script** reporting perplexity, task-specific metrics, and latency
|
|
162
|
-
4. **Brief design rationale** — why this PEFT method, rank, and learning rate were chosen for this task
|
|
1
|
+
---
|
|
2
|
+
name: fine-tuning-expert
|
|
3
|
+
description: "Use when fine-tuning LLMs, training custom models, or adapting foundation models for specific tasks. Invoke for configuring LoRA/QLoRA adapters, preparing JSONL training datasets, setting hyperparameters for fine-tuning runs, adapter training, transfer learning, finetuning with Hugging Face PEFT, OpenAI fine-tuning, instruction tuning, RLHF, DPO, or quantizing and deploying fine-tuned models. Trigger terms include: LoRA, QLoRA, PEFT, finetuning, fine-tuning, adapter tuning, LLM training, model training, custom model."
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: https://github.com/Jeffallan
|
|
7
|
+
version: "1.1.0"
|
|
8
|
+
domain: data-ml
|
|
9
|
+
triggers: fine-tuning, fine tuning, finetuning, LoRA, QLoRA, PEFT, adapter tuning, transfer learning, model training, custom model, LLM training, instruction tuning, RLHF, model optimization, quantization
|
|
10
|
+
role: expert
|
|
11
|
+
scope: implementation
|
|
12
|
+
output-format: code
|
|
13
|
+
related-skills: devops-engineer
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Fine-Tuning Expert
|
|
17
|
+
|
|
18
|
+
Senior ML engineer specializing in LLM fine-tuning, parameter-efficient methods, and production model optimization.
|
|
19
|
+
|
|
20
|
+
## Core Workflow
|
|
21
|
+
|
|
22
|
+
1. **Dataset preparation** — Validate and format data; run quality checks before training starts
|
|
23
|
+
- Checkpoint: `python validate_dataset.py --input data.jsonl` — fix all errors before proceeding
|
|
24
|
+
2. **Method selection** — Choose PEFT technique based on GPU memory and task requirements
|
|
25
|
+
- Use LoRA for most tasks; QLoRA (4-bit) when GPU memory is constrained; full fine-tune only for small models
|
|
26
|
+
3. **Training** — Configure hyperparameters, monitor loss curves, checkpoint regularly
|
|
27
|
+
- Checkpoint: validation loss must decrease; plateau or increase signals overfitting
|
|
28
|
+
4. **Evaluation** — Benchmark against the base model; test on held-out set and edge cases
|
|
29
|
+
- Checkpoint: collect perplexity, task-specific metrics (BLEU/ROUGE), and latency numbers
|
|
30
|
+
5. **Deployment** — Merge adapter weights, quantize, measure inference throughput before serving
|
|
31
|
+
|
|
32
|
+
## Reference Guide
|
|
33
|
+
|
|
34
|
+
Load detailed guidance based on context:
|
|
35
|
+
|
|
36
|
+
| Topic | Reference | Load When |
|
|
37
|
+
|-------|-----------|-----------|
|
|
38
|
+
| LoRA/PEFT | `references/lora-peft.md` | Parameter-efficient fine-tuning, adapters |
|
|
39
|
+
| Dataset Prep | `references/dataset-preparation.md` | Training data formatting, quality checks |
|
|
40
|
+
| Hyperparameters | `references/hyperparameter-tuning.md` | Learning rates, batch sizes, schedulers |
|
|
41
|
+
| Evaluation | `references/evaluation-metrics.md` | Benchmarking, metrics, model comparison |
|
|
42
|
+
| Deployment | `references/deployment-optimization.md` | Model merging, quantization, serving |
|
|
43
|
+
|
|
44
|
+
## Minimal Working Example — LoRA Fine-Tuning with Hugging Face PEFT
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
from datasets import load_dataset
|
|
48
|
+
from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments
|
|
49
|
+
from peft import LoraConfig, get_peft_model, TaskType
|
|
50
|
+
from trl import SFTTrainer
|
|
51
|
+
import torch
|
|
52
|
+
|
|
53
|
+
# 1. Load base model and tokenizer
|
|
54
|
+
model_id = "meta-llama/Llama-3-8B"
|
|
55
|
+
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
|
56
|
+
tokenizer.pad_token = tokenizer.eos_token
|
|
57
|
+
|
|
58
|
+
model = AutoModelForCausalLM.from_pretrained(
|
|
59
|
+
model_id,
|
|
60
|
+
torch_dtype=torch.bfloat16,
|
|
61
|
+
device_map="auto",
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
# 2. Configure LoRA adapter
|
|
65
|
+
lora_config = LoraConfig(
|
|
66
|
+
task_type=TaskType.CAUSAL_LM,
|
|
67
|
+
r=16, # rank — increase for more capacity, decrease to save memory
|
|
68
|
+
lora_alpha=32, # scaling factor; typically 2× rank
|
|
69
|
+
target_modules=["q_proj", "v_proj"],
|
|
70
|
+
lora_dropout=0.05,
|
|
71
|
+
bias="none",
|
|
72
|
+
)
|
|
73
|
+
model = get_peft_model(model, lora_config)
|
|
74
|
+
model.print_trainable_parameters() # verify: should be ~0.1–1% of total params
|
|
75
|
+
|
|
76
|
+
# 3. Load and format dataset (Alpaca-style JSONL)
|
|
77
|
+
dataset = load_dataset("json", data_files={"train": "train.jsonl", "test": "test.jsonl"})
|
|
78
|
+
|
|
79
|
+
def format_prompt(example):
|
|
80
|
+
return {"text": f"### Instruction:\n{example['instruction']}\n\n### Response:\n{example['output']}"}
|
|
81
|
+
|
|
82
|
+
dataset = dataset.map(format_prompt)
|
|
83
|
+
|
|
84
|
+
# 4. Training arguments
|
|
85
|
+
training_args = TrainingArguments(
|
|
86
|
+
output_dir="./checkpoints",
|
|
87
|
+
num_train_epochs=3,
|
|
88
|
+
per_device_train_batch_size=4,
|
|
89
|
+
gradient_accumulation_steps=4, # effective batch size = 16
|
|
90
|
+
learning_rate=2e-4,
|
|
91
|
+
lr_scheduler_type="cosine",
|
|
92
|
+
warmup_ratio=0.03, # always use warmup
|
|
93
|
+
fp16=False,
|
|
94
|
+
bf16=True,
|
|
95
|
+
logging_steps=10,
|
|
96
|
+
eval_strategy="steps",
|
|
97
|
+
eval_steps=100,
|
|
98
|
+
save_steps=200,
|
|
99
|
+
load_best_model_at_end=True,
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
# 5. Train
|
|
103
|
+
trainer = SFTTrainer(
|
|
104
|
+
model=model,
|
|
105
|
+
args=training_args,
|
|
106
|
+
train_dataset=dataset["train"],
|
|
107
|
+
eval_dataset=dataset["test"],
|
|
108
|
+
dataset_text_field="text",
|
|
109
|
+
max_seq_length=2048,
|
|
110
|
+
)
|
|
111
|
+
trainer.train()
|
|
112
|
+
|
|
113
|
+
# 6. Save adapter weights only
|
|
114
|
+
model.save_pretrained("./lora-adapter")
|
|
115
|
+
tokenizer.save_pretrained("./lora-adapter")
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**QLoRA variant** — add these lines before loading the model to enable 4-bit quantization:
|
|
119
|
+
```python
|
|
120
|
+
from transformers import BitsAndBytesConfig
|
|
121
|
+
|
|
122
|
+
bnb_config = BitsAndBytesConfig(
|
|
123
|
+
load_in_4bit=True,
|
|
124
|
+
bnb_4bit_quant_type="nf4",
|
|
125
|
+
bnb_4bit_compute_dtype=torch.bfloat16,
|
|
126
|
+
bnb_4bit_use_double_quant=True,
|
|
127
|
+
)
|
|
128
|
+
model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=bnb_config, device_map="auto")
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Merge adapter into base model for deployment:**
|
|
132
|
+
```python
|
|
133
|
+
from peft import PeftModel
|
|
134
|
+
|
|
135
|
+
base = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16)
|
|
136
|
+
merged = PeftModel.from_pretrained(base, "./lora-adapter").merge_and_unload()
|
|
137
|
+
merged.save_pretrained("./merged-model")
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Constraints
|
|
141
|
+
|
|
142
|
+
### MUST DO
|
|
143
|
+
- Validate dataset quality before training
|
|
144
|
+
- Use parameter-efficient methods for large models (>7B)
|
|
145
|
+
- Monitor training/validation loss curves
|
|
146
|
+
- Document hyperparameters and training config
|
|
147
|
+
- Version datasets and model checkpoints
|
|
148
|
+
- Always include a learning rate warmup
|
|
149
|
+
|
|
150
|
+
### MUST NOT DO
|
|
151
|
+
- Skip data quality validation
|
|
152
|
+
- Overfit on small datasets — use regularisation (dropout, weight decay) and early stopping
|
|
153
|
+
- Merge incompatible adapters (mismatched rank, base model, or target modules)
|
|
154
|
+
- Deploy without evaluation against a held-out set and latency benchmark
|
|
155
|
+
|
|
156
|
+
## Output Templates
|
|
157
|
+
|
|
158
|
+
When implementing fine-tuning, always provide:
|
|
159
|
+
1. **Dataset preparation script** with validation logic (schema checks, token-length histogram, deduplication)
|
|
160
|
+
2. **Training configuration** (full `TrainingArguments` + `LoraConfig` block, commented)
|
|
161
|
+
3. **Evaluation script** reporting perplexity, task-specific metrics, and latency
|
|
162
|
+
4. **Brief design rationale** — why this PEFT method, rank, and learning rate were chosen for this task
|