lambda-forge-cli-aws 1.0.0__tar.gz

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.
Files changed (116) hide show
  1. lambda_forge_cli_aws-1.0.0/.github/workflows/ci.yml +91 -0
  2. lambda_forge_cli_aws-1.0.0/.github/workflows/release.yml +139 -0
  3. lambda_forge_cli_aws-1.0.0/.gitignore +73 -0
  4. lambda_forge_cli_aws-1.0.0/.kiro/hooks/lint-on-save.kiro.hook +17 -0
  5. lambda_forge_cli_aws-1.0.0/.kiro/hooks/run-tests-after-task.kiro.hook +13 -0
  6. lambda_forge_cli_aws-1.0.0/.kiro/hooks/security-check-infra.kiro.hook +16 -0
  7. lambda_forge_cli_aws-1.0.0/.kiro/hooks/template-standards-check.kiro.hook +16 -0
  8. lambda_forge_cli_aws-1.0.0/.kiro/hooks/validate-cookiecutter-vars.kiro.hook +16 -0
  9. lambda_forge_cli_aws-1.0.0/.kiro/specs/00-overview.md +77 -0
  10. lambda_forge_cli_aws-1.0.0/.kiro/specs/01-architecture.md +354 -0
  11. lambda_forge_cli_aws-1.0.0/.kiro/specs/02-acceptance-criteria.md +314 -0
  12. lambda_forge_cli_aws-1.0.0/.kiro/specs/03-implementation-plan.md +199 -0
  13. lambda_forge_cli_aws-1.0.0/.kiro/steering/aws-best-practices.md +160 -0
  14. lambda_forge_cli_aws-1.0.0/.kiro/steering/code-standards.md +61 -0
  15. lambda_forge_cli_aws-1.0.0/.kiro/steering/security.md +111 -0
  16. lambda_forge_cli_aws-1.0.0/.kiro/steering/templates.md +133 -0
  17. lambda_forge_cli_aws-1.0.0/.kiro/steering/testing.md +100 -0
  18. lambda_forge_cli_aws-1.0.0/CHANGELOG.md +65 -0
  19. lambda_forge_cli_aws-1.0.0/CONTRIBUTING.md +120 -0
  20. lambda_forge_cli_aws-1.0.0/LICENSE +189 -0
  21. lambda_forge_cli_aws-1.0.0/PKG-INFO +352 -0
  22. lambda_forge_cli_aws-1.0.0/README.md +314 -0
  23. lambda_forge_cli_aws-1.0.0/VIDEO_PITCH.md +259 -0
  24. lambda_forge_cli_aws-1.0.0/infrastructure/.gitignore +7 -0
  25. lambda_forge_cli_aws-1.0.0/infrastructure/app.py +38 -0
  26. lambda_forge_cli_aws-1.0.0/infrastructure/cdk.json +28 -0
  27. lambda_forge_cli_aws-1.0.0/infrastructure/lib/lambdaforge_stack.py +309 -0
  28. lambda_forge_cli_aws-1.0.0/infrastructure/requirements.txt +3 -0
  29. lambda_forge_cli_aws-1.0.0/pyproject.toml +82 -0
  30. lambda_forge_cli_aws-1.0.0/scripts/release.sh +56 -0
  31. lambda_forge_cli_aws-1.0.0/src/lambdaforge/__init__.py +10 -0
  32. lambda_forge_cli_aws-1.0.0/src/lambdaforge/bedrock_client.py +109 -0
  33. lambda_forge_cli_aws-1.0.0/src/lambdaforge/cli.py +428 -0
  34. lambda_forge_cli_aws-1.0.0/src/lambdaforge/deploy.py +308 -0
  35. lambda_forge_cli_aws-1.0.0/src/lambdaforge/logs.py +185 -0
  36. lambda_forge_cli_aws-1.0.0/src/lambdaforge/renderer.py +72 -0
  37. lambda_forge_cli_aws-1.0.0/src/lambdaforge/spec_generator.py +171 -0
  38. lambda_forge_cli_aws-1.0.0/src/lambdaforge/status.py +111 -0
  39. lambda_forge_cli_aws-1.0.0/src/lambdaforge/templates.py +106 -0
  40. lambda_forge_cli_aws-1.0.0/src/lambdaforge/upgrade.py +231 -0
  41. lambda_forge_cli_aws-1.0.0/templates/python-api/cookiecutter.json +12 -0
  42. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/.github/workflows/dependabot.yml +22 -0
  43. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/.github/workflows/deploy.yml +90 -0
  44. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/.gitignore +65 -0
  45. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/Dockerfile +11 -0
  46. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/README.md +130 -0
  47. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/infrastructure/app.js +26 -0
  48. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/infrastructure/cdk.json +20 -0
  49. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/infrastructure/lib/stack.js +155 -0
  50. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/infrastructure/package.json +17 -0
  51. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/pyproject.toml +66 -0
  52. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/requirements-dev.txt +8 -0
  53. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/requirements.txt +3 -0
  54. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/src/handler.py +93 -0
  55. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/src/utils/logger.py +39 -0
  56. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/tests/conftest.py +22 -0
  57. lambda_forge_cli_aws-1.0.0/templates/python-api/{{cookiecutter.project_slug}}/tests/test_handler.py +68 -0
  58. lambda_forge_cli_aws-1.0.0/templates/python-cron/cookiecutter.json +13 -0
  59. lambda_forge_cli_aws-1.0.0/templates/python-cron/{{cookiecutter.project_slug}}/.gitignore +65 -0
  60. lambda_forge_cli_aws-1.0.0/templates/python-cron/{{cookiecutter.project_slug}}/Dockerfile +11 -0
  61. lambda_forge_cli_aws-1.0.0/templates/python-cron/{{cookiecutter.project_slug}}/infrastructure/app.js +25 -0
  62. lambda_forge_cli_aws-1.0.0/templates/python-cron/{{cookiecutter.project_slug}}/infrastructure/cdk.json +3 -0
  63. lambda_forge_cli_aws-1.0.0/templates/python-cron/{{cookiecutter.project_slug}}/infrastructure/lib/stack.js +55 -0
  64. lambda_forge_cli_aws-1.0.0/templates/python-cron/{{cookiecutter.project_slug}}/infrastructure/package.json +17 -0
  65. lambda_forge_cli_aws-1.0.0/templates/python-cron/{{cookiecutter.project_slug}}/pyproject.toml +56 -0
  66. lambda_forge_cli_aws-1.0.0/templates/python-cron/{{cookiecutter.project_slug}}/requirements.txt +2 -0
  67. lambda_forge_cli_aws-1.0.0/templates/python-cron/{{cookiecutter.project_slug}}/src/handler.py +53 -0
  68. lambda_forge_cli_aws-1.0.0/templates/python-cron/{{cookiecutter.project_slug}}/tests/conftest.py +22 -0
  69. lambda_forge_cli_aws-1.0.0/templates/python-cron/{{cookiecutter.project_slug}}/tests/test_handler.py +48 -0
  70. lambda_forge_cli_aws-1.0.0/templates/python-queue/cookiecutter.json +12 -0
  71. lambda_forge_cli_aws-1.0.0/templates/python-queue/{{cookiecutter.project_slug}}/.gitignore +65 -0
  72. lambda_forge_cli_aws-1.0.0/templates/python-queue/{{cookiecutter.project_slug}}/Dockerfile +11 -0
  73. lambda_forge_cli_aws-1.0.0/templates/python-queue/{{cookiecutter.project_slug}}/infrastructure/app.js +25 -0
  74. lambda_forge_cli_aws-1.0.0/templates/python-queue/{{cookiecutter.project_slug}}/infrastructure/cdk.json +3 -0
  75. lambda_forge_cli_aws-1.0.0/templates/python-queue/{{cookiecutter.project_slug}}/infrastructure/lib/stack.js +79 -0
  76. lambda_forge_cli_aws-1.0.0/templates/python-queue/{{cookiecutter.project_slug}}/infrastructure/package.json +17 -0
  77. lambda_forge_cli_aws-1.0.0/templates/python-queue/{{cookiecutter.project_slug}}/pyproject.toml +56 -0
  78. lambda_forge_cli_aws-1.0.0/templates/python-queue/{{cookiecutter.project_slug}}/requirements.txt +2 -0
  79. lambda_forge_cli_aws-1.0.0/templates/python-queue/{{cookiecutter.project_slug}}/src/handler.py +64 -0
  80. lambda_forge_cli_aws-1.0.0/templates/python-queue/{{cookiecutter.project_slug}}/tests/conftest.py +22 -0
  81. lambda_forge_cli_aws-1.0.0/templates/python-queue/{{cookiecutter.project_slug}}/tests/test_handler.py +60 -0
  82. lambda_forge_cli_aws-1.0.0/templates/python-s3/cookiecutter.json +13 -0
  83. lambda_forge_cli_aws-1.0.0/templates/python-s3/{{cookiecutter.project_slug}}/.gitignore +65 -0
  84. lambda_forge_cli_aws-1.0.0/templates/python-s3/{{cookiecutter.project_slug}}/Dockerfile +11 -0
  85. lambda_forge_cli_aws-1.0.0/templates/python-s3/{{cookiecutter.project_slug}}/infrastructure/app.js +25 -0
  86. lambda_forge_cli_aws-1.0.0/templates/python-s3/{{cookiecutter.project_slug}}/infrastructure/cdk.json +3 -0
  87. lambda_forge_cli_aws-1.0.0/templates/python-s3/{{cookiecutter.project_slug}}/infrastructure/lib/stack.js +89 -0
  88. lambda_forge_cli_aws-1.0.0/templates/python-s3/{{cookiecutter.project_slug}}/infrastructure/package.json +17 -0
  89. lambda_forge_cli_aws-1.0.0/templates/python-s3/{{cookiecutter.project_slug}}/pyproject.toml +56 -0
  90. lambda_forge_cli_aws-1.0.0/templates/python-s3/{{cookiecutter.project_slug}}/requirements.txt +2 -0
  91. lambda_forge_cli_aws-1.0.0/templates/python-s3/{{cookiecutter.project_slug}}/src/handler.py +86 -0
  92. lambda_forge_cli_aws-1.0.0/templates/python-s3/{{cookiecutter.project_slug}}/tests/conftest.py +22 -0
  93. lambda_forge_cli_aws-1.0.0/templates/python-s3/{{cookiecutter.project_slug}}/tests/test_handler.py +71 -0
  94. lambda_forge_cli_aws-1.0.0/templates/python-stream/cookiecutter.json +12 -0
  95. lambda_forge_cli_aws-1.0.0/templates/python-stream/{{cookiecutter.project_slug}}/.gitignore +65 -0
  96. lambda_forge_cli_aws-1.0.0/templates/python-stream/{{cookiecutter.project_slug}}/Dockerfile +11 -0
  97. lambda_forge_cli_aws-1.0.0/templates/python-stream/{{cookiecutter.project_slug}}/infrastructure/app.js +25 -0
  98. lambda_forge_cli_aws-1.0.0/templates/python-stream/{{cookiecutter.project_slug}}/infrastructure/cdk.json +3 -0
  99. lambda_forge_cli_aws-1.0.0/templates/python-stream/{{cookiecutter.project_slug}}/infrastructure/lib/stack.js +81 -0
  100. lambda_forge_cli_aws-1.0.0/templates/python-stream/{{cookiecutter.project_slug}}/infrastructure/package.json +17 -0
  101. lambda_forge_cli_aws-1.0.0/templates/python-stream/{{cookiecutter.project_slug}}/pyproject.toml +56 -0
  102. lambda_forge_cli_aws-1.0.0/templates/python-stream/{{cookiecutter.project_slug}}/requirements.txt +2 -0
  103. lambda_forge_cli_aws-1.0.0/templates/python-stream/{{cookiecutter.project_slug}}/src/handler.py +69 -0
  104. lambda_forge_cli_aws-1.0.0/templates/python-stream/{{cookiecutter.project_slug}}/tests/conftest.py +22 -0
  105. lambda_forge_cli_aws-1.0.0/templates/python-stream/{{cookiecutter.project_slug}}/tests/test_handler.py +64 -0
  106. lambda_forge_cli_aws-1.0.0/tests/__init__.py +0 -0
  107. lambda_forge_cli_aws-1.0.0/tests/conftest.py +29 -0
  108. lambda_forge_cli_aws-1.0.0/tests/test_bedrock_client.py +93 -0
  109. lambda_forge_cli_aws-1.0.0/tests/test_cli.py +111 -0
  110. lambda_forge_cli_aws-1.0.0/tests/test_deploy.py +291 -0
  111. lambda_forge_cli_aws-1.0.0/tests/test_logs.py +153 -0
  112. lambda_forge_cli_aws-1.0.0/tests/test_renderer.py +57 -0
  113. lambda_forge_cli_aws-1.0.0/tests/test_spec_generator.py +108 -0
  114. lambda_forge_cli_aws-1.0.0/tests/test_status.py +87 -0
  115. lambda_forge_cli_aws-1.0.0/tests/test_templates.py +52 -0
  116. lambda_forge_cli_aws-1.0.0/tests/test_upgrade.py +181 -0
@@ -0,0 +1,91 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ lint:
14
+ name: Lint & Type Check
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.12"
22
+ cache: "pip"
23
+
24
+ - name: Install dependencies
25
+ run: |
26
+ python -m pip install --upgrade pip
27
+ pip install -e ".[dev]"
28
+
29
+ - name: Lint (ruff)
30
+ run: ruff check .
31
+
32
+ - name: Format check (ruff)
33
+ run: ruff format --check .
34
+
35
+ - name: Type check (mypy)
36
+ run: mypy src/
37
+
38
+ test:
39
+ name: Tests
40
+ runs-on: ubuntu-latest
41
+ strategy:
42
+ matrix:
43
+ python-version: ["3.12"]
44
+ steps:
45
+ - uses: actions/checkout@v4
46
+
47
+ - uses: actions/setup-python@v5
48
+ with:
49
+ python-version: ${{ matrix.python-version }}
50
+ cache: "pip"
51
+
52
+ - name: Install dependencies
53
+ run: |
54
+ python -m pip install --upgrade pip
55
+ pip install -e ".[dev]"
56
+
57
+ - name: Run tests
58
+ run: pytest --cov-report=xml
59
+ env:
60
+ AWS_DEFAULT_REGION: us-east-1
61
+ AWS_ACCESS_KEY_ID: testing
62
+ AWS_SECRET_ACCESS_KEY: testing
63
+
64
+ - name: Upload coverage
65
+ uses: codecov/codecov-action@v4
66
+ if: always()
67
+ with:
68
+ file: coverage.xml
69
+ fail_ci_if_error: false
70
+
71
+ build:
72
+ name: Build Package
73
+ runs-on: ubuntu-latest
74
+ needs: [lint, test]
75
+ steps:
76
+ - uses: actions/checkout@v4
77
+
78
+ - uses: actions/setup-python@v5
79
+ with:
80
+ python-version: "3.12"
81
+
82
+ - name: Install build tools
83
+ run: pip install build
84
+
85
+ - name: Build package
86
+ run: python -m build
87
+
88
+ - name: Verify package
89
+ run: |
90
+ pip install dist/*.whl
91
+ lambdaforge version
@@ -0,0 +1,139 @@
1
+ name: Release to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions:
9
+ contents: write
10
+ id-token: write
11
+
12
+ jobs:
13
+ test:
14
+ name: Verificar Tests
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.12"
22
+ cache: "pip"
23
+
24
+ - name: Instalar dependencias
25
+ run: pip install -e ".[dev]"
26
+
27
+ - name: Lint
28
+ run: ruff check .
29
+
30
+ - name: Tests
31
+ run: pytest --cov=src/lambdaforge
32
+ env:
33
+ AWS_DEFAULT_REGION: us-east-1
34
+ AWS_ACCESS_KEY_ID: testing
35
+ AWS_SECRET_ACCESS_KEY: testing
36
+
37
+ build:
38
+ name: Build Package
39
+ needs: test
40
+ runs-on: ubuntu-latest
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+
44
+ - uses: actions/setup-python@v5
45
+ with:
46
+ python-version: "3.12"
47
+
48
+ - name: Instalar herramientas de build
49
+ run: pip install build
50
+
51
+ - name: Build sdist y wheel
52
+ run: python -m build
53
+
54
+ - name: Verificar paquete
55
+ run: |
56
+ pip install dist/*.whl
57
+ lambdaforge version
58
+ lambdaforge templates
59
+
60
+ - name: Guardar artefactos
61
+ uses: actions/upload-artifact@v4
62
+ with:
63
+ name: dist
64
+ path: dist/
65
+
66
+ publish-testpypi:
67
+ name: Publicar en Test PyPI
68
+ needs: build
69
+ runs-on: ubuntu-latest
70
+ environment: testpypi
71
+ steps:
72
+ - uses: actions/download-artifact@v4
73
+ with:
74
+ name: dist
75
+ path: dist/
76
+
77
+ - uses: actions/setup-python@v5
78
+ with:
79
+ python-version: "3.12"
80
+
81
+ - name: Publicar en Test PyPI
82
+ run: |
83
+ pip install twine
84
+ twine upload --repository testpypi dist/*
85
+ env:
86
+ TWINE_USERNAME: __token__
87
+ TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }}
88
+ continue-on-error: true
89
+
90
+ publish-pypi:
91
+ name: Publicar en PyPI
92
+ needs: [build, publish-testpypi]
93
+ runs-on: ubuntu-latest
94
+ environment: release
95
+ steps:
96
+ - uses: actions/download-artifact@v4
97
+ with:
98
+ name: dist
99
+ path: dist/
100
+
101
+ - uses: actions/setup-python@v5
102
+ with:
103
+ python-version: "3.12"
104
+
105
+ - name: Publicar en PyPI
106
+ run: |
107
+ pip install twine
108
+ twine upload dist/*
109
+ env:
110
+ TWINE_USERNAME: __token__
111
+ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
112
+
113
+ github-release:
114
+ name: Crear GitHub Release
115
+ needs: publish-pypi
116
+ runs-on: ubuntu-latest
117
+ steps:
118
+ - uses: actions/checkout@v4
119
+
120
+ - uses: actions/download-artifact@v4
121
+ with:
122
+ name: dist
123
+ path: dist/
124
+
125
+ - name: Crear Release
126
+ uses: softprops/action-gh-release@v2
127
+ with:
128
+ generate_release_notes: true
129
+ files: dist/*
130
+ body: |
131
+ ## Instalación
132
+
133
+ ```bash
134
+ pip install lambdaforge==${{ github.ref_name }}
135
+ ```
136
+
137
+ ## Cambios
138
+
139
+ Ver [CHANGELOG.md](https://github.com/blaylopez/lambdaforge/blob/main/CHANGELOG.md) para detalles completos.
@@ -0,0 +1,73 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib64/
14
+ parts/
15
+ sdist/
16
+ var/
17
+ wheels/
18
+ *.egg-info/
19
+ .installed.cfg
20
+ *.egg
21
+ MANIFEST
22
+
23
+ # Virtual environments
24
+ .venv/
25
+ venv/
26
+ env/
27
+ ENV/
28
+
29
+ # Testing
30
+ .pytest_cache/
31
+ .coverage
32
+ .coverage.*
33
+ htmlcov/
34
+ .tox/
35
+ .nox/
36
+ coverage.xml
37
+ *.cover
38
+
39
+ # Type checking
40
+ .mypy_cache/
41
+ .ruff_cache/
42
+
43
+ # IDEs
44
+ .idea/
45
+ .vscode/
46
+ *.swp
47
+ *.swo
48
+ .DS_Store
49
+ Thumbs.db
50
+
51
+ # CDK
52
+ cdk.out/
53
+ cdk.context.json
54
+
55
+ # Lambda
56
+ *.zip
57
+
58
+ # Environment / Secrets
59
+ .env
60
+ .env.local
61
+ .env.*.local
62
+ *.pem
63
+ *.key
64
+ secrets.yml
65
+
66
+ # Distribution
67
+ dist/
68
+ *.tar.gz
69
+ *.whl
70
+
71
+
72
+ # Demo projects (generated, not tracked)
73
+ demos/
@@ -0,0 +1,17 @@
1
+ {
2
+ "enabled": true,
3
+ "name": "Lint on Save",
4
+ "description": "Runs ruff check on saved Python files to catch lint issues immediately",
5
+ "version": "1",
6
+ "when": {
7
+ "type": "fileEdited",
8
+ "patterns": [
9
+ "src/**/*.py",
10
+ "tests/**/*.py"
11
+ ]
12
+ },
13
+ "then": {
14
+ "type": "runCommand",
15
+ "command": "python -m ruff check --fix {file}"
16
+ }
17
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "enabled": true,
3
+ "name": "Run Tests After Task",
4
+ "description": "Runs the test suite after agent completes a task to catch regressions",
5
+ "version": "1",
6
+ "when": {
7
+ "type": "postTaskExecution"
8
+ },
9
+ "then": {
10
+ "type": "runCommand",
11
+ "command": "python -m pytest tests/ -x -q --tb=short 2>&1 | head -30"
12
+ }
13
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "enabled": true,
3
+ "name": "Security Gate for Infra",
4
+ "description": "Reminds the agent to verify security standards before writing to infrastructure, deploy, or bedrock files",
5
+ "version": "1",
6
+ "when": {
7
+ "type": "preToolUse",
8
+ "toolTypes": [
9
+ "write"
10
+ ]
11
+ },
12
+ "then": {
13
+ "type": "askAgent",
14
+ "prompt": "Before writing to this infrastructure or security-sensitive file, verify: 1) No hardcoded credentials or secrets, 2) No shell=True in subprocess calls, 3) No wildcard (*) resource ARNs in IAM policies, 4) Subprocess commands use list format. If all checks pass, proceed with the write."
15
+ }
16
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "enabled": true,
3
+ "name": "Template Standards Check",
4
+ "description": "When a new template file is created, reminds to verify it follows the template steering standards",
5
+ "version": "1",
6
+ "when": {
7
+ "type": "fileCreated",
8
+ "patterns": [
9
+ "templates/**/*"
10
+ ]
11
+ },
12
+ "then": {
13
+ "type": "askAgent",
14
+ "prompt": "A new template file was created. Verify it follows the template steering standards: 1) cookiecutter.json has all required variables (project_name, project_slug, module_name, description, author_name, author_email, runtime, aws_region, memory_mb, timeout_seconds), 2) Handler uses aws-lambda-powertools Logger and Tracer, 3) CDK stack uses ARM64 + X-Ray + log retention + CloudWatch dashboard + Well-Architected tags, 4) .gitignore excludes secrets. Fix any violations."
15
+ }
16
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "enabled": true,
3
+ "name": "Validate Cookiecutter Vars",
4
+ "description": "Validates that cookiecutter.json has all required variables before committing template changes",
5
+ "version": "1",
6
+ "when": {
7
+ "type": "fileEdited",
8
+ "patterns": [
9
+ "templates/**/cookiecutter.json"
10
+ ]
11
+ },
12
+ "then": {
13
+ "type": "askAgent",
14
+ "prompt": "The cookiecutter.json was modified. Verify all required variables are present: project_name, project_slug, module_name, description, author_name, author_email, runtime, aws_region, memory_mb, timeout_seconds. Also verify that any variable referenced in template files (search for {{ cookiecutter. patterns) exists in this JSON. Report any missing variables."
15
+ }
16
+ }
@@ -0,0 +1,77 @@
1
+ # LambdaForge — Overview Specification
2
+
3
+ ## Project Identity
4
+
5
+ - **Name:** LambdaForge
6
+ - **Tagline:** *De cero a Lambda production-ready en 60 segundos, con Kiro specs incluidas.*
7
+ - **Category:** HACKATHONKIRO — Productividad para developers
8
+ - **Version:** 1.0.0
9
+ - **License:** Apache 2.0
10
+
11
+ ## Mission Statement
12
+
13
+ Eliminar las 2-3 horas de boilerplate que toma crear una AWS Lambda "bien hecha" (estructura, tests, IaC, observabilidad, docs). En 60 segundos, un developer tiene una Lambda production-ready con todos los ingredientes que un senior esperaría.
14
+
15
+ ## The Problem We Solve
16
+
17
+ 1. **Boilerplate infinito.** Crear una Lambda "correcta" requiere: handler, tests, IaC, IAM, CloudWatch dashboard, observability, README, .kiro/specs/. Repetitivo y aburrido.
18
+
19
+ 2. **Inconsistencia entre Lambdas.** Cada developer estructura diferente. No hay estándar de equipo.
20
+
21
+ 3. **Fricción con IaC.** CDK es poderoso pero verboso. Los juniors lo evitan.
22
+
23
+ 4. **Well-Architected cuesta.** Lambdas sin observability, sin DLQ, sin X-Ray, sin tags. Las auditorías duelen.
24
+
25
+ 5. **No hay Kiro specs desde el inicio.** Specs se escriben después (nunca). SpecForge los genera retroactivamente, pero LambdaForge los incluye desde el día 0.
26
+
27
+ ## The Solution
28
+
29
+ Una CLI que genera Lambdas production-ready con un comando:
30
+
31
+ ```bash
32
+ lambdaforge new payment-processor \
33
+ --runtime python3.12 \
34
+ --trigger api-gateway \
35
+ --database dynamodb \
36
+ --auth cognito \
37
+ --observability xray
38
+ ```
39
+
40
+ Output:
41
+ - Estructura de proyecto Python completa
42
+ - Tests con `pytest` + `moto` (mocking AWS)
43
+ - AWS CDK stack (JavaScript) con Lambda + IAM + API GW
44
+ - CloudWatch dashboard pre-configurado
45
+ - GitHub Actions workflow (CI/CD)
46
+ - **`.kiro/specs/`** generado proactivamente
47
+ - README profesional
48
+ - Dockerfile para testing local
49
+ - Logging estructurado (JSON)
50
+ - Tracing con X-Ray
51
+ - Cost estimation en el README
52
+
53
+ ## Success Metrics
54
+
55
+ | Métrica | Target | Medición |
56
+ |---|---|---|
57
+ | Tiempo de generación de Lambda | < 60s | Benchmark suite |
58
+ | Tiempo de "a deployed" con un click | < 5 min | `lambdaforge deploy` |
59
+ | Tests generados con coverage | > 80% | Auto-verificación |
60
+ | Templates disponibles | 25+ casos | Catálogo |
61
+ | Líneas de código boilerplate evitadas | > 500 por Lambda | Comparación |
62
+ | Developers adoptan Well-Architected | 100% (forzado) | Tag check |
63
+ | .kiro/specs/ funcionales | 100% (auto-generados) | Kiro load test |
64
+
65
+ ## Stakeholders
66
+
67
+ - **Primary:** Developers creando Lambdas nuevas
68
+ - **Secondary:** Equipos que estandarizan su serverless
69
+ - **Tertiary:** Educadores enseñando AWS
70
+ - **Quaternary:** Open source maintainers publicando Lambdas
71
+
72
+ ## Non-Goals (v1.0)
73
+
74
+ - ❌ No es un framework serverless completo (vs. SAM, SST)
75
+ - ❌ No soporta Step Functions, EventBridge Schemas complejos
76
+ - ❌ No es un debugger de Lambdas (usa SAM local o AWS Toolkit)
77
+ - ❌ No genera Lambdas en otros lenguajes primero (Python primero, luego TS)