specweave 0.21.1 → 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/locales/de/.gitkeep +0 -0
- package/dist/locales/de/cli.json +0 -108
- package/dist/locales/en/cli.json +0 -287
- package/dist/locales/en/errors.json +0 -7
- package/dist/locales/en/templates.json +0 -6
- package/dist/locales/es/.gitkeep +0 -0
- package/dist/locales/es/cli.json +0 -41
- package/dist/locales/fr/.gitkeep +0 -0
- package/dist/locales/fr/cli.json +0 -108
- package/dist/locales/ja/.gitkeep +0 -0
- package/dist/locales/ja/cli.json +0 -108
- package/dist/locales/ko/.gitkeep +0 -0
- package/dist/locales/ko/cli.json +0 -108
- package/dist/locales/pt/.gitkeep +0 -0
- package/dist/locales/pt/cli.json +0 -108
- package/dist/locales/ru/.gitkeep +0 -0
- package/dist/locales/ru/cli.json +0 -269
- package/dist/locales/zh/.gitkeep +0 -0
- package/dist/locales/zh/cli.json +0 -108
- 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/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +0 -25
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -191
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +0 -57
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +0 -248
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +0 -82
- package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/types.js +0 -13
- package/dist/plugins/specweave-kafka/lib/cli/types.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +0 -49
- package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/detector.js +0 -316
- package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +0 -70
- package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/types.js +0 -23
- package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +0 -85
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +0 -281
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +0 -75
- package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/sizing.js +0 -238
- package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +0 -1
- package/dist/spec-parser.js +0 -629
- 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
- package/dist/src/core/sync/spec-content-sync.d.ts +0 -88
- package/dist/src/core/sync/spec-content-sync.d.ts.map +0 -1
- package/dist/src/core/sync/spec-content-sync.js +0 -5
- package/dist/src/core/sync/spec-content-sync.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -170
|
@@ -0,0 +1,865 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"lastUpdated": "2025-11-16",
|
|
4
|
+
"maxStaleDays": 60,
|
|
5
|
+
"platforms": {
|
|
6
|
+
"aws-lambda": {
|
|
7
|
+
"name": "AWS Lambda",
|
|
8
|
+
"id": "aws-lambda",
|
|
9
|
+
"lastVerified": "2025-10-20",
|
|
10
|
+
"resources": {
|
|
11
|
+
"tutorials": [
|
|
12
|
+
{
|
|
13
|
+
"id": "aws-lambda-getting-started",
|
|
14
|
+
"title": "Getting Started with AWS Lambda",
|
|
15
|
+
"url": "https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html",
|
|
16
|
+
"type": "tutorial",
|
|
17
|
+
"skillLevel": "beginner",
|
|
18
|
+
"estimatedTime": "30 minutes",
|
|
19
|
+
"provider": "AWS",
|
|
20
|
+
"description": "Official AWS tutorial for creating your first Lambda function",
|
|
21
|
+
"tags": ["basics", "setup", "console"]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "aws-lambda-nodejs-tutorial",
|
|
25
|
+
"title": "Build Node.js Lambda Functions",
|
|
26
|
+
"url": "https://docs.aws.amazon.com/lambda/latest/dg/lambda-nodejs.html",
|
|
27
|
+
"type": "tutorial",
|
|
28
|
+
"skillLevel": "beginner",
|
|
29
|
+
"estimatedTime": "45 minutes",
|
|
30
|
+
"provider": "AWS",
|
|
31
|
+
"description": "Create and deploy Lambda functions using Node.js runtime",
|
|
32
|
+
"tags": ["nodejs", "runtime", "deployment"],
|
|
33
|
+
"prerequisite": "aws-lambda-getting-started"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "aws-lambda-api-gateway",
|
|
37
|
+
"title": "Create REST APIs with Lambda and API Gateway",
|
|
38
|
+
"url": "https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html",
|
|
39
|
+
"type": "tutorial",
|
|
40
|
+
"skillLevel": "intermediate",
|
|
41
|
+
"estimatedTime": "60 minutes",
|
|
42
|
+
"provider": "AWS",
|
|
43
|
+
"description": "Build RESTful APIs using Lambda with API Gateway",
|
|
44
|
+
"tags": ["api", "api-gateway", "integration"]
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "aws-lambda-event-sources",
|
|
48
|
+
"title": "Working with Event Sources",
|
|
49
|
+
"url": "https://docs.aws.amazon.com/lambda/latest/dg/lambda-eventsources.html",
|
|
50
|
+
"type": "tutorial",
|
|
51
|
+
"skillLevel": "intermediate",
|
|
52
|
+
"estimatedTime": "75 minutes",
|
|
53
|
+
"provider": "AWS",
|
|
54
|
+
"description": "Learn how to trigger Lambda from various AWS services",
|
|
55
|
+
"tags": ["events", "s3", "dynamodb", "sqs"]
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "aws-lambda-performance-tuning",
|
|
59
|
+
"title": "Optimize Lambda Performance",
|
|
60
|
+
"url": "https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html",
|
|
61
|
+
"type": "tutorial",
|
|
62
|
+
"skillLevel": "advanced",
|
|
63
|
+
"estimatedTime": "90 minutes",
|
|
64
|
+
"provider": "AWS",
|
|
65
|
+
"description": "Advanced techniques for performance optimization and cost reduction",
|
|
66
|
+
"tags": ["performance", "optimization", "cost"]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "aws-lambda-containerization",
|
|
70
|
+
"title": "Deploy Lambda with Container Images",
|
|
71
|
+
"url": "https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html",
|
|
72
|
+
"type": "tutorial",
|
|
73
|
+
"skillLevel": "advanced",
|
|
74
|
+
"estimatedTime": "120 minutes",
|
|
75
|
+
"provider": "AWS",
|
|
76
|
+
"description": "Package and deploy Lambda functions as Docker containers",
|
|
77
|
+
"tags": ["containers", "docker", "deployment"]
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"documentation": [
|
|
81
|
+
{
|
|
82
|
+
"id": "aws-lambda-developer-guide",
|
|
83
|
+
"title": "AWS Lambda Developer Guide",
|
|
84
|
+
"url": "https://docs.aws.amazon.com/lambda/latest/dg/welcome.html",
|
|
85
|
+
"type": "documentation",
|
|
86
|
+
"skillLevel": "beginner",
|
|
87
|
+
"provider": "AWS",
|
|
88
|
+
"description": "Complete official documentation for AWS Lambda",
|
|
89
|
+
"tags": ["reference", "official"]
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"id": "aws-lambda-api-reference",
|
|
93
|
+
"title": "Lambda API Reference",
|
|
94
|
+
"url": "https://docs.aws.amazon.com/lambda/latest/api/Welcome.html",
|
|
95
|
+
"type": "documentation",
|
|
96
|
+
"skillLevel": "intermediate",
|
|
97
|
+
"provider": "AWS",
|
|
98
|
+
"description": "Complete API reference for Lambda operations",
|
|
99
|
+
"tags": ["api", "reference", "advanced"]
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"videos": [
|
|
103
|
+
{
|
|
104
|
+
"id": "aws-lambda-basics-video",
|
|
105
|
+
"title": "AWS Lambda Basics - FreeCodeCamp",
|
|
106
|
+
"url": "https://www.youtube.com/watch?v=yudHMSPyIYo",
|
|
107
|
+
"type": "video",
|
|
108
|
+
"skillLevel": "beginner",
|
|
109
|
+
"estimatedTime": "45 minutes",
|
|
110
|
+
"provider": "FreeCodeCamp",
|
|
111
|
+
"description": "Comprehensive video introduction to AWS Lambda basics",
|
|
112
|
+
"tags": ["basics", "tutorial"]
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"id": "aws-lambda-advanced-patterns",
|
|
116
|
+
"title": "Advanced Lambda Patterns",
|
|
117
|
+
"url": "https://www.youtube.com/watch?v=x16-5XUnkdg",
|
|
118
|
+
"type": "video",
|
|
119
|
+
"skillLevel": "advanced",
|
|
120
|
+
"estimatedTime": "75 minutes",
|
|
121
|
+
"provider": "AWS Events",
|
|
122
|
+
"description": "Deep dive into advanced Lambda design patterns",
|
|
123
|
+
"tags": ["patterns", "architecture"]
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
"courses": [
|
|
127
|
+
{
|
|
128
|
+
"id": "aws-lambda-complete-course",
|
|
129
|
+
"title": "Complete AWS Lambda Course",
|
|
130
|
+
"url": "https://www.udemy.com/course/aws-lambda-serverless/",
|
|
131
|
+
"type": "course",
|
|
132
|
+
"skillLevel": "beginner",
|
|
133
|
+
"estimatedTime": "600 minutes",
|
|
134
|
+
"provider": "Udemy",
|
|
135
|
+
"description": "Complete hands-on course for AWS Lambda from basics to deployment",
|
|
136
|
+
"tags": ["course", "comprehensive"]
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"id": "aws-lambda-production-course",
|
|
140
|
+
"title": "Lambda in Production",
|
|
141
|
+
"url": "https://www.pluralsight.com/courses/aws-lambda",
|
|
142
|
+
"type": "course",
|
|
143
|
+
"skillLevel": "advanced",
|
|
144
|
+
"estimatedTime": "480 minutes",
|
|
145
|
+
"provider": "Pluralsight",
|
|
146
|
+
"description": "Production-ready Lambda patterns and best practices",
|
|
147
|
+
"tags": ["production", "advanced"]
|
|
148
|
+
}
|
|
149
|
+
],
|
|
150
|
+
"sampleProjects": [
|
|
151
|
+
{
|
|
152
|
+
"id": "aws-lambda-hello-world",
|
|
153
|
+
"title": "Hello World Lambda Function",
|
|
154
|
+
"url": "https://github.com/aws/aws-lambda-nodejs-runtime",
|
|
155
|
+
"type": "sample-project",
|
|
156
|
+
"skillLevel": "beginner",
|
|
157
|
+
"complexity": "basic",
|
|
158
|
+
"estimatedDuration": "15 minutes",
|
|
159
|
+
"estimatedTime": "15 minutes",
|
|
160
|
+
"provider": "AWS",
|
|
161
|
+
"description": "Simple Hello World function to get started",
|
|
162
|
+
"technologies": ["Node.js", "AWS Lambda"],
|
|
163
|
+
"tags": ["beginner", "simple"]
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"id": "aws-lambda-rest-api",
|
|
167
|
+
"title": "REST API with Lambda and DynamoDB",
|
|
168
|
+
"url": "https://github.com/aws-samples/aws-serverless-rest-api-with-dynamodb",
|
|
169
|
+
"type": "sample-project",
|
|
170
|
+
"skillLevel": "intermediate",
|
|
171
|
+
"complexity": "intermediate",
|
|
172
|
+
"estimatedDuration": "2-3 hours",
|
|
173
|
+
"estimatedTime": "150 minutes",
|
|
174
|
+
"provider": "AWS",
|
|
175
|
+
"description": "Build a complete REST API with database operations",
|
|
176
|
+
"technologies": ["Node.js", "Lambda", "DynamoDB", "API Gateway"],
|
|
177
|
+
"sourceRepo": "https://github.com/aws-samples"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"id": "aws-lambda-microservices",
|
|
181
|
+
"title": "Microservices Architecture with Lambda",
|
|
182
|
+
"url": "https://github.com/aws-samples/aws-serverless-workshops",
|
|
183
|
+
"type": "sample-project",
|
|
184
|
+
"skillLevel": "advanced",
|
|
185
|
+
"complexity": "advanced",
|
|
186
|
+
"estimatedDuration": "6-8 hours",
|
|
187
|
+
"estimatedTime": "480 minutes",
|
|
188
|
+
"provider": "AWS",
|
|
189
|
+
"description": "Complete microservices system with multiple Lambda functions",
|
|
190
|
+
"technologies": ["Node.js", "Lambda", "API Gateway", "SQS", "SNS", "DynamoDB"],
|
|
191
|
+
"sourceRepo": "https://github.com/aws-samples"
|
|
192
|
+
}
|
|
193
|
+
]
|
|
194
|
+
},
|
|
195
|
+
"bestPractices": [
|
|
196
|
+
{
|
|
197
|
+
"id": "lambda-cold-start-optimization",
|
|
198
|
+
"category": "performance",
|
|
199
|
+
"title": "Minimize Cold Start Times",
|
|
200
|
+
"description": "Use provisioned concurrency, optimize package size, and choose appropriate memory allocation to reduce cold start latency",
|
|
201
|
+
"priority": "high",
|
|
202
|
+
"example": "Set memory to 1769 MB or higher for better performance, use Lambda Layers for dependencies"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"id": "lambda-error-handling",
|
|
206
|
+
"category": "architecture",
|
|
207
|
+
"title": "Implement Robust Error Handling",
|
|
208
|
+
"description": "Use try-catch blocks, implement dead-letter queues, and add retry logic with exponential backoff",
|
|
209
|
+
"priority": "high",
|
|
210
|
+
"example": "Configure SQS DLQ for failed async invocations and implement custom retry logic"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"id": "lambda-security-iam",
|
|
214
|
+
"category": "security",
|
|
215
|
+
"title": "Use IAM Roles and Least Privilege",
|
|
216
|
+
"description": "Create specific IAM roles with minimal required permissions for each Lambda function",
|
|
217
|
+
"priority": "high",
|
|
218
|
+
"example": "Grant only specific DynamoDB table access instead of all DynamoDB operations"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"id": "lambda-cost-optimization",
|
|
222
|
+
"category": "cost",
|
|
223
|
+
"title": "Optimize for Cost",
|
|
224
|
+
"description": "Right-size memory, use reserved concurrency for predictable workloads, monitor execution time",
|
|
225
|
+
"priority": "medium",
|
|
226
|
+
"example": "Analyze CloudWatch metrics to find optimal memory configuration for your function"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"id": "lambda-monitoring",
|
|
230
|
+
"category": "monitoring",
|
|
231
|
+
"title": "Comprehensive Logging and Monitoring",
|
|
232
|
+
"description": "Use CloudWatch Logs, X-Ray for tracing, and set up alarms for errors and performance issues",
|
|
233
|
+
"priority": "high",
|
|
234
|
+
"example": "Enable X-Ray tracing to identify bottlenecks in service calls"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"id": "lambda-testing",
|
|
238
|
+
"category": "testing",
|
|
239
|
+
"title": "Test Locally and in Production",
|
|
240
|
+
"description": "Use SAM CLI for local testing, implement integration tests, and use canary deployments",
|
|
241
|
+
"priority": "medium",
|
|
242
|
+
"example": "Use SAM local start-api to test Lambda locally before deployment"
|
|
243
|
+
}
|
|
244
|
+
],
|
|
245
|
+
"commonPitfalls": [
|
|
246
|
+
{
|
|
247
|
+
"id": "lambda-timeout-pitfall",
|
|
248
|
+
"title": "Functions Timing Out",
|
|
249
|
+
"description": "Lambda functions exceed the timeout limit due to slow operations or blocking calls",
|
|
250
|
+
"mitigation": "Profile your code, use async operations, increase timeout setting if needed (max 15 minutes), consider breaking into smaller functions",
|
|
251
|
+
"severity": "high",
|
|
252
|
+
"affectedSkillLevels": ["beginner", "intermediate"]
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"id": "lambda-cold-start-pitfall",
|
|
256
|
+
"title": "Unexplained Latency Spikes",
|
|
257
|
+
"description": "Cold starts cause sudden increases in response time when Lambda scales up",
|
|
258
|
+
"mitigation": "Use provisioned concurrency, keep package size small, optimize initialization code, use Lambda Layers",
|
|
259
|
+
"severity": "medium",
|
|
260
|
+
"affectedSkillLevels": ["intermediate", "advanced"]
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"id": "lambda-memory-pitfall",
|
|
264
|
+
"title": "Out of Memory Errors",
|
|
265
|
+
"description": "Lambda functions consume too much memory due to inefficient code or large data structures",
|
|
266
|
+
"mitigation": "Monitor memory usage in CloudWatch, optimize data structures, stream large files instead of loading into memory",
|
|
267
|
+
"severity": "high",
|
|
268
|
+
"affectedSkillLevels": ["intermediate"]
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"id": "lambda-concurrency-pitfall",
|
|
272
|
+
"title": "Throttling Due to Concurrency Limits",
|
|
273
|
+
"description": "Requests are throttled when concurrent executions exceed the account limit",
|
|
274
|
+
"mitigation": "Request concurrency limit increase, reserve concurrency for critical functions, implement queue-based processing",
|
|
275
|
+
"severity": "high",
|
|
276
|
+
"affectedSkillLevels": ["intermediate", "advanced"]
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"id": "lambda-cost-pitfall",
|
|
280
|
+
"title": "Unexpected AWS Bills",
|
|
281
|
+
"description": "Misconfigured functions run continuously or too frequently, causing unexpected costs",
|
|
282
|
+
"mitigation": "Set up CloudWatch alarms for invocation counts, use cost explorer, implement timeout limits, right-size memory allocation",
|
|
283
|
+
"severity": "critical",
|
|
284
|
+
"affectedSkillLevels": ["beginner"]
|
|
285
|
+
}
|
|
286
|
+
]
|
|
287
|
+
},
|
|
288
|
+
"azure-functions": {
|
|
289
|
+
"name": "Azure Functions",
|
|
290
|
+
"id": "azure-functions",
|
|
291
|
+
"lastVerified": "2025-10-18",
|
|
292
|
+
"resources": {
|
|
293
|
+
"tutorials": [
|
|
294
|
+
{
|
|
295
|
+
"id": "azure-functions-getting-started",
|
|
296
|
+
"title": "Getting Started with Azure Functions",
|
|
297
|
+
"url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-get-started",
|
|
298
|
+
"type": "tutorial",
|
|
299
|
+
"skillLevel": "beginner",
|
|
300
|
+
"estimatedTime": "30 minutes",
|
|
301
|
+
"provider": "Microsoft",
|
|
302
|
+
"description": "Official Microsoft tutorial for your first Azure Function",
|
|
303
|
+
"tags": ["basics", "setup"]
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"id": "azure-functions-http-trigger",
|
|
307
|
+
"title": "HTTP-Triggered Functions",
|
|
308
|
+
"url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook",
|
|
309
|
+
"type": "tutorial",
|
|
310
|
+
"skillLevel": "beginner",
|
|
311
|
+
"estimatedTime": "45 minutes",
|
|
312
|
+
"provider": "Microsoft",
|
|
313
|
+
"description": "Create HTTP-triggered functions for REST APIs",
|
|
314
|
+
"tags": ["http", "api"]
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"id": "azure-functions-bindings",
|
|
318
|
+
"title": "Azure Functions Bindings",
|
|
319
|
+
"url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-triggers-bindings",
|
|
320
|
+
"type": "tutorial",
|
|
321
|
+
"skillLevel": "intermediate",
|
|
322
|
+
"estimatedTime": "60 minutes",
|
|
323
|
+
"provider": "Microsoft",
|
|
324
|
+
"description": "Learn about input and output bindings for connecting services",
|
|
325
|
+
"tags": ["bindings", "integration"]
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"id": "azure-functions-durable",
|
|
329
|
+
"title": "Durable Functions for Long-Running Workflows",
|
|
330
|
+
"url": "https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview",
|
|
331
|
+
"type": "tutorial",
|
|
332
|
+
"skillLevel": "advanced",
|
|
333
|
+
"estimatedTime": "120 minutes",
|
|
334
|
+
"provider": "Microsoft",
|
|
335
|
+
"description": "Build stateful serverless functions with Durable Functions",
|
|
336
|
+
"tags": ["stateful", "workflows", "orchestration"]
|
|
337
|
+
}
|
|
338
|
+
],
|
|
339
|
+
"documentation": [
|
|
340
|
+
{
|
|
341
|
+
"id": "azure-functions-docs",
|
|
342
|
+
"title": "Azure Functions Documentation",
|
|
343
|
+
"url": "https://learn.microsoft.com/en-us/azure/azure-functions/",
|
|
344
|
+
"type": "documentation",
|
|
345
|
+
"skillLevel": "beginner",
|
|
346
|
+
"provider": "Microsoft",
|
|
347
|
+
"description": "Complete official Azure Functions documentation",
|
|
348
|
+
"tags": ["reference", "official"]
|
|
349
|
+
}
|
|
350
|
+
],
|
|
351
|
+
"videos": [
|
|
352
|
+
{
|
|
353
|
+
"id": "azure-functions-intro-video",
|
|
354
|
+
"title": "Azure Functions in 100 Seconds",
|
|
355
|
+
"url": "https://www.youtube.com/watch?v=2K40ycX4j2c",
|
|
356
|
+
"type": "video",
|
|
357
|
+
"skillLevel": "beginner",
|
|
358
|
+
"estimatedTime": "5 minutes",
|
|
359
|
+
"provider": "Fireship",
|
|
360
|
+
"description": "Quick introduction to Azure Functions",
|
|
361
|
+
"tags": ["quick", "overview"]
|
|
362
|
+
}
|
|
363
|
+
],
|
|
364
|
+
"courses": [
|
|
365
|
+
{
|
|
366
|
+
"id": "azure-functions-course",
|
|
367
|
+
"title": "Azure Serverless Computing",
|
|
368
|
+
"url": "https://learn.microsoft.com/en-us/training/modules/create-serverless-logic-with-azure-functions/",
|
|
369
|
+
"type": "course",
|
|
370
|
+
"skillLevel": "beginner",
|
|
371
|
+
"estimatedTime": "240 minutes",
|
|
372
|
+
"provider": "Microsoft Learn",
|
|
373
|
+
"description": "Comprehensive Microsoft Learn module on Azure Functions",
|
|
374
|
+
"tags": ["official", "comprehensive"]
|
|
375
|
+
}
|
|
376
|
+
],
|
|
377
|
+
"sampleProjects": [
|
|
378
|
+
{
|
|
379
|
+
"id": "azure-functions-hello",
|
|
380
|
+
"title": "Hello World Azure Function",
|
|
381
|
+
"url": "https://github.com/Azure-Samples/azure-functions-samples",
|
|
382
|
+
"type": "sample-project",
|
|
383
|
+
"skillLevel": "beginner",
|
|
384
|
+
"complexity": "basic",
|
|
385
|
+
"estimatedDuration": "15 minutes",
|
|
386
|
+
"estimatedTime": "15 minutes",
|
|
387
|
+
"provider": "Microsoft",
|
|
388
|
+
"description": "Simple starter Azure Function",
|
|
389
|
+
"technologies": ["C#", "Node.js", "Python"],
|
|
390
|
+
"tags": ["simple", "beginner"]
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"id": "azure-functions-rest-api",
|
|
394
|
+
"title": "REST API with Azure Functions and Cosmos DB",
|
|
395
|
+
"url": "https://github.com/Azure-Samples/azure-functions-samples",
|
|
396
|
+
"type": "sample-project",
|
|
397
|
+
"skillLevel": "intermediate",
|
|
398
|
+
"complexity": "intermediate",
|
|
399
|
+
"estimatedDuration": "2-3 hours",
|
|
400
|
+
"estimatedTime": "150 minutes",
|
|
401
|
+
"provider": "Microsoft",
|
|
402
|
+
"description": "Build a REST API with database operations",
|
|
403
|
+
"technologies": ["C#", "Azure Functions", "Cosmos DB"]
|
|
404
|
+
}
|
|
405
|
+
]
|
|
406
|
+
},
|
|
407
|
+
"bestPractices": [
|
|
408
|
+
{
|
|
409
|
+
"id": "azure-bindings-usage",
|
|
410
|
+
"category": "architecture",
|
|
411
|
+
"title": "Leverage Input/Output Bindings",
|
|
412
|
+
"description": "Use declarative bindings instead of client SDKs for cleaner code and better performance",
|
|
413
|
+
"priority": "high",
|
|
414
|
+
"example": "Use @azure/functions bindings for Azure services instead of managing connections manually"
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
"id": "azure-error-handling",
|
|
418
|
+
"category": "architecture",
|
|
419
|
+
"title": "Implement Retry Logic",
|
|
420
|
+
"description": "Use built-in retry policies for bindings and implement custom retry logic for external calls",
|
|
421
|
+
"priority": "high",
|
|
422
|
+
"example": "Configure max retry count and backoff strategy in binding configurations"
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
"id": "azure-monitoring",
|
|
426
|
+
"category": "monitoring",
|
|
427
|
+
"title": "Application Insights Integration",
|
|
428
|
+
"description": "Use Application Insights for monitoring, logging, and performance tracking",
|
|
429
|
+
"priority": "high",
|
|
430
|
+
"example": "Enable Application Insights and track custom metrics and events"
|
|
431
|
+
}
|
|
432
|
+
],
|
|
433
|
+
"commonPitfalls": [
|
|
434
|
+
{
|
|
435
|
+
"id": "azure-cold-start",
|
|
436
|
+
"title": "Cold Start Issues",
|
|
437
|
+
"description": "Azure Functions experience longer cold starts on consumption plan, especially with large dependencies",
|
|
438
|
+
"mitigation": "Consider Premium plan for predictable performance, optimize package size, use connection pooling",
|
|
439
|
+
"severity": "medium",
|
|
440
|
+
"affectedSkillLevels": ["intermediate"]
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
"id": "azure-binding-misconfiguration",
|
|
444
|
+
"title": "Binding Configuration Errors",
|
|
445
|
+
"description": "Incorrect binding configuration leads to connection failures or data loss",
|
|
446
|
+
"mitigation": "Validate binding settings, use local.settings.json for local development, test connections before deployment",
|
|
447
|
+
"severity": "high",
|
|
448
|
+
"affectedSkillLevels": ["beginner"]
|
|
449
|
+
}
|
|
450
|
+
]
|
|
451
|
+
},
|
|
452
|
+
"gcp-functions": {
|
|
453
|
+
"name": "Google Cloud Functions",
|
|
454
|
+
"id": "gcp-functions",
|
|
455
|
+
"lastVerified": "2025-10-15",
|
|
456
|
+
"resources": {
|
|
457
|
+
"tutorials": [
|
|
458
|
+
{
|
|
459
|
+
"id": "gcp-functions-quickstart",
|
|
460
|
+
"title": "Cloud Functions Quickstart",
|
|
461
|
+
"url": "https://cloud.google.com/functions/docs/quickstart",
|
|
462
|
+
"type": "tutorial",
|
|
463
|
+
"skillLevel": "beginner",
|
|
464
|
+
"estimatedTime": "20 minutes",
|
|
465
|
+
"provider": "Google Cloud",
|
|
466
|
+
"description": "Get started with your first Cloud Function",
|
|
467
|
+
"tags": ["basics", "quick"]
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
"id": "gcp-functions-http",
|
|
471
|
+
"title": "Create HTTP Functions",
|
|
472
|
+
"url": "https://cloud.google.com/functions/docs/create-deploy/http-trigger",
|
|
473
|
+
"type": "tutorial",
|
|
474
|
+
"skillLevel": "beginner",
|
|
475
|
+
"estimatedTime": "30 minutes",
|
|
476
|
+
"provider": "Google Cloud",
|
|
477
|
+
"description": "Build HTTP-triggered functions",
|
|
478
|
+
"tags": ["http", "api"]
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"id": "gcp-functions-pubsub",
|
|
482
|
+
"title": "Cloud Pub/Sub Triggered Functions",
|
|
483
|
+
"url": "https://cloud.google.com/functions/docs/calling/pubsub",
|
|
484
|
+
"type": "tutorial",
|
|
485
|
+
"skillLevel": "intermediate",
|
|
486
|
+
"estimatedTime": "45 minutes",
|
|
487
|
+
"provider": "Google Cloud",
|
|
488
|
+
"description": "Use Pub/Sub to trigger functions",
|
|
489
|
+
"tags": ["pubsub", "events"]
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
"id": "gcp-functions-cloud-events",
|
|
493
|
+
"title": "Cloud Events and Advanced Triggers",
|
|
494
|
+
"url": "https://cloud.google.com/functions/docs/concepts/events-triggers",
|
|
495
|
+
"type": "tutorial",
|
|
496
|
+
"skillLevel": "advanced",
|
|
497
|
+
"estimatedTime": "75 minutes",
|
|
498
|
+
"provider": "Google Cloud",
|
|
499
|
+
"description": "Advanced event handling and complex workflows",
|
|
500
|
+
"tags": ["events", "advanced"]
|
|
501
|
+
}
|
|
502
|
+
],
|
|
503
|
+
"documentation": [
|
|
504
|
+
{
|
|
505
|
+
"id": "gcp-functions-docs",
|
|
506
|
+
"title": "Cloud Functions Documentation",
|
|
507
|
+
"url": "https://cloud.google.com/functions/docs",
|
|
508
|
+
"type": "documentation",
|
|
509
|
+
"skillLevel": "beginner",
|
|
510
|
+
"provider": "Google Cloud",
|
|
511
|
+
"description": "Official Google Cloud Functions documentation",
|
|
512
|
+
"tags": ["reference", "official"]
|
|
513
|
+
}
|
|
514
|
+
],
|
|
515
|
+
"videos": [
|
|
516
|
+
{
|
|
517
|
+
"id": "gcp-functions-intro",
|
|
518
|
+
"title": "Cloud Functions Explained",
|
|
519
|
+
"url": "https://www.youtube.com/watch?v=lDv-8_3XFBM",
|
|
520
|
+
"type": "video",
|
|
521
|
+
"skillLevel": "beginner",
|
|
522
|
+
"estimatedTime": "10 minutes",
|
|
523
|
+
"provider": "Google Cloud",
|
|
524
|
+
"description": "Overview of Cloud Functions features",
|
|
525
|
+
"tags": ["overview", "introduction"]
|
|
526
|
+
}
|
|
527
|
+
],
|
|
528
|
+
"courses": [
|
|
529
|
+
{
|
|
530
|
+
"id": "gcp-serverless-course",
|
|
531
|
+
"title": "Serverless Computing with Google Cloud",
|
|
532
|
+
"url": "https://www.coursera.org/learn/serverless-computing-gcp",
|
|
533
|
+
"type": "course",
|
|
534
|
+
"skillLevel": "intermediate",
|
|
535
|
+
"estimatedTime": "240 minutes",
|
|
536
|
+
"provider": "Coursera",
|
|
537
|
+
"description": "Complete course on Google Cloud serverless offerings",
|
|
538
|
+
"tags": ["comprehensive", "official"]
|
|
539
|
+
}
|
|
540
|
+
],
|
|
541
|
+
"sampleProjects": [
|
|
542
|
+
{
|
|
543
|
+
"id": "gcp-functions-hello",
|
|
544
|
+
"title": "Hello World Cloud Function",
|
|
545
|
+
"url": "https://github.com/GoogleCloudPlatform/functions-framework-nodejs",
|
|
546
|
+
"type": "sample-project",
|
|
547
|
+
"skillLevel": "beginner",
|
|
548
|
+
"complexity": "basic",
|
|
549
|
+
"estimatedDuration": "10 minutes",
|
|
550
|
+
"estimatedTime": "10 minutes",
|
|
551
|
+
"provider": "Google Cloud",
|
|
552
|
+
"description": "Simple starter function",
|
|
553
|
+
"technologies": ["Node.js", "Cloud Functions"]
|
|
554
|
+
}
|
|
555
|
+
]
|
|
556
|
+
},
|
|
557
|
+
"bestPractices": [
|
|
558
|
+
{
|
|
559
|
+
"id": "gcp-pubsub-pattern",
|
|
560
|
+
"category": "architecture",
|
|
561
|
+
"title": "Use Pub/Sub for Reliable Messaging",
|
|
562
|
+
"description": "Use Cloud Pub/Sub instead of direct function-to-function calls for reliable event processing",
|
|
563
|
+
"priority": "high",
|
|
564
|
+
"example": "Decouple producers and consumers using Pub/Sub topics and subscriptions"
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"id": "gcp-cloud-tasks",
|
|
568
|
+
"category": "architecture",
|
|
569
|
+
"title": "Cloud Tasks for Scheduled Work",
|
|
570
|
+
"description": "Use Cloud Tasks for delayed execution and automatic retries",
|
|
571
|
+
"priority": "medium",
|
|
572
|
+
"example": "Create Cloud Tasks queues to handle batch processing with automatic retry"
|
|
573
|
+
}
|
|
574
|
+
],
|
|
575
|
+
"commonPitfalls": [
|
|
576
|
+
{
|
|
577
|
+
"id": "gcp-timeout-default",
|
|
578
|
+
"title": "Default Timeout is Too Short",
|
|
579
|
+
"description": "Functions fail due to default 60-second timeout being too short for some workloads",
|
|
580
|
+
"mitigation": "Increase timeout to 540 seconds (max), but prefer breaking long operations into smaller functions",
|
|
581
|
+
"severity": "high",
|
|
582
|
+
"affectedSkillLevels": ["beginner"]
|
|
583
|
+
}
|
|
584
|
+
]
|
|
585
|
+
},
|
|
586
|
+
"firebase-functions": {
|
|
587
|
+
"name": "Firebase Functions",
|
|
588
|
+
"id": "firebase-functions",
|
|
589
|
+
"lastVerified": "2025-10-12",
|
|
590
|
+
"resources": {
|
|
591
|
+
"tutorials": [
|
|
592
|
+
{
|
|
593
|
+
"id": "firebase-functions-quickstart",
|
|
594
|
+
"title": "Firebase Functions Quickstart",
|
|
595
|
+
"url": "https://firebase.google.com/docs/functions/get-started",
|
|
596
|
+
"type": "tutorial",
|
|
597
|
+
"skillLevel": "beginner",
|
|
598
|
+
"estimatedTime": "25 minutes",
|
|
599
|
+
"provider": "Firebase",
|
|
600
|
+
"description": "Get started with Firebase Functions",
|
|
601
|
+
"tags": ["basics", "firebase"]
|
|
602
|
+
},
|
|
603
|
+
{
|
|
604
|
+
"id": "firebase-functions-firestore",
|
|
605
|
+
"title": "Firestore Triggers",
|
|
606
|
+
"url": "https://firebase.google.com/docs/functions/firestore-examples",
|
|
607
|
+
"type": "tutorial",
|
|
608
|
+
"skillLevel": "intermediate",
|
|
609
|
+
"estimatedTime": "45 minutes",
|
|
610
|
+
"provider": "Firebase",
|
|
611
|
+
"description": "Trigger functions from Firestore events",
|
|
612
|
+
"tags": ["firestore", "database"]
|
|
613
|
+
}
|
|
614
|
+
],
|
|
615
|
+
"documentation": [
|
|
616
|
+
{
|
|
617
|
+
"id": "firebase-functions-guide",
|
|
618
|
+
"title": "Firebase Functions Guide",
|
|
619
|
+
"url": "https://firebase.google.com/docs/functions",
|
|
620
|
+
"type": "documentation",
|
|
621
|
+
"skillLevel": "beginner",
|
|
622
|
+
"provider": "Firebase",
|
|
623
|
+
"description": "Complete Firebase Functions documentation",
|
|
624
|
+
"tags": ["reference"]
|
|
625
|
+
}
|
|
626
|
+
],
|
|
627
|
+
"videos": [
|
|
628
|
+
{
|
|
629
|
+
"id": "firebase-functions-video",
|
|
630
|
+
"title": "Firebase Functions Tutorial",
|
|
631
|
+
"url": "https://www.youtube.com/watch?v=BPFYc7OKqwI",
|
|
632
|
+
"type": "video",
|
|
633
|
+
"skillLevel": "beginner",
|
|
634
|
+
"estimatedTime": "30 minutes",
|
|
635
|
+
"provider": "Firebase",
|
|
636
|
+
"description": "Video introduction to Firebase Functions",
|
|
637
|
+
"tags": ["tutorial"]
|
|
638
|
+
}
|
|
639
|
+
],
|
|
640
|
+
"courses": [
|
|
641
|
+
{
|
|
642
|
+
"id": "firebase-complete-course",
|
|
643
|
+
"title": "Complete Firebase Course",
|
|
644
|
+
"url": "https://www.udemy.com/course/firebase-complete-course/",
|
|
645
|
+
"type": "course",
|
|
646
|
+
"skillLevel": "intermediate",
|
|
647
|
+
"estimatedTime": "480 minutes",
|
|
648
|
+
"provider": "Udemy",
|
|
649
|
+
"description": "Comprehensive Firebase course including Functions",
|
|
650
|
+
"tags": ["complete", "firebase"]
|
|
651
|
+
}
|
|
652
|
+
],
|
|
653
|
+
"sampleProjects": [
|
|
654
|
+
{
|
|
655
|
+
"id": "firebase-functions-hello",
|
|
656
|
+
"title": "Hello World Firebase Function",
|
|
657
|
+
"url": "https://github.com/firebase/functions-samples",
|
|
658
|
+
"type": "sample-project",
|
|
659
|
+
"skillLevel": "beginner",
|
|
660
|
+
"complexity": "basic",
|
|
661
|
+
"estimatedDuration": "15 minutes",
|
|
662
|
+
"estimatedTime": "15 minutes",
|
|
663
|
+
"provider": "Firebase",
|
|
664
|
+
"description": "Simple starter function",
|
|
665
|
+
"technologies": ["Node.js", "Firebase"]
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
"id": "firebase-functions-social-app",
|
|
669
|
+
"title": "Social App Backend with Firebase",
|
|
670
|
+
"url": "https://github.com/firebase/functions-samples",
|
|
671
|
+
"type": "sample-project",
|
|
672
|
+
"skillLevel": "advanced",
|
|
673
|
+
"complexity": "advanced",
|
|
674
|
+
"estimatedDuration": "4-6 hours",
|
|
675
|
+
"estimatedTime": "300 minutes",
|
|
676
|
+
"provider": "Firebase",
|
|
677
|
+
"description": "Complete social application backend",
|
|
678
|
+
"technologies": ["Node.js", "Firebase", "Firestore", "Cloud Storage"]
|
|
679
|
+
}
|
|
680
|
+
]
|
|
681
|
+
},
|
|
682
|
+
"bestPractices": [
|
|
683
|
+
{
|
|
684
|
+
"id": "firebase-realtime-sync",
|
|
685
|
+
"category": "architecture",
|
|
686
|
+
"title": "Synchronize with Firestore",
|
|
687
|
+
"description": "Use Firestore triggers to keep data synchronized across your application",
|
|
688
|
+
"priority": "high",
|
|
689
|
+
"example": "Create functions to update aggregations when documents change"
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
"id": "firebase-auth-integration",
|
|
693
|
+
"category": "security",
|
|
694
|
+
"title": "Integrate with Firebase Auth",
|
|
695
|
+
"description": "Use Firebase Auth context in functions for secure operations",
|
|
696
|
+
"priority": "high",
|
|
697
|
+
"example": "Verify user identity before performing sensitive operations"
|
|
698
|
+
}
|
|
699
|
+
],
|
|
700
|
+
"commonPitfalls": [
|
|
701
|
+
{
|
|
702
|
+
"id": "firebase-cold-start",
|
|
703
|
+
"title": "Slow First Invocation",
|
|
704
|
+
"description": "Firebase Functions experience cold starts on first invocation",
|
|
705
|
+
"mitigation": "Use Firebase Blaze plan for high volume, keep code size small, use Node.js for faster startup",
|
|
706
|
+
"severity": "medium",
|
|
707
|
+
"affectedSkillLevels": ["intermediate"]
|
|
708
|
+
}
|
|
709
|
+
]
|
|
710
|
+
},
|
|
711
|
+
"supabase-functions": {
|
|
712
|
+
"name": "Supabase Edge Functions",
|
|
713
|
+
"id": "supabase",
|
|
714
|
+
"lastVerified": "2025-10-25",
|
|
715
|
+
"resources": {
|
|
716
|
+
"tutorials": [
|
|
717
|
+
{
|
|
718
|
+
"id": "supabase-functions-quickstart",
|
|
719
|
+
"title": "Supabase Edge Functions Quickstart",
|
|
720
|
+
"url": "https://supabase.com/docs/guides/functions/getting-started",
|
|
721
|
+
"type": "tutorial",
|
|
722
|
+
"skillLevel": "beginner",
|
|
723
|
+
"estimatedTime": "20 minutes",
|
|
724
|
+
"provider": "Supabase",
|
|
725
|
+
"description": "Get started with Supabase Edge Functions",
|
|
726
|
+
"tags": ["basics", "edge-functions"]
|
|
727
|
+
},
|
|
728
|
+
{
|
|
729
|
+
"id": "supabase-functions-webhooks",
|
|
730
|
+
"title": "Database Webhooks",
|
|
731
|
+
"url": "https://supabase.com/docs/guides/database/webhooks",
|
|
732
|
+
"type": "tutorial",
|
|
733
|
+
"skillLevel": "intermediate",
|
|
734
|
+
"estimatedTime": "40 minutes",
|
|
735
|
+
"provider": "Supabase",
|
|
736
|
+
"description": "Trigger functions on database events",
|
|
737
|
+
"tags": ["webhooks", "postgres"]
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
"id": "supabase-functions-deno",
|
|
741
|
+
"title": "Using Deno in Edge Functions",
|
|
742
|
+
"url": "https://supabase.com/docs/guides/functions/deno",
|
|
743
|
+
"type": "tutorial",
|
|
744
|
+
"skillLevel": "advanced",
|
|
745
|
+
"estimatedTime": "60 minutes",
|
|
746
|
+
"provider": "Supabase",
|
|
747
|
+
"description": "Advanced Deno features and optimization",
|
|
748
|
+
"tags": ["deno", "advanced"]
|
|
749
|
+
}
|
|
750
|
+
],
|
|
751
|
+
"documentation": [
|
|
752
|
+
{
|
|
753
|
+
"id": "supabase-functions-docs",
|
|
754
|
+
"title": "Supabase Functions Documentation",
|
|
755
|
+
"url": "https://supabase.com/docs/guides/functions",
|
|
756
|
+
"type": "documentation",
|
|
757
|
+
"skillLevel": "beginner",
|
|
758
|
+
"provider": "Supabase",
|
|
759
|
+
"description": "Complete Supabase Functions documentation",
|
|
760
|
+
"tags": ["reference"]
|
|
761
|
+
}
|
|
762
|
+
],
|
|
763
|
+
"videos": [
|
|
764
|
+
{
|
|
765
|
+
"id": "supabase-functions-video",
|
|
766
|
+
"title": "Supabase Edge Functions Explained",
|
|
767
|
+
"url": "https://www.youtube.com/watch?v=vQXwjVuIvQA",
|
|
768
|
+
"type": "video",
|
|
769
|
+
"skillLevel": "beginner",
|
|
770
|
+
"estimatedTime": "15 minutes",
|
|
771
|
+
"provider": "Supabase",
|
|
772
|
+
"description": "Introduction to Supabase Edge Functions",
|
|
773
|
+
"tags": ["overview"]
|
|
774
|
+
}
|
|
775
|
+
],
|
|
776
|
+
"courses": [
|
|
777
|
+
{
|
|
778
|
+
"id": "supabase-backend-course",
|
|
779
|
+
"title": "Supabase Backend Development",
|
|
780
|
+
"url": "https://www.udemy.com/course/supabase-react/",
|
|
781
|
+
"type": "course",
|
|
782
|
+
"skillLevel": "intermediate",
|
|
783
|
+
"estimatedTime": "360 minutes",
|
|
784
|
+
"provider": "Udemy",
|
|
785
|
+
"description": "Build backend with Supabase and Edge Functions",
|
|
786
|
+
"tags": ["backend", "complete"]
|
|
787
|
+
}
|
|
788
|
+
],
|
|
789
|
+
"sampleProjects": [
|
|
790
|
+
{
|
|
791
|
+
"id": "supabase-functions-hello",
|
|
792
|
+
"title": "Hello World Edge Function",
|
|
793
|
+
"url": "https://github.com/supabase/supabase/tree/master/examples/edge-functions",
|
|
794
|
+
"type": "sample-project",
|
|
795
|
+
"skillLevel": "beginner",
|
|
796
|
+
"complexity": "basic",
|
|
797
|
+
"estimatedDuration": "10 minutes",
|
|
798
|
+
"estimatedTime": "10 minutes",
|
|
799
|
+
"provider": "Supabase",
|
|
800
|
+
"description": "Simple starter Edge Function",
|
|
801
|
+
"technologies": ["Deno", "TypeScript"]
|
|
802
|
+
},
|
|
803
|
+
{
|
|
804
|
+
"id": "supabase-functions-rest-api",
|
|
805
|
+
"title": "REST API with Supabase",
|
|
806
|
+
"url": "https://github.com/supabase/supabase/tree/master/examples/edge-functions",
|
|
807
|
+
"type": "sample-project",
|
|
808
|
+
"skillLevel": "intermediate",
|
|
809
|
+
"complexity": "intermediate",
|
|
810
|
+
"estimatedDuration": "2 hours",
|
|
811
|
+
"estimatedTime": "120 minutes",
|
|
812
|
+
"provider": "Supabase",
|
|
813
|
+
"description": "Build a complete REST API backed by PostgreSQL",
|
|
814
|
+
"technologies": ["Deno", "TypeScript", "PostgreSQL"],
|
|
815
|
+
"sourceRepo": "https://github.com/supabase"
|
|
816
|
+
}
|
|
817
|
+
]
|
|
818
|
+
},
|
|
819
|
+
"bestPractices": [
|
|
820
|
+
{
|
|
821
|
+
"id": "supabase-postgres-integration",
|
|
822
|
+
"category": "architecture",
|
|
823
|
+
"title": "Leverage PostgreSQL Power",
|
|
824
|
+
"description": "Use PostgreSQL features like JSON operators, full-text search, and PostGIS",
|
|
825
|
+
"priority": "high",
|
|
826
|
+
"example": "Use jsonb operators in queries instead of processing in Edge Functions"
|
|
827
|
+
},
|
|
828
|
+
{
|
|
829
|
+
"id": "supabase-edge-location",
|
|
830
|
+
"category": "performance",
|
|
831
|
+
"title": "Use Global Edge Network",
|
|
832
|
+
"description": "Edge Functions run globally for lower latency and better performance",
|
|
833
|
+
"priority": "medium",
|
|
834
|
+
"example": "Supabase Edge Functions are deployed to Deno Deploy globally"
|
|
835
|
+
},
|
|
836
|
+
{
|
|
837
|
+
"id": "supabase-deno-typing",
|
|
838
|
+
"category": "architecture",
|
|
839
|
+
"title": "Proper TypeScript Typing",
|
|
840
|
+
"description": "Use Deno's native TypeScript support for type safety",
|
|
841
|
+
"priority": "medium",
|
|
842
|
+
"example": "Import types from npm or use ///@deno-types comments"
|
|
843
|
+
}
|
|
844
|
+
],
|
|
845
|
+
"commonPitfalls": [
|
|
846
|
+
{
|
|
847
|
+
"id": "supabase-deno-learning-curve",
|
|
848
|
+
"title": "Deno Learning Curve",
|
|
849
|
+
"description": "Developers familiar with Node.js may struggle with Deno's different module system",
|
|
850
|
+
"mitigation": "Use Deno import maps, leverage deno.land/x packages, read Deno documentation",
|
|
851
|
+
"severity": "medium",
|
|
852
|
+
"affectedSkillLevels": ["beginner"]
|
|
853
|
+
},
|
|
854
|
+
{
|
|
855
|
+
"id": "supabase-import-restrictions",
|
|
856
|
+
"title": "NPM Module Import Issues",
|
|
857
|
+
"description": "Not all NPM packages work in Edge Functions due to Node.js-specific APIs",
|
|
858
|
+
"mitigation": "Use packages tested with Deno, check for browser/edge-compatible alternatives",
|
|
859
|
+
"severity": "high",
|
|
860
|
+
"affectedSkillLevels": ["intermediate"]
|
|
861
|
+
}
|
|
862
|
+
]
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
}
|