specweave 0.21.2 → 0.21.3
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.md +232 -5
- package/dist/plugins/specweave-github/lib/IssueStateManager.d.ts +98 -0
- package/dist/plugins/specweave-github/lib/IssueStateManager.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/IssueStateManager.js +146 -0
- package/dist/plugins/specweave-github/lib/IssueStateManager.js.map +1 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +6 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -1
- package/dist/src/cli/commands/check-hooks.d.ts +11 -0
- package/dist/src/cli/commands/check-hooks.d.ts.map +1 -0
- package/dist/src/cli/commands/check-hooks.js +144 -0
- package/dist/src/cli/commands/check-hooks.js.map +1 -0
- package/dist/src/cli/commands/cicd-monitor.js +3 -3
- package/dist/src/cli/commands/cicd-monitor.js.map +1 -1
- package/dist/src/cli/commands/import-docs.js +2 -2
- package/dist/src/cli/commands/import-docs.js.map +1 -1
- package/dist/src/cli/commands/init-multiproject.js +4 -4
- package/dist/src/cli/commands/init-multiproject.js.map +1 -1
- package/dist/src/cli/commands/migrate-to-multiproject.js +3 -3
- package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
- package/dist/src/cli/commands/plan/agent-invoker.d.ts +79 -0
- package/dist/src/cli/commands/plan/agent-invoker.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/agent-invoker.js +383 -0
- package/dist/src/cli/commands/plan/agent-invoker.js.map +1 -0
- package/dist/src/cli/commands/plan/increment-detector.d.ts +27 -0
- package/dist/src/cli/commands/plan/increment-detector.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/increment-detector.js +159 -0
- package/dist/src/cli/commands/plan/increment-detector.js.map +1 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.d.ts +45 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.js +229 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.js.map +1 -0
- package/dist/src/cli/commands/plan/plan-validator.d.ts +36 -0
- package/dist/src/cli/commands/plan/plan-validator.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/plan-validator.js +174 -0
- package/dist/src/cli/commands/plan/plan-validator.js.map +1 -0
- package/dist/src/cli/commands/plan/types.d.ts +170 -0
- package/dist/src/cli/commands/plan/types.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/types.js +42 -0
- package/dist/src/cli/commands/plan/types.js.map +1 -0
- package/dist/src/cli/commands/plan-command.d.ts +16 -0
- package/dist/src/cli/commands/plan-command.d.ts.map +1 -0
- package/dist/src/cli/commands/plan-command.js +127 -0
- package/dist/src/cli/commands/plan-command.js.map +1 -0
- package/dist/src/cli/commands/switch-project.js +3 -3
- package/dist/src/cli/commands/switch-project.js.map +1 -1
- package/dist/src/cli/commands/validate-parent-repo.js +1 -1
- package/dist/src/cli/commands/validate-parent-repo.js.map +1 -1
- package/dist/src/config/ConfigManager.d.ts +69 -0
- package/dist/src/config/ConfigManager.d.ts.map +1 -0
- package/dist/src/config/ConfigManager.js +130 -0
- package/dist/src/config/ConfigManager.js.map +1 -0
- package/dist/src/config/types.d.ts +1357 -0
- package/dist/src/config/types.d.ts.map +1 -0
- package/dist/src/config/types.js +67 -0
- package/dist/src/config/types.js.map +1 -0
- package/dist/src/core/brownfield/importer.d.ts +1 -1
- package/dist/src/core/brownfield/importer.d.ts.map +1 -1
- package/dist/src/core/brownfield/importer.js +3 -3
- package/dist/src/core/brownfield/importer.js.map +1 -1
- package/dist/src/core/cicd/config-loader.d.ts +1 -1
- package/dist/src/core/cicd/config-loader.d.ts.map +1 -1
- package/dist/src/core/cicd/index.d.ts +6 -6
- package/dist/src/core/cicd/index.d.ts.map +1 -1
- package/dist/src/core/cicd/index.js +6 -6
- package/dist/src/core/cicd/index.js.map +1 -1
- package/dist/src/core/cicd/monitor-service.d.ts +3 -3
- package/dist/src/core/cicd/monitor-service.d.ts.map +1 -1
- package/dist/src/core/cicd/monitor-service.js +3 -3
- package/dist/src/core/cicd/monitor-service.js.map +1 -1
- package/dist/src/core/cicd/notifier.d.ts +1 -1
- package/dist/src/core/cicd/notifier.d.ts.map +1 -1
- package/dist/src/core/cicd/state-manager.d.ts +1 -1
- package/dist/src/core/cicd/state-manager.d.ts.map +1 -1
- package/dist/src/core/cicd/state-manager.js +1 -1
- package/dist/src/core/cicd/state-manager.js.map +1 -1
- package/dist/src/core/cicd/workflow-monitor.d.ts +1 -1
- package/dist/src/core/cicd/workflow-monitor.d.ts.map +1 -1
- package/dist/src/core/cicd/workflow-monitor.js +1 -1
- package/dist/src/core/cicd/workflow-monitor.js.map +1 -1
- package/dist/src/core/cost-tracker.d.ts +2 -2
- package/dist/src/core/cost-tracker.d.ts.map +1 -1
- package/dist/src/core/cost-tracker.js +1 -1
- package/dist/src/core/cost-tracker.js.map +1 -1
- package/dist/src/core/hooks/HealthReporter.d.ts +55 -0
- package/dist/src/core/hooks/HealthReporter.d.ts.map +1 -0
- package/dist/src/core/hooks/HealthReporter.js +268 -0
- package/dist/src/core/hooks/HealthReporter.js.map +1 -0
- package/dist/src/core/hooks/HookAutoFixer.d.ts +41 -0
- package/dist/src/core/hooks/HookAutoFixer.d.ts.map +1 -0
- package/dist/src/core/hooks/HookAutoFixer.js +222 -0
- package/dist/src/core/hooks/HookAutoFixer.js.map +1 -0
- package/dist/src/core/hooks/HookExecutor.d.ts +57 -0
- package/dist/src/core/hooks/HookExecutor.d.ts.map +1 -0
- package/dist/src/core/hooks/HookExecutor.js +287 -0
- package/dist/src/core/hooks/HookExecutor.js.map +1 -0
- package/dist/src/core/hooks/HookHealthChecker.d.ts +51 -0
- package/dist/src/core/hooks/HookHealthChecker.d.ts.map +1 -0
- package/dist/src/core/hooks/HookHealthChecker.js +212 -0
- package/dist/src/core/hooks/HookHealthChecker.js.map +1 -0
- package/dist/src/core/hooks/HookScanner.d.ts +65 -0
- package/dist/src/core/hooks/HookScanner.d.ts.map +1 -0
- package/dist/src/core/hooks/HookScanner.js +214 -0
- package/dist/src/core/hooks/HookScanner.js.map +1 -0
- package/dist/src/core/hooks/types.d.ts +281 -0
- package/dist/src/core/hooks/types.d.ts.map +1 -0
- package/dist/src/core/hooks/types.js +10 -0
- package/dist/src/core/hooks/types.js.map +1 -0
- package/dist/src/core/iac/index.d.ts +10 -0
- package/dist/src/core/iac/index.d.ts.map +1 -0
- package/dist/src/core/iac/index.js +11 -0
- package/dist/src/core/iac/index.js.map +1 -0
- package/dist/src/core/iac/template-engine.d.ts +77 -0
- package/dist/src/core/iac/template-engine.d.ts.map +1 -0
- package/dist/src/core/iac/template-engine.js +182 -0
- package/dist/src/core/iac/template-engine.js.map +1 -0
- package/dist/src/core/increment/ac-status-manager.d.ts +115 -0
- package/dist/src/core/increment/ac-status-manager.d.ts.map +1 -0
- package/dist/src/core/increment/ac-status-manager.js +343 -0
- package/dist/src/core/increment/ac-status-manager.js.map +1 -0
- package/dist/src/core/increment/auto-transition-manager.d.ts +60 -0
- package/dist/src/core/increment/auto-transition-manager.d.ts.map +1 -0
- package/dist/src/core/increment/auto-transition-manager.js +192 -0
- package/dist/src/core/increment/auto-transition-manager.js.map +1 -0
- package/dist/src/core/increment/limits.d.ts +1 -1
- package/dist/src/core/increment/limits.d.ts.map +1 -1
- package/dist/src/core/increment/limits.js +2 -2
- package/dist/src/core/increment/limits.js.map +1 -1
- package/dist/src/core/increment/spec-sync-manager.d.ts +177 -0
- package/dist/src/core/increment/spec-sync-manager.d.ts.map +1 -0
- package/dist/src/core/increment/spec-sync-manager.js +496 -0
- package/dist/src/core/increment/spec-sync-manager.js.map +1 -0
- package/dist/src/core/increment/status-auto-transition.d.ts +46 -0
- package/dist/src/core/increment/status-auto-transition.d.ts.map +1 -0
- package/dist/src/core/increment/status-auto-transition.js +178 -0
- package/dist/src/core/increment/status-auto-transition.js.map +1 -0
- package/dist/src/core/increment/task-state-manager.d.ts +75 -0
- package/dist/src/core/increment/task-state-manager.d.ts.map +1 -0
- package/dist/src/core/increment/task-state-manager.js +117 -0
- package/dist/src/core/increment/task-state-manager.js.map +1 -0
- package/dist/src/core/living-docs/CodeValidator.d.ts +68 -0
- package/dist/src/core/living-docs/CodeValidator.d.ts.map +1 -0
- package/dist/src/core/living-docs/CodeValidator.js +160 -0
- package/dist/src/core/living-docs/CodeValidator.js.map +1 -0
- package/dist/src/core/living-docs/CompletionPropagator.d.ts +84 -0
- package/dist/src/core/living-docs/CompletionPropagator.d.ts.map +1 -0
- package/dist/src/core/living-docs/CompletionPropagator.js +205 -0
- package/dist/src/core/living-docs/CompletionPropagator.js.map +1 -0
- package/dist/src/core/living-docs/ProjectDetector.d.ts +29 -0
- package/dist/src/core/living-docs/ProjectDetector.d.ts.map +1 -0
- package/dist/src/core/living-docs/ProjectDetector.js +94 -0
- package/dist/src/core/living-docs/ProjectDetector.js.map +1 -0
- package/dist/src/core/living-docs/SpecDistributor.d.ts +55 -0
- package/dist/src/core/living-docs/SpecDistributor.d.ts.map +1 -0
- package/dist/src/core/living-docs/SpecDistributor.js +216 -0
- package/dist/src/core/living-docs/SpecDistributor.js.map +1 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts +116 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts.map +1 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.js +356 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.js.map +1 -0
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
- package/dist/src/core/living-docs/hierarchy-mapper.js +2 -1
- package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
- package/dist/src/core/living-docs/index.d.ts +1 -1
- package/dist/src/core/living-docs/index.d.ts.map +1 -1
- package/dist/src/core/living-docs/index.js +5 -1
- package/dist/src/core/living-docs/index.js.map +1 -1
- package/dist/src/core/living-docs/types.d.ts +70 -300
- package/dist/src/core/living-docs/types.d.ts.map +1 -1
- package/dist/src/core/living-docs/types.js +2 -10
- package/dist/src/core/living-docs/types.js.map +1 -1
- package/dist/src/core/project-manager.d.ts +1 -1
- package/dist/src/core/project-manager.d.ts.map +1 -1
- package/dist/src/core/project-manager.js +2 -2
- package/dist/src/core/project-manager.js.map +1 -1
- package/dist/src/core/qa/quality-gate-decider.d.ts +1 -1
- package/dist/src/core/qa/quality-gate-decider.d.ts.map +1 -1
- package/dist/src/core/qa/risk-calculator.d.ts +1 -1
- package/dist/src/core/qa/risk-calculator.d.ts.map +1 -1
- package/dist/src/core/repo-structure/setup-summary.d.ts +1 -1
- package/dist/src/core/repo-structure/setup-summary.d.ts.map +1 -1
- package/dist/src/core/rfc-generator-v2.d.ts +1 -1
- package/dist/src/core/rfc-generator-v2.d.ts.map +1 -1
- package/dist/src/core/rfc-generator-v2.js +1 -1
- package/dist/src/core/rfc-generator-v2.js.map +1 -1
- package/dist/src/core/serverless/context-detector.d.ts +12 -0
- package/dist/src/core/serverless/context-detector.d.ts.map +1 -0
- package/dist/src/core/serverless/context-detector.js +213 -0
- package/dist/src/core/serverless/context-detector.js.map +1 -0
- package/dist/src/core/serverless/cost-comparison.d.ts +73 -0
- package/dist/src/core/serverless/cost-comparison.d.ts.map +1 -0
- package/dist/src/core/serverless/cost-comparison.js +198 -0
- package/dist/src/core/serverless/cost-comparison.js.map +1 -0
- package/dist/src/core/serverless/cost-estimator.d.ts +69 -0
- package/dist/src/core/serverless/cost-estimator.d.ts.map +1 -0
- package/dist/src/core/serverless/cost-estimator.js +127 -0
- package/dist/src/core/serverless/cost-estimator.js.map +1 -0
- package/dist/src/core/serverless/cost-optimizer.d.ts +57 -0
- package/dist/src/core/serverless/cost-optimizer.d.ts.map +1 -0
- package/dist/src/core/serverless/cost-optimizer.js +221 -0
- package/dist/src/core/serverless/cost-optimizer.js.map +1 -0
- package/dist/src/core/serverless/index.d.ts +20 -0
- package/dist/src/core/serverless/index.d.ts.map +1 -0
- package/dist/src/core/serverless/index.js +26 -0
- package/dist/src/core/serverless/index.js.map +1 -0
- package/dist/src/core/serverless/learning-path-recommender.d.ts +152 -0
- package/dist/src/core/serverless/learning-path-recommender.d.ts.map +1 -0
- package/dist/src/core/serverless/learning-path-recommender.js +389 -0
- package/dist/src/core/serverless/learning-path-recommender.js.map +1 -0
- package/dist/src/core/serverless/platform-data-loader.d.ts +22 -0
- package/dist/src/core/serverless/platform-data-loader.d.ts.map +1 -0
- package/dist/src/core/serverless/platform-data-loader.js +49 -0
- package/dist/src/core/serverless/platform-data-loader.js.map +1 -0
- package/dist/src/core/serverless/platform-selector.d.ts +20 -0
- package/dist/src/core/serverless/platform-selector.d.ts.map +1 -0
- package/dist/src/core/serverless/platform-selector.js +279 -0
- package/dist/src/core/serverless/platform-selector.js.map +1 -0
- package/dist/src/core/serverless/recommendation-formatter.d.ts +24 -0
- package/dist/src/core/serverless/recommendation-formatter.d.ts.map +1 -0
- package/dist/src/core/serverless/recommendation-formatter.js +70 -0
- package/dist/src/core/serverless/recommendation-formatter.js.map +1 -0
- package/dist/src/core/serverless/suitability-analyzer.d.ts +22 -0
- package/dist/src/core/serverless/suitability-analyzer.d.ts.map +1 -0
- package/dist/src/core/serverless/suitability-analyzer.js +262 -0
- package/dist/src/core/serverless/suitability-analyzer.js.map +1 -0
- package/dist/src/core/serverless/types.d.ts +96 -0
- package/dist/src/core/serverless/types.d.ts.map +1 -0
- package/dist/src/core/serverless/types.js +5 -0
- package/dist/src/core/serverless/types.js.map +1 -0
- package/dist/src/core/sync/bidirectional-engine.d.ts +1 -1
- package/dist/src/core/sync/bidirectional-engine.d.ts.map +1 -1
- package/dist/src/core/sync/enhanced-content-builder.d.ts +1 -1
- package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
- package/dist/src/core/sync/profile-manager.d.ts +1 -1
- package/dist/src/core/sync/profile-manager.d.ts.map +1 -1
- package/dist/src/core/sync/profile-selector.d.ts +1 -1
- package/dist/src/core/sync/profile-selector.d.ts.map +1 -1
- package/dist/src/core/sync/profile-selector.js +1 -1
- package/dist/src/core/sync/profile-selector.js.map +1 -1
- package/dist/src/core/sync/project-context.d.ts +1 -1
- package/dist/src/core/sync/project-context.d.ts.map +1 -1
- package/dist/src/core/sync/rate-limiter.d.ts +1 -1
- package/dist/src/core/sync/rate-limiter.d.ts.map +1 -1
- package/dist/src/core/sync/status-sync-engine.d.ts +2 -2
- package/dist/src/core/sync/status-sync-engine.d.ts.map +1 -1
- package/dist/src/core/sync/status-sync-engine.js +2 -2
- package/dist/src/core/sync/status-sync-engine.js.map +1 -1
- package/dist/src/core/sync/time-range-selector.d.ts +1 -1
- package/dist/src/core/sync/time-range-selector.d.ts.map +1 -1
- package/dist/src/core/sync/time-range-selector.js +1 -1
- package/dist/src/core/sync/time-range-selector.js.map +1 -1
- package/dist/src/core/types/increment-metadata.d.ts +27 -0
- package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
- package/dist/src/core/types/increment-metadata.js +45 -1
- package/dist/src/core/types/increment-metadata.js.map +1 -1
- package/dist/src/core/types/sync-profile.d.ts +2 -0
- package/dist/src/core/types/sync-profile.d.ts.map +1 -1
- package/dist/src/core/types/sync-profile.js.map +1 -1
- package/dist/src/core/validation/increment-structure-validator.d.ts +47 -0
- package/dist/src/core/validation/increment-structure-validator.d.ts.map +1 -0
- package/dist/src/core/validation/increment-structure-validator.js +187 -0
- package/dist/src/core/validation/increment-structure-validator.js.map +1 -0
- package/dist/src/core/validation/three-file-validator.d.ts +82 -0
- package/dist/src/core/validation/three-file-validator.d.ts.map +1 -0
- package/dist/src/core/validation/three-file-validator.js +320 -0
- package/dist/src/core/validation/three-file-validator.js.map +1 -0
- package/dist/src/core/workflow/phase-detector.d.ts +103 -0
- package/dist/src/core/workflow/phase-detector.d.ts.map +1 -0
- package/dist/src/core/workflow/phase-detector.js +704 -0
- package/dist/src/core/workflow/phase-detector.js.map +1 -0
- package/dist/src/core/workflow/types.d.ts +153 -0
- package/dist/src/core/workflow/types.d.ts.map +1 -0
- package/dist/src/core/workflow/types.js +47 -0
- package/dist/src/core/workflow/types.js.map +1 -0
- package/dist/src/init/InitFlow.d.ts +37 -0
- package/dist/src/init/InitFlow.d.ts.map +1 -0
- package/dist/src/init/InitFlow.js +209 -0
- package/dist/src/init/InitFlow.js.map +1 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.d.ts +107 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.d.ts.map +1 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.js +405 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.js.map +1 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.d.ts +11 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.d.ts.map +1 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.js +92 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.js.map +1 -0
- package/dist/src/init/architecture/types.d.ts +251 -0
- package/dist/src/init/architecture/types.d.ts.map +1 -0
- package/dist/src/init/architecture/types.js +54 -0
- package/dist/src/init/architecture/types.js.map +1 -0
- package/dist/src/init/compliance/ComplianceDetector.d.ts +17 -0
- package/dist/src/init/compliance/ComplianceDetector.d.ts.map +1 -0
- package/dist/src/init/compliance/ComplianceDetector.js +64 -0
- package/dist/src/init/compliance/ComplianceDetector.js.map +1 -0
- package/dist/src/init/compliance/standards-database.d.ts +48 -0
- package/dist/src/init/compliance/standards-database.d.ts.map +1 -0
- package/dist/src/init/compliance/standards-database.js +506 -0
- package/dist/src/init/compliance/standards-database.js.map +1 -0
- package/dist/src/init/compliance/types.d.ts +91 -0
- package/dist/src/init/compliance/types.d.ts.map +1 -0
- package/dist/src/init/compliance/types.js +43 -0
- package/dist/src/init/compliance/types.js.map +1 -0
- package/dist/src/init/repo/GitHubAPIClient.d.ts +51 -0
- package/dist/src/init/repo/GitHubAPIClient.d.ts.map +1 -0
- package/dist/src/init/repo/GitHubAPIClient.js +144 -0
- package/dist/src/init/repo/GitHubAPIClient.js.map +1 -0
- package/dist/src/init/repo/RepositorySelector.d.ts +45 -0
- package/dist/src/init/repo/RepositorySelector.d.ts.map +1 -0
- package/dist/src/init/repo/RepositorySelector.js +106 -0
- package/dist/src/init/repo/RepositorySelector.js.map +1 -0
- package/dist/src/init/repo/types.d.ts +95 -0
- package/dist/src/init/repo/types.d.ts.map +1 -0
- package/dist/src/init/repo/types.js +25 -0
- package/dist/src/init/repo/types.js.map +1 -0
- package/dist/src/init/research/CompetitorAnalyzer.d.ts +79 -0
- package/dist/src/init/research/CompetitorAnalyzer.d.ts.map +1 -0
- package/dist/src/init/research/CompetitorAnalyzer.js +265 -0
- package/dist/src/init/research/CompetitorAnalyzer.js.map +1 -0
- package/dist/src/init/research/MarketDetector.d.ts +62 -0
- package/dist/src/init/research/MarketDetector.d.ts.map +1 -0
- package/dist/src/init/research/MarketDetector.js +247 -0
- package/dist/src/init/research/MarketDetector.js.map +1 -0
- package/dist/src/init/research/OpportunityScorer.d.ts +58 -0
- package/dist/src/init/research/OpportunityScorer.d.ts.map +1 -0
- package/dist/src/init/research/OpportunityScorer.js +194 -0
- package/dist/src/init/research/OpportunityScorer.js.map +1 -0
- package/dist/src/init/research/QuestionGenerator.d.ts +68 -0
- package/dist/src/init/research/QuestionGenerator.d.ts.map +1 -0
- package/dist/src/init/research/QuestionGenerator.js +244 -0
- package/dist/src/init/research/QuestionGenerator.js.map +1 -0
- package/dist/src/init/research/ReportGenerator.d.ts +36 -0
- package/dist/src/init/research/ReportGenerator.d.ts.map +1 -0
- package/dist/src/init/research/ReportGenerator.js +125 -0
- package/dist/src/init/research/ReportGenerator.js.map +1 -0
- package/dist/src/init/research/VisionAnalyzer.d.ts +129 -0
- package/dist/src/init/research/VisionAnalyzer.d.ts.map +1 -0
- package/dist/src/init/research/VisionAnalyzer.js +212 -0
- package/dist/src/init/research/VisionAnalyzer.js.map +1 -0
- package/dist/src/init/research/keyword-extractor.d.ts +78 -0
- package/dist/src/init/research/keyword-extractor.d.ts.map +1 -0
- package/dist/src/init/research/keyword-extractor.js +230 -0
- package/dist/src/init/research/keyword-extractor.js.map +1 -0
- package/dist/src/init/research/src/config/ConfigManager.d.ts +14 -0
- package/dist/src/init/research/src/config/ConfigManager.d.ts.map +1 -0
- package/dist/src/init/research/src/config/ConfigManager.js +45 -0
- package/dist/src/init/research/src/config/ConfigManager.js.map +1 -0
- package/dist/src/init/research/src/config/types.d.ts +102 -0
- package/dist/src/init/research/src/config/types.d.ts.map +1 -0
- package/dist/src/init/research/src/config/types.js +24 -0
- package/dist/src/init/research/src/config/types.js.map +1 -0
- package/dist/src/init/research/types.d.ts +183 -0
- package/dist/src/init/research/types.d.ts.map +1 -0
- package/dist/src/init/research/types.js +65 -0
- package/dist/src/init/research/types.js.map +1 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.d.ts +136 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.d.ts.map +1 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.js +360 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.js.map +1 -0
- package/dist/src/init/team/TeamRecommender.d.ts +122 -0
- package/dist/src/init/team/TeamRecommender.d.ts.map +1 -0
- package/dist/src/init/team/TeamRecommender.js +405 -0
- package/dist/src/init/team/TeamRecommender.js.map +1 -0
- package/dist/src/init/team/types.d.ts +95 -0
- package/dist/src/init/team/types.d.ts.map +1 -0
- package/dist/src/init/team/types.js +23 -0
- package/dist/src/init/team/types.js.map +1 -0
- package/dist/src/integrations/jira/jira-mapper.d.ts +1 -1
- package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
- package/dist/src/types/cost-tracking.d.ts +1 -1
- package/dist/src/types/cost-tracking.d.ts.map +1 -1
- package/dist/src/utils/cost-reporter.d.ts +2 -2
- package/dist/src/utils/cost-reporter.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/config-generator.d.ts +1 -1
- package/dist/src/utils/docs-preview/config-generator.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/config-generator.js +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.js +4 -4
- package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -1
- package/dist/src/utils/docs-preview/index.d.ts +6 -6
- package/dist/src/utils/docs-preview/index.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/index.js +6 -6
- package/dist/src/utils/docs-preview/index.js.map +1 -1
- package/dist/src/utils/docs-preview/package-installer.d.ts +1 -1
- package/dist/src/utils/docs-preview/package-installer.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/package-installer.js +1 -1
- package/dist/src/utils/docs-preview/package-installer.js.map +1 -1
- package/dist/src/utils/docs-preview/server-manager.d.ts +1 -1
- package/dist/src/utils/docs-preview/server-manager.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/server-manager.js +1 -1
- package/dist/src/utils/docs-preview/server-manager.js.map +1 -1
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts +1 -1
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts.map +1 -1
- package/dist/src/utils/generate-skills-index.d.ts +1 -1
- package/dist/src/utils/generate-skills-index.js +1 -1
- package/dist/src/utils/project-detection.js +1 -1
- package/dist/src/utils/project-detection.js.map +1 -1
- package/package.json +9 -3
- package/plugins/specweave/agents/architect/AGENT.md +605 -0
- package/plugins/specweave/agents/infrastructure/AGENT.md +760 -0
- package/plugins/specweave/agents/pm/AGENT.md +14 -13
- package/plugins/specweave/commands/specweave-check-hooks.md +186 -0
- package/plugins/specweave/commands/specweave-plan.md +151 -0
- package/plugins/specweave/commands/specweave-sync-acs.md +342 -0
- package/plugins/specweave/commands/specweave-validate.md +60 -11
- package/plugins/specweave/hooks/lib/update-status-line.sh +8 -4
- package/plugins/specweave/hooks/post-increment-change.sh +4 -0
- package/plugins/specweave/hooks/post-increment-completion.sh +7 -1
- package/plugins/specweave/hooks/post-increment-planning.sh +4 -0
- package/plugins/specweave/hooks/post-increment-status-change.sh +4 -0
- package/plugins/specweave/hooks/user-prompt-submit.sh +78 -0
- package/plugins/specweave/iac-templates/aws-lambda/README.md.hbs +280 -0
- package/plugins/specweave/iac-templates/aws-lambda/defaults.json +118 -0
- package/plugins/specweave/iac-templates/aws-lambda/environments/dev.defaults.json +46 -0
- package/plugins/specweave/iac-templates/aws-lambda/environments/prod.defaults.json +67 -0
- package/plugins/specweave/iac-templates/aws-lambda/environments/staging.defaults.json +47 -0
- package/plugins/specweave/iac-templates/aws-lambda/main.tf.hbs +241 -0
- package/plugins/specweave/iac-templates/aws-lambda/outputs.tf.hbs +61 -0
- package/plugins/specweave/iac-templates/aws-lambda/provider.tf.hbs +15 -0
- package/plugins/specweave/iac-templates/aws-lambda/variables.tf.hbs +88 -0
- package/plugins/specweave/iac-templates/azure-functions/README.md.hbs +315 -0
- package/plugins/specweave/iac-templates/azure-functions/defaults.json +65 -0
- package/plugins/specweave/iac-templates/azure-functions/environments/dev.defaults.json +30 -0
- package/plugins/specweave/iac-templates/azure-functions/environments/prod.defaults.json +34 -0
- package/plugins/specweave/iac-templates/azure-functions/environments/staging.defaults.json +31 -0
- package/plugins/specweave/iac-templates/azure-functions/iam.tf.hbs +34 -0
- package/plugins/specweave/iac-templates/azure-functions/main.tf.hbs +247 -0
- package/plugins/specweave/iac-templates/azure-functions/outputs.tf.hbs +72 -0
- package/plugins/specweave/iac-templates/azure-functions/provider.tf.hbs +14 -0
- package/plugins/specweave/iac-templates/azure-functions/variables.tf.hbs +64 -0
- package/plugins/specweave/iac-templates/firebase/README.md.hbs +487 -0
- package/plugins/specweave/iac-templates/firebase/defaults.json +55 -0
- package/plugins/specweave/iac-templates/firebase/environments/dev.defaults.json +44 -0
- package/plugins/specweave/iac-templates/firebase/environments/prod.defaults.json +52 -0
- package/plugins/specweave/iac-templates/firebase/environments/staging.defaults.json +43 -0
- package/plugins/specweave/iac-templates/firebase/iam.tf.hbs +75 -0
- package/plugins/specweave/iac-templates/firebase/main.tf.hbs +297 -0
- package/plugins/specweave/iac-templates/firebase/outputs.tf.hbs +67 -0
- package/plugins/specweave/iac-templates/firebase/provider.tf.hbs +26 -0
- package/plugins/specweave/iac-templates/firebase/variables.tf.hbs +68 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/README.md.hbs +330 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/defaults.json +69 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/dev.defaults.json +33 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/prod.defaults.json +40 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/staging.defaults.json +33 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/iam.tf.hbs +54 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/main.tf.hbs +211 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/outputs.tf.hbs +44 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/provider.tf.hbs +14 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/variables.tf.hbs +82 -0
- package/plugins/specweave/iac-templates/supabase/README.md.hbs +534 -0
- package/plugins/specweave/iac-templates/supabase/defaults.json +69 -0
- package/plugins/specweave/iac-templates/supabase/environments/dev.defaults.json +55 -0
- package/plugins/specweave/iac-templates/supabase/environments/prod.defaults.json +75 -0
- package/plugins/specweave/iac-templates/supabase/environments/staging.defaults.json +54 -0
- package/plugins/specweave/iac-templates/supabase/iam.tf.hbs +146 -0
- package/plugins/specweave/iac-templates/supabase/main.tf.hbs +310 -0
- package/plugins/specweave/iac-templates/supabase/outputs.tf.hbs +74 -0
- package/plugins/specweave/iac-templates/supabase/provider.tf.hbs +19 -0
- package/plugins/specweave/iac-templates/supabase/variables.tf.hbs +78 -0
- package/plugins/specweave/knowledge-base/serverless/FRESHNESS.md +69 -0
- package/plugins/specweave/knowledge-base/serverless/learning-paths.json +865 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/aws-lambda.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/azure-functions.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/firebase.json +46 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/gcp-cloud-functions.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/supabase.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/schema.json +155 -0
- package/plugins/specweave/lib/hooks/auto-transition.js +50 -0
- package/plugins/specweave/lib/hooks/auto-transition.ts +84 -0
- package/plugins/specweave/lib/hooks/invoke-translator-skill.js +1 -1
- package/plugins/specweave/lib/hooks/invoke-translator-skill.ts +1 -1
- package/plugins/specweave/lib/hooks/sync-living-docs.js +4 -31
- package/plugins/specweave/lib/hooks/{sync-living-docs.ts → sync-living-docs.ts.DISABLED} +9 -48
- package/plugins/specweave/lib/hooks/translate-file.js +1 -1
- package/plugins/specweave/lib/hooks/translate-file.ts +1 -1
- package/plugins/specweave/lib/hooks/update-ac-status.js +24 -75
- package/plugins/specweave/lib/hooks/update-ac-status.ts +46 -135
- package/plugins/specweave/lib/hooks/update-tasks-md.js +115 -3
- package/plugins/specweave/lib/hooks/update-tasks-md.ts +182 -10
- package/plugins/specweave/lib/utils/validate-dev-setup.sh +133 -0
- package/plugins/specweave/skills/increment-planner/SKILL.md +25 -15
- package/plugins/specweave/skills/serverless-recommender/SKILL.md +368 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/iam.tf.hbs +137 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/main.tf.hbs +216 -0
- package/plugins/specweave-github/lib/IssueStateManager.js +117 -0
- package/plugins/specweave-github/lib/IssueStateManager.ts +231 -0
- package/plugins/specweave-github/lib/user-story-issue-builder.js +7 -0
- package/plugins/specweave-github/lib/user-story-issue-builder.ts +11 -0
- package/plugins/specweave-ui/.mcp.json +0 -10
- package/plugins/specweave-ui/README.md +26 -26
- package/plugins/specweave-ui/skills/browser-automation/SKILL.md +31 -18
- package/src/templates/tasks.md.template +51 -33
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts +0 -89
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js +0 -226
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts +0 -60
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js +0 -201
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts +0 -42
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js +0 -123
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts +0 -45
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js +0 -132
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts +0 -33
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js +0 -419
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts +0 -56
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js +0 -239
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts +0 -64
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js +0 -305
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts +0 -43
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js +0 -203
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts +0 -32
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +0 -405
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts +0 -59
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-file.js +0 -350
- package/dist/plugins/specweave/lib/hooks/translate-file.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts +0 -13
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js +0 -175
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts +0 -164
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js +0 -73
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +0 -21
- package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-ac-status.js +0 -162
- package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts +0 -29
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js +0 -203
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js.map +0 -1
- package/dist/src/core/living-docs/spec-distributor.d.ts +0 -180
- package/dist/src/core/living-docs/spec-distributor.d.ts.map +0 -1
- package/dist/src/core/living-docs/spec-distributor.js +0 -1840
- package/dist/src/core/living-docs/spec-distributor.js.map +0 -1
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: serverless-recommender
|
|
3
|
+
description: Intelligent serverless platform recommendation expert. Detects project context (pet-project, startup, enterprise), analyzes workload suitability, ranks platforms (AWS Lambda, Azure Functions, GCP Cloud Functions, Firebase, Supabase), and provides comprehensive recommendations with cost estimates. Activates for serverless recommendations, platform selection, AWS vs Azure vs GCP, Firebase vs Supabase, serverless architecture, should I use serverless, which serverless platform, serverless cost, serverless free tier, Lambda vs Functions, cloud functions comparison.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Serverless Platform Recommender
|
|
7
|
+
|
|
8
|
+
I'm an expert in serverless platform selection with deep knowledge of AWS Lambda, Azure Functions, GCP Cloud Functions, Firebase, and Supabase. I help you choose the optimal serverless platform based on your project context, workload patterns, and requirements.
|
|
9
|
+
|
|
10
|
+
## When to Use This Skill
|
|
11
|
+
|
|
12
|
+
Ask me when you need help with:
|
|
13
|
+
- **Platform Selection**: "Which serverless platform should I use?"
|
|
14
|
+
- **Comparison**: "AWS Lambda vs Azure Functions vs GCP Cloud Functions?"
|
|
15
|
+
- **Workload Suitability**: "Is serverless right for my use case?"
|
|
16
|
+
- **Context-Based Recommendations**: "I'm building a startup MVP - which platform?"
|
|
17
|
+
- **Cost Guidance**: "What's the most cost-effective serverless platform?"
|
|
18
|
+
- **Ecosystem Matching**: "I'm already using Azure - what serverless option?"
|
|
19
|
+
- **Open-Source Preferences**: "I want a serverless platform with low lock-in"
|
|
20
|
+
|
|
21
|
+
## My Expertise
|
|
22
|
+
|
|
23
|
+
### 1. Context Detection
|
|
24
|
+
I automatically classify your project context:
|
|
25
|
+
- **Pet Project**: Personal learning, hobby projects, portfolio demos
|
|
26
|
+
- **Startup**: MVP development, early-stage products, rapid iteration
|
|
27
|
+
- **Enterprise**: Production systems, compliance requirements, large teams
|
|
28
|
+
|
|
29
|
+
I analyze signals from:
|
|
30
|
+
- Team size and budget
|
|
31
|
+
- Traffic patterns and scale
|
|
32
|
+
- Compliance requirements
|
|
33
|
+
- Existing infrastructure
|
|
34
|
+
|
|
35
|
+
### 2. Workload Suitability Analysis
|
|
36
|
+
I determine if serverless is appropriate for your workload:
|
|
37
|
+
|
|
38
|
+
**Great for Serverless**:
|
|
39
|
+
- Event-driven workloads (webhooks, file processing, notifications)
|
|
40
|
+
- API backends (REST, GraphQL, microservices)
|
|
41
|
+
- Batch processing (scheduled jobs, ETL pipelines)
|
|
42
|
+
- Variable traffic (spiky, unpredictable loads)
|
|
43
|
+
|
|
44
|
+
**Not Recommended**:
|
|
45
|
+
- Stateful applications (WebSockets, real-time chat)
|
|
46
|
+
- Long-running processes (> 15 minutes execution time)
|
|
47
|
+
- High memory requirements (> 10 GB RAM)
|
|
48
|
+
- Continuous connections (persistent WebSocket servers)
|
|
49
|
+
|
|
50
|
+
### 3. Platform Knowledge Base
|
|
51
|
+
I have comprehensive, up-to-date knowledge of 5 major serverless platforms:
|
|
52
|
+
|
|
53
|
+
**AWS Lambda**
|
|
54
|
+
- **Free Tier**: 1M requests/month, 400K GB-seconds
|
|
55
|
+
- **Best For**: Enterprise, AWS ecosystem, mature platform
|
|
56
|
+
- **Strengths**: Largest ecosystem, extensive integrations, proven scalability
|
|
57
|
+
- **Weaknesses**: Higher complexity, AWS-specific knowledge required
|
|
58
|
+
|
|
59
|
+
**Azure Functions**
|
|
60
|
+
- **Free Tier**: 1M requests/month, 400K GB-seconds
|
|
61
|
+
- **Best For**: Enterprise, Microsoft/.NET stack, Azure ecosystem
|
|
62
|
+
- **Strengths**: Excellent .NET support, strong enterprise features, Durable Functions
|
|
63
|
+
- **Weaknesses**: Smaller community than AWS, some Azure-specific bindings
|
|
64
|
+
|
|
65
|
+
**GCP Cloud Functions**
|
|
66
|
+
- **Free Tier**: 2M requests/month, 400K GB-seconds (most generous)
|
|
67
|
+
- **Best For**: Enterprise, Google ecosystem, data processing
|
|
68
|
+
- **Strengths**: Best free tier, excellent BigQuery/Firestore integration
|
|
69
|
+
- **Weaknesses**: Smaller ecosystem than AWS, fewer third-party integrations
|
|
70
|
+
|
|
71
|
+
**Firebase**
|
|
72
|
+
- **Free Tier**: 125K requests/month, 40K GB-seconds
|
|
73
|
+
- **Best For**: Mobile apps, rapid prototyping, learning projects
|
|
74
|
+
- **Strengths**: Beginner-friendly, excellent mobile SDKs, real-time database
|
|
75
|
+
- **Weaknesses**: Low portability, significant vendor lock-in, smaller free tier
|
|
76
|
+
|
|
77
|
+
**Supabase**
|
|
78
|
+
- **Free Tier**: 500K requests/month, open-source friendly
|
|
79
|
+
- **Best For**: PostgreSQL projects, open-source preference, low lock-in
|
|
80
|
+
- **Strengths**: High portability, PostgreSQL-native, low migration complexity
|
|
81
|
+
- **Weaknesses**: Smaller ecosystem, newer platform, smaller community
|
|
82
|
+
|
|
83
|
+
### 4. Intelligent Ranking
|
|
84
|
+
I score and rank platforms based on multiple criteria:
|
|
85
|
+
- **Context Match**: Pet project, startup, or enterprise fit
|
|
86
|
+
- **Ecosystem Alignment**: Existing cloud provider usage
|
|
87
|
+
- **Runtime Support**: Language/runtime requirements
|
|
88
|
+
- **Cost Optimization**: Free tier generosity, pricing structure
|
|
89
|
+
- **Learning Resources**: Documentation quality, community size
|
|
90
|
+
- **Portability**: Vendor lock-in vs ease of migration
|
|
91
|
+
|
|
92
|
+
### 5. Data Freshness & Accuracy
|
|
93
|
+
I maintain data freshness indicators for all platform recommendations:
|
|
94
|
+
|
|
95
|
+
**Freshness Tracking**:
|
|
96
|
+
- **Last Verified Date**: Each platform shows when its data was last verified
|
|
97
|
+
- **Freshness Warning**: If data is older than 30 days, I warn you to verify current pricing
|
|
98
|
+
- **Source**: Data comes from `platform-data-loader.ts` which tracks `lastVerified` timestamps
|
|
99
|
+
- **User Responsibility**: Always verify critical pricing/features before production decisions
|
|
100
|
+
|
|
101
|
+
**What This Means**:
|
|
102
|
+
- 🟢 **Data ≤ 30 days old**: Current and reliable ✅
|
|
103
|
+
- 🟡 **Data 31-60 days old**: Likely current, but recommend verification
|
|
104
|
+
- 🔴 **Data > 60 days old**: Outdated, verify before relying on recommendations
|
|
105
|
+
|
|
106
|
+
All recommendations include:
|
|
107
|
+
```
|
|
108
|
+
Last verified: YYYY-MM-DD ✅ Current
|
|
109
|
+
(or with warning if stale)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 6. Startup Credits & Free Tiers
|
|
113
|
+
I know about startup programs:
|
|
114
|
+
- **AWS Activate**: $1,000 - $100,000 credits
|
|
115
|
+
- **Microsoft for Startups**: $1,000 - $150,000 credits
|
|
116
|
+
- **GCP for Startups**: $100,000 - $200,000 credits
|
|
117
|
+
|
|
118
|
+
## How I Work
|
|
119
|
+
|
|
120
|
+
### Workflow 1: Quick Recommendation
|
|
121
|
+
```
|
|
122
|
+
User: "I need a serverless platform for my REST API"
|
|
123
|
+
Me: → Detect context from description
|
|
124
|
+
→ Analyze suitability (API-driven = good for serverless)
|
|
125
|
+
→ Rank platforms based on criteria
|
|
126
|
+
→ Provide top recommendation with rationale
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Workflow 2: Guided Discovery
|
|
130
|
+
```
|
|
131
|
+
User: "Should I use serverless?"
|
|
132
|
+
Me: → Ask clarifying questions about:
|
|
133
|
+
- What are you building? (workload type)
|
|
134
|
+
- Team size and budget? (context detection)
|
|
135
|
+
- Expected traffic? (scale requirements)
|
|
136
|
+
- Existing infrastructure? (ecosystem alignment)
|
|
137
|
+
→ Analyze suitability
|
|
138
|
+
→ Provide yes/conditional/no recommendation with reasoning
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Workflow 3: Platform Comparison
|
|
142
|
+
```
|
|
143
|
+
User: "AWS Lambda vs Azure Functions for my startup?"
|
|
144
|
+
Me: → Detect context (startup)
|
|
145
|
+
→ Load platform data
|
|
146
|
+
→ Score both platforms for startup context
|
|
147
|
+
→ Compare:
|
|
148
|
+
- Free tier and startup credits
|
|
149
|
+
- Ecosystem and integrations
|
|
150
|
+
- Cold start performance
|
|
151
|
+
- Portability and lock-in
|
|
152
|
+
→ Recommend winner with tradeoffs
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Example Interactions
|
|
156
|
+
|
|
157
|
+
### Example 1: Pet Project
|
|
158
|
+
```
|
|
159
|
+
User: "I'm learning serverless and want to build a simple API"
|
|
160
|
+
|
|
161
|
+
Me: Based on your learning project context, I recommend:
|
|
162
|
+
|
|
163
|
+
🥇 **Firebase** (Score: 85/100)
|
|
164
|
+
- **Why**: Beginner-friendly, excellent documentation, fast setup
|
|
165
|
+
- **Free Tier**: 125K requests/month (enough for learning)
|
|
166
|
+
- **Pros**: Easy to get started, mobile SDK, real-time features
|
|
167
|
+
- **Cons**: Some vendor lock-in, smaller free tier than AWS/GCP
|
|
168
|
+
- **Cost**: Free for small projects
|
|
169
|
+
- **Last verified**: 2025-11-16 ✅ Current
|
|
170
|
+
|
|
171
|
+
🥈 **Supabase** (Score: 75/100)
|
|
172
|
+
- **Why**: Open-source friendly, PostgreSQL-native, high portability
|
|
173
|
+
- **Free Tier**: 500K requests/month
|
|
174
|
+
- **Pros**: Low lock-in, great docs, modern DX
|
|
175
|
+
- **Cons**: Newer platform, smaller ecosystem
|
|
176
|
+
- **Last verified**: 2025-11-15 ✅ Current
|
|
177
|
+
|
|
178
|
+
Your workload (simple API) is well-suited for serverless ✅
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Example 2: Startup with AWS Ecosystem
|
|
182
|
+
```
|
|
183
|
+
User: "We're a startup already on AWS. Which serverless platform?"
|
|
184
|
+
|
|
185
|
+
Me: Based on your startup context + AWS ecosystem:
|
|
186
|
+
|
|
187
|
+
🥇 **AWS Lambda** (Score: 95/100)
|
|
188
|
+
- **Why**: You're already on AWS - stay in the ecosystem
|
|
189
|
+
- **Startup Credits**: AWS Activate ($1K-$100K available)
|
|
190
|
+
- **Free Tier**: 1M requests/month, 400K GB-seconds
|
|
191
|
+
- **Integrations**: Direct access to 200+ AWS services (S3, DynamoDB, SQS, etc.)
|
|
192
|
+
- **Pros**: Largest ecosystem, mature platform, extensive integrations
|
|
193
|
+
- **Cons**: Higher complexity, learning curve
|
|
194
|
+
- **Cost**: Very cost-effective with free tier + startup credits
|
|
195
|
+
- **Last verified**: 2025-11-16 ✅ Current
|
|
196
|
+
|
|
197
|
+
Staying within AWS ecosystem avoids multi-cloud complexity and leverages your existing infrastructure.
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Example 3: Enterprise with Compliance
|
|
201
|
+
```
|
|
202
|
+
User: "Enterprise app with HIPAA requirements - serverless?"
|
|
203
|
+
|
|
204
|
+
Me: Analysis for enterprise + compliance:
|
|
205
|
+
|
|
206
|
+
**Serverless Suitability**: ✅ Yes, with conditions
|
|
207
|
+
- Serverless platforms support HIPAA compliance (AWS, Azure, GCP)
|
|
208
|
+
- Requires Business Associate Agreement (BAA)
|
|
209
|
+
- Must enable encryption at rest and in transit
|
|
210
|
+
|
|
211
|
+
🥇 **AWS Lambda** (Score: 90/100)
|
|
212
|
+
- **Why**: Most mature HIPAA-compliant serverless platform
|
|
213
|
+
- **Compliance**: HIPAA, SOC 2, ISO 27001, FedRAMP
|
|
214
|
+
- **Features**: VPC support, encryption, detailed audit logs
|
|
215
|
+
- **Pros**: Proven enterprise track record, comprehensive compliance
|
|
216
|
+
- **Cons**: Higher cost at enterprise scale
|
|
217
|
+
- **Last verified**: 2025-11-16 ✅ Current
|
|
218
|
+
|
|
219
|
+
🥈 **Azure Functions** (Score: 85/100)
|
|
220
|
+
- **Why**: Strong compliance, good for Microsoft shops
|
|
221
|
+
- **Compliance**: HIPAA, SOC 2, ISO 27001
|
|
222
|
+
- **Pros**: Excellent for .NET enterprises, Azure ecosystem integration
|
|
223
|
+
- **Last verified**: 2025-11-12 ✅ Current
|
|
224
|
+
|
|
225
|
+
**Important**: You'll need:
|
|
226
|
+
- BAA with cloud provider
|
|
227
|
+
- Encrypted storage (AWS KMS, Azure Key Vault)
|
|
228
|
+
- VPC/private endpoints
|
|
229
|
+
- Audit logging enabled
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Example 4: Data Freshness Warning
|
|
233
|
+
```
|
|
234
|
+
User: "Which serverless platform for my GraphQL API?"
|
|
235
|
+
|
|
236
|
+
Me: Based on your API workload context, I recommend:
|
|
237
|
+
|
|
238
|
+
🥇 **AWS Lambda** (Score: 95/100)
|
|
239
|
+
- Free Tier: 1M requests/month, 400K GB-seconds
|
|
240
|
+
- Startup Credits: AWS Activate ($5,000, 2 years)
|
|
241
|
+
- Last verified: 2025-11-16 ✅ Current
|
|
242
|
+
|
|
243
|
+
🥈 **GCP Cloud Functions** (Score: 88/100)
|
|
244
|
+
- Free Tier: 2M requests/month, 400K GB-seconds
|
|
245
|
+
- Best free tier for heavy testing
|
|
246
|
+
- Last verified: 2025-10-15 ⚠️ WARNING
|
|
247
|
+
|
|
248
|
+
⚠️ FRESHNESS WARNING:
|
|
249
|
+
GCP pricing data last verified 2025-10-15 (32 days old)
|
|
250
|
+
Platform data may be outdated. Please verify current pricing
|
|
251
|
+
and free tier limits before making production decisions.
|
|
252
|
+
|
|
253
|
+
✅ Source: Data freshness tracked by platform-data-loader.ts
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Implementation Details
|
|
257
|
+
|
|
258
|
+
I use the following modules to provide recommendations:
|
|
259
|
+
|
|
260
|
+
### `context-detector.ts`
|
|
261
|
+
- Keyword-based classification (pet-project, startup, enterprise)
|
|
262
|
+
- Metadata analysis (team size, budget, traffic)
|
|
263
|
+
- Confidence scoring (high/medium/low)
|
|
264
|
+
- Clarifying questions for ambiguous cases
|
|
265
|
+
|
|
266
|
+
### `suitability-analyzer.ts`
|
|
267
|
+
- Workload pattern detection (event-driven, API, batch, stateful, long-running)
|
|
268
|
+
- Anti-pattern identification
|
|
269
|
+
- Recommendation generation (yes/conditional/no)
|
|
270
|
+
- Rationale with cost, scalability, complexity analysis
|
|
271
|
+
|
|
272
|
+
### `platform-selector.ts`
|
|
273
|
+
- Multi-criteria scoring algorithm
|
|
274
|
+
- Context-specific ranking
|
|
275
|
+
- Ecosystem preference weighting
|
|
276
|
+
- Tradeoff generation (pros/cons)
|
|
277
|
+
|
|
278
|
+
### `platform-data-loader.ts`
|
|
279
|
+
- JSON-based knowledge base with 5 major serverless platforms
|
|
280
|
+
- Each platform includes `lastVerified` timestamp (ISO 8601 format)
|
|
281
|
+
- **Automatic data freshness checking**:
|
|
282
|
+
- Calculates days since last verification
|
|
283
|
+
- Flags data older than 30 days for warning
|
|
284
|
+
- Marks data older than 60 days as outdated
|
|
285
|
+
- Provides freshness metadata with all recommendations:
|
|
286
|
+
- ✅ Current: Data ≤ 30 days old
|
|
287
|
+
- ⚠️ Warning: Data 31-60 days old (verify recommended)
|
|
288
|
+
- 🔴 Outdated: Data > 60 days old (update required)
|
|
289
|
+
- Query interface for filtering by platform, context, or freshness
|
|
290
|
+
- Timestamp validation to ensure data integrity
|
|
291
|
+
|
|
292
|
+
### `recommendation-formatter.ts`
|
|
293
|
+
- Formats platform recommendations with freshness indicators
|
|
294
|
+
- Automatically displays "Last verified: YYYY-MM-DD" for each platform
|
|
295
|
+
- Shows ⚠️ warning if data is > 30 days old (stale)
|
|
296
|
+
- Includes user-friendly message to verify current pricing
|
|
297
|
+
- Data freshness: ✅ Fresh (≤30 days) or ⚠️ Stale (>30 days)
|
|
298
|
+
|
|
299
|
+
## Recommendation Format
|
|
300
|
+
|
|
301
|
+
All platform recommendations include data freshness indicators:
|
|
302
|
+
|
|
303
|
+
```markdown
|
|
304
|
+
## Platform Name (Provider)
|
|
305
|
+
|
|
306
|
+
**Free Tier**:
|
|
307
|
+
- 1M requests/month
|
|
308
|
+
- 400K GB-seconds/month
|
|
309
|
+
|
|
310
|
+
**Features**:
|
|
311
|
+
- Runtimes: Node.js, Python, etc.
|
|
312
|
+
- Cold Start: ~200ms
|
|
313
|
+
- Max Execution: 15 minutes
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
📅 **Last verified**: 2025-11-16 ✅ (5 days ago)
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
If data is stale (>30 days old):
|
|
321
|
+
|
|
322
|
+
```markdown
|
|
323
|
+
📅 **Last verified**: 2025-01-15 ⚠️
|
|
324
|
+
|
|
325
|
+
> **⚠️ Stale Data Warning**: This platform data is 306 days old (last verified: 2025-01-15).
|
|
326
|
+
> Pricing and features may have changed. Please verify current pricing and features with
|
|
327
|
+
> the platform provider before making decisions.
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
## Best Practices
|
|
331
|
+
|
|
332
|
+
When recommending platforms, I:
|
|
333
|
+
1. **Prioritize ecosystem alignment** - If you're on AWS, I recommend AWS Lambda
|
|
334
|
+
2. **Consider total cost** - Free tier + startup credits + operational costs
|
|
335
|
+
3. **Warn about anti-patterns** - Stateful apps, long-running processes
|
|
336
|
+
4. **Explain tradeoffs** - No platform is perfect, I show pros/cons
|
|
337
|
+
5. **Account for learning curve** - Firebase for beginners, AWS for experienced teams
|
|
338
|
+
6. **Respect portability preferences** - Open-source users → Supabase
|
|
339
|
+
7. **Track data freshness** - All recommendations include verification timestamps
|
|
340
|
+
8. **Warn about stale data** - I alert you if pricing/features are older than 30 days
|
|
341
|
+
9. **Encourage verification** - For production decisions, always verify current data
|
|
342
|
+
|
|
343
|
+
## Keywords That Activate This Skill
|
|
344
|
+
- Serverless recommendations
|
|
345
|
+
- Platform selection, platform comparison
|
|
346
|
+
- AWS Lambda vs Azure Functions vs GCP Cloud Functions
|
|
347
|
+
- Firebase vs Supabase
|
|
348
|
+
- Serverless architecture, serverless patterns
|
|
349
|
+
- Should I use serverless, is serverless right
|
|
350
|
+
- Which serverless platform, best serverless platform
|
|
351
|
+
- Serverless cost, serverless pricing
|
|
352
|
+
- Serverless free tier
|
|
353
|
+
- Lambda vs Functions vs Cloud Functions
|
|
354
|
+
- Cloud functions comparison
|
|
355
|
+
- Serverless for startups, serverless for enterprise
|
|
356
|
+
- Serverless learning, serverless tutorial
|
|
357
|
+
|
|
358
|
+
## Future Enhancements (Planned)
|
|
359
|
+
|
|
360
|
+
- **Cost Estimation**: Calculate monthly costs based on traffic (T-017)
|
|
361
|
+
- **IaC Generation**: Generate Terraform templates for selected platform (T-009-T-014)
|
|
362
|
+
- **Multi-platform comparison**: Side-by-side comparison tables
|
|
363
|
+
- **Learning paths**: Curated resources for each platform (T-021)
|
|
364
|
+
- **Security best practices**: Platform-specific security guidance (T-022)
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
**Remember**: I base all recommendations on your specific context, workload patterns, and requirements. There's no one-size-fits-all answer - the best platform depends on your situation!
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# IAM Role and Policies for Lambda Function
|
|
2
|
+
# Follows least privilege principle
|
|
3
|
+
|
|
4
|
+
# Lambda Execution Role
|
|
5
|
+
resource "aws_iam_role" "lambda_exec" {
|
|
6
|
+
name = "{{functionName}}-lambda-exec-role"
|
|
7
|
+
|
|
8
|
+
assume_role_policy = jsonencode({
|
|
9
|
+
Version = "2012-10-17"
|
|
10
|
+
Statement = [
|
|
11
|
+
{
|
|
12
|
+
Action = "sts:AssumeRole"
|
|
13
|
+
Effect = "Allow"
|
|
14
|
+
Principal = {
|
|
15
|
+
Service = "lambda.amazonaws.com"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
tags = {
|
|
22
|
+
Name = "{{functionName}}-lambda-exec-role"
|
|
23
|
+
Environment = "{{environment}}"
|
|
24
|
+
ManagedBy = "Terraform"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
# CloudWatch Logs Policy
|
|
29
|
+
resource "aws_iam_role_policy" "lambda_logs" {
|
|
30
|
+
name = "{{functionName}}-logs-policy"
|
|
31
|
+
role = aws_iam_role.lambda_exec.id
|
|
32
|
+
|
|
33
|
+
policy = jsonencode({
|
|
34
|
+
Version = "2012-10-17"
|
|
35
|
+
Statement = [
|
|
36
|
+
{
|
|
37
|
+
Effect = "Allow"
|
|
38
|
+
Action = [
|
|
39
|
+
"logs:CreateLogGroup",
|
|
40
|
+
"logs:CreateLogStream",
|
|
41
|
+
"logs:PutLogEvents"
|
|
42
|
+
]
|
|
43
|
+
Resource = [
|
|
44
|
+
"${aws_cloudwatch_log_group.lambda_logs.arn}:*"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
# DynamoDB Access Policy (Least Privilege)
|
|
52
|
+
resource "aws_iam_role_policy" "lambda_dynamodb" {
|
|
53
|
+
name = "{{functionName}}-dynamodb-policy"
|
|
54
|
+
role = aws_iam_role.lambda_exec.id
|
|
55
|
+
|
|
56
|
+
policy = jsonencode({
|
|
57
|
+
Version = "2012-10-17"
|
|
58
|
+
Statement = [
|
|
59
|
+
{
|
|
60
|
+
Effect = "Allow"
|
|
61
|
+
Action = [
|
|
62
|
+
"dynamodb:GetItem",
|
|
63
|
+
"dynamodb:PutItem",
|
|
64
|
+
"dynamodb:UpdateItem",
|
|
65
|
+
"dynamodb:DeleteItem",
|
|
66
|
+
"dynamodb:Query",
|
|
67
|
+
"dynamodb:Scan"
|
|
68
|
+
]
|
|
69
|
+
Resource = [
|
|
70
|
+
aws_dynamodb_table.{{snakeCase databaseName}}.arn,
|
|
71
|
+
"${aws_dynamodb_table.{{snakeCase databaseName}}.arn}/index/*"
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
})
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
{{#if enableVpc}}
|
|
79
|
+
# VPC Execution Policy (if VPC enabled)
|
|
80
|
+
resource "aws_iam_role_policy_attachment" "lambda_vpc_execution" {
|
|
81
|
+
role = aws_iam_role.lambda_exec.name
|
|
82
|
+
policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
|
|
83
|
+
}
|
|
84
|
+
{{/if}}
|
|
85
|
+
|
|
86
|
+
{{#if enableXray}}
|
|
87
|
+
# X-Ray Tracing Policy (if enabled)
|
|
88
|
+
resource "aws_iam_role_policy_attachment" "lambda_xray" {
|
|
89
|
+
role = aws_iam_role.lambda_exec.name
|
|
90
|
+
policy_arn = "arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess"
|
|
91
|
+
}
|
|
92
|
+
{{/if}}
|
|
93
|
+
|
|
94
|
+
{{#if enableSecretsManager}}
|
|
95
|
+
# Secrets Manager Access (if enabled)
|
|
96
|
+
resource "aws_iam_role_policy" "lambda_secrets" {
|
|
97
|
+
name = "{{functionName}}-secrets-policy"
|
|
98
|
+
role = aws_iam_role.lambda_exec.id
|
|
99
|
+
|
|
100
|
+
policy = jsonencode({
|
|
101
|
+
Version = "2012-10-17"
|
|
102
|
+
Statement = [
|
|
103
|
+
{
|
|
104
|
+
Effect = "Allow"
|
|
105
|
+
Action = [
|
|
106
|
+
"secretsmanager:GetSecretValue"
|
|
107
|
+
]
|
|
108
|
+
Resource = var.secrets_manager_arns
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
})
|
|
112
|
+
}
|
|
113
|
+
{{/if}}
|
|
114
|
+
|
|
115
|
+
{{#if enableKms}}
|
|
116
|
+
# KMS Decryption Policy (if encryption enabled)
|
|
117
|
+
resource "aws_iam_role_policy" "lambda_kms" {
|
|
118
|
+
name = "{{functionName}}-kms-policy"
|
|
119
|
+
role = aws_iam_role.lambda_exec.id
|
|
120
|
+
|
|
121
|
+
policy = jsonencode({
|
|
122
|
+
Version = "2012-10-17"
|
|
123
|
+
Statement = [
|
|
124
|
+
{
|
|
125
|
+
Effect = "Allow"
|
|
126
|
+
Action = [
|
|
127
|
+
"kms:Decrypt",
|
|
128
|
+
"kms:DescribeKey"
|
|
129
|
+
]
|
|
130
|
+
Resource = [
|
|
131
|
+
var.kms_key_arn
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
})
|
|
136
|
+
}
|
|
137
|
+
{{/if}}
|