container-superposition 0.1.3 → 0.1.5

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 (141) hide show
  1. package/README.md +72 -1014
  2. package/dist/scripts/init.js +512 -238
  3. package/dist/scripts/init.js.map +1 -1
  4. package/dist/tool/commands/adopt.d.ts +62 -0
  5. package/dist/tool/commands/adopt.d.ts.map +1 -0
  6. package/dist/tool/commands/adopt.js +767 -0
  7. package/dist/tool/commands/adopt.js.map +1 -0
  8. package/dist/tool/commands/doctor.js +2 -2
  9. package/dist/tool/commands/explain.d.ts.map +1 -1
  10. package/dist/tool/commands/explain.js +88 -0
  11. package/dist/tool/commands/explain.js.map +1 -1
  12. package/dist/tool/commands/hash.d.ts +36 -0
  13. package/dist/tool/commands/hash.d.ts.map +1 -0
  14. package/dist/tool/commands/hash.js +242 -0
  15. package/dist/tool/commands/hash.js.map +1 -0
  16. package/dist/tool/commands/plan.d.ts +53 -0
  17. package/dist/tool/commands/plan.d.ts.map +1 -1
  18. package/dist/tool/commands/plan.js +784 -42
  19. package/dist/tool/commands/plan.js.map +1 -1
  20. package/dist/tool/questionnaire/composer.d.ts +12 -3
  21. package/dist/tool/questionnaire/composer.d.ts.map +1 -1
  22. package/dist/tool/questionnaire/composer.js +133 -20
  23. package/dist/tool/questionnaire/composer.js.map +1 -1
  24. package/dist/tool/schema/project-config.d.ts +15 -0
  25. package/dist/tool/schema/project-config.d.ts.map +1 -0
  26. package/dist/tool/schema/project-config.js +359 -0
  27. package/dist/tool/schema/project-config.js.map +1 -0
  28. package/dist/tool/schema/types.d.ts +57 -1
  29. package/dist/tool/schema/types.d.ts.map +1 -1
  30. package/dist/tool/utils/backup.d.ts +23 -0
  31. package/dist/tool/utils/backup.d.ts.map +1 -0
  32. package/dist/tool/utils/backup.js +123 -0
  33. package/dist/tool/utils/backup.js.map +1 -0
  34. package/dist/tool/utils/gitignore.d.ts +15 -0
  35. package/dist/tool/utils/gitignore.d.ts.map +1 -0
  36. package/dist/tool/utils/gitignore.js +41 -0
  37. package/dist/tool/utils/gitignore.js.map +1 -0
  38. package/dist/tool/utils/services-export.d.ts +14 -0
  39. package/dist/tool/utils/services-export.d.ts.map +1 -0
  40. package/dist/tool/utils/services-export.js +478 -0
  41. package/dist/tool/utils/services-export.js.map +1 -0
  42. package/dist/tool/utils/summary.d.ts +69 -0
  43. package/dist/tool/utils/summary.d.ts.map +1 -0
  44. package/dist/tool/utils/summary.js +260 -0
  45. package/dist/tool/utils/summary.js.map +1 -0
  46. package/docs/README.md +12 -2
  47. package/docs/adopt.md +196 -0
  48. package/docs/custom-patches.md +1 -1
  49. package/docs/discovery-commands.md +55 -3
  50. package/docs/examples.md +40 -6
  51. package/docs/filesystem-contract.md +58 -0
  52. package/docs/hash.md +183 -0
  53. package/docs/minimal-and-editor.md +1 -1
  54. package/docs/overlays.md +108 -5
  55. package/docs/presets-architecture.md +1 -1
  56. package/docs/presets.md +1 -1
  57. package/docs/publishing.md +36 -23
  58. package/docs/security.md +43 -0
  59. package/docs/specs/001-verbose-plan-graph/checklists/requirements.md +36 -0
  60. package/docs/specs/001-verbose-plan-graph/contracts/plan-verbose-output.md +96 -0
  61. package/docs/specs/001-verbose-plan-graph/data-model.md +111 -0
  62. package/docs/specs/001-verbose-plan-graph/plan.md +127 -0
  63. package/docs/specs/001-verbose-plan-graph/quickstart.md +106 -0
  64. package/docs/specs/001-verbose-plan-graph/research.md +100 -0
  65. package/docs/specs/001-verbose-plan-graph/spec.md +128 -0
  66. package/docs/specs/001-verbose-plan-graph/tasks.md +223 -0
  67. package/docs/specs/002-superposition-config-file/checklists/requirements.md +36 -0
  68. package/docs/specs/002-superposition-config-file/contracts/init-project-config.md +98 -0
  69. package/docs/specs/002-superposition-config-file/data-model.md +126 -0
  70. package/docs/specs/002-superposition-config-file/plan.md +208 -0
  71. package/docs/specs/002-superposition-config-file/quickstart.md +140 -0
  72. package/docs/specs/002-superposition-config-file/research.md +144 -0
  73. package/docs/specs/002-superposition-config-file/spec.md +130 -0
  74. package/docs/specs/002-superposition-config-file/tasks.md +213 -0
  75. package/docs/team-workflow.md +27 -1
  76. package/docs/workflows.md +136 -0
  77. package/overlays/.presets/microservice.yml +32 -6
  78. package/overlays/.presets/sdd.yml +84 -0
  79. package/overlays/.presets/web-api.yml +76 -56
  80. package/overlays/README.md +7 -1
  81. package/overlays/amp/README.md +70 -0
  82. package/overlays/amp/devcontainer.patch.json +3 -0
  83. package/overlays/amp/overlay.yml +15 -0
  84. package/overlays/amp/setup.sh +21 -0
  85. package/overlays/amp/verify.sh +21 -0
  86. package/overlays/claude-code/README.md +83 -0
  87. package/overlays/claude-code/devcontainer.patch.json +3 -0
  88. package/overlays/claude-code/overlay.yml +15 -0
  89. package/overlays/claude-code/setup.sh +21 -0
  90. package/overlays/claude-code/verify.sh +21 -0
  91. package/overlays/cloudflared/README.md +190 -0
  92. package/overlays/cloudflared/devcontainer.patch.json +3 -0
  93. package/overlays/cloudflared/overlay.yml +15 -0
  94. package/overlays/cloudflared/setup.sh +49 -0
  95. package/overlays/cloudflared/verify.sh +21 -0
  96. package/overlays/direnv/README.md +6 -4
  97. package/overlays/direnv/setup.sh +0 -12
  98. package/overlays/gemini-cli/README.md +77 -0
  99. package/overlays/gemini-cli/devcontainer.patch.json +3 -0
  100. package/overlays/gemini-cli/overlay.yml +15 -0
  101. package/overlays/gemini-cli/setup.sh +21 -0
  102. package/overlays/gemini-cli/verify.sh +21 -0
  103. package/overlays/grpc-tools/README.md +242 -0
  104. package/overlays/grpc-tools/devcontainer.patch.json +14 -0
  105. package/overlays/grpc-tools/overlay.yml +14 -0
  106. package/overlays/grpc-tools/setup.sh +57 -0
  107. package/overlays/grpc-tools/verify.sh +47 -0
  108. package/overlays/keycloak/.env.example +5 -0
  109. package/overlays/keycloak/README.md +238 -0
  110. package/overlays/keycloak/devcontainer.patch.json +17 -0
  111. package/overlays/keycloak/docker-compose.yml +32 -0
  112. package/overlays/keycloak/overlay.yml +23 -0
  113. package/overlays/keycloak/verify.sh +54 -0
  114. package/overlays/mailpit/.env.example +4 -0
  115. package/overlays/mailpit/README.md +191 -0
  116. package/overlays/mailpit/devcontainer.patch.json +20 -0
  117. package/overlays/mailpit/docker-compose.yml +17 -0
  118. package/overlays/mailpit/overlay.yml +26 -0
  119. package/overlays/mailpit/verify.sh +52 -0
  120. package/overlays/ngrok/overlay.yml +2 -1
  121. package/overlays/opencode/README.md +76 -0
  122. package/overlays/opencode/devcontainer.patch.json +3 -0
  123. package/overlays/opencode/overlay.yml +14 -0
  124. package/overlays/opencode/setup.sh +21 -0
  125. package/overlays/opencode/verify.sh +21 -0
  126. package/overlays/python/README.md +51 -35
  127. package/overlays/python/devcontainer.patch.json +7 -4
  128. package/overlays/python/setup.sh +50 -23
  129. package/overlays/python/verify.sh +29 -1
  130. package/overlays/spec-kit/README.md +181 -0
  131. package/overlays/spec-kit/devcontainer.patch.json +6 -0
  132. package/overlays/spec-kit/overlay.yml +19 -0
  133. package/overlays/spec-kit/setup.sh +45 -0
  134. package/overlays/spec-kit/verify.sh +33 -0
  135. package/overlays/windsurf-cli/README.md +69 -0
  136. package/overlays/windsurf-cli/devcontainer.patch.json +3 -0
  137. package/overlays/windsurf-cli/overlay.yml +15 -0
  138. package/overlays/windsurf-cli/setup.sh +21 -0
  139. package/overlays/windsurf-cli/verify.sh +21 -0
  140. package/package.json +1 -1
  141. package/tool/schema/config.schema.json +138 -9
@@ -12,13 +12,7 @@ tags: [preset, api, web, backend, observability]
12
12
  # Overlays to select
13
13
  selects:
14
14
  # Always included
15
- required:
16
- - postgres
17
- - redis
18
- - otel-collector
19
- - prometheus
20
- - grafana
21
- - loki
15
+ required: []
22
16
 
23
17
  # User makes choices
24
18
  userChoice:
@@ -28,31 +22,70 @@ selects:
28
22
  options: [dotnet, nodejs, python, go, java]
29
23
  defaultOption: nodejs
30
24
 
25
+ # Parameterized slots - users can customize these without micro-managing individual overlays
26
+ parameters:
27
+ database:
28
+ description: 'Primary data store'
29
+ default: postgres
30
+ options:
31
+ - id: postgres
32
+ overlays: [postgres]
33
+ description: 'PostgreSQL relational database'
34
+ - id: mongodb
35
+ overlays: [mongodb]
36
+ description: 'MongoDB document database'
37
+ - id: mysql
38
+ overlays: [mysql]
39
+ description: 'MySQL relational database'
40
+ - id: none
41
+ overlays: []
42
+ description: 'No database (manage separately)'
43
+
44
+ cache:
45
+ description: 'In-memory cache'
46
+ default: redis
47
+ options:
48
+ - id: redis
49
+ overlays: [redis]
50
+ description: 'Redis cache and session store'
51
+ - id: none
52
+ overlays: []
53
+ description: 'No cache'
54
+
55
+ broker:
56
+ description: 'Message broker (optional)'
57
+ default: none
58
+ options:
59
+ - id: rabbitmq
60
+ overlays: [rabbitmq]
61
+ description: 'RabbitMQ AMQP message broker'
62
+ - id: nats
63
+ overlays: [nats]
64
+ description: 'NATS lightweight messaging'
65
+ - id: redpanda
66
+ overlays: [redpanda]
67
+ description: 'Redpanda Kafka-compatible streaming'
68
+ - id: none
69
+ overlays: []
70
+ description: 'No message broker'
71
+
72
+ observability:
73
+ description: 'Monitoring and observability stack'
74
+ default: standard
75
+ options:
76
+ - id: minimal
77
+ overlays: []
78
+ description: 'No observability tools'
79
+ - id: standard
80
+ overlays: [prometheus, grafana]
81
+ description: 'Metrics and dashboards'
82
+ - id: full
83
+ overlays: [otel-collector, prometheus, grafana, loki]
84
+ description: 'Full stack - metrics, logs, and traces'
85
+
31
86
  # Glue configuration - integration helpers
32
87
  glueConfig:
33
- # Pre-configured environment variables
34
- environment:
35
- # Database connection
36
- DATABASE_URL: 'postgresql://postgres:postgres@postgres:5432/myapp'
37
- POSTGRES_HOST: 'postgres'
38
- POSTGRES_PORT: '5432'
39
- POSTGRES_DB: 'myapp'
40
- POSTGRES_USER: 'postgres'
41
- POSTGRES_PASSWORD: 'postgres'
42
-
43
- # Redis connection
44
- REDIS_URL: 'redis://redis:6379'
45
- REDIS_HOST: 'redis'
46
- REDIS_PORT: '6379'
47
-
48
- # OpenTelemetry configuration
49
- OTEL_EXPORTER_OTLP_ENDPOINT: 'http://otel-collector:4317'
50
- OTEL_SERVICE_NAME: 'api-service'
51
- OTEL_METRICS_EXPORTER: 'otlp'
52
- OTEL_TRACES_EXPORTER: 'otlp'
53
- OTEL_LOGS_EXPORTER: 'otlp'
54
-
55
- # Suggested port mappings
88
+ # Suggested port mappings (actual ports depend on chosen overlays)
56
89
  portMappings:
57
90
  api: 8000
58
91
  grafana: 3000
@@ -62,40 +95,28 @@ glueConfig:
62
95
  readme: |
63
96
  ## Web API Stack
64
97
 
65
- This devcontainer is configured with a complete API development stack:
66
-
67
- ### Services
68
-
69
- - **PostgreSQL**: Primary database (port 5432)
70
- - **Redis**: Cache and session store (port 6379)
71
- - **OpenTelemetry Collector**: Telemetry aggregation (ports 4317, 4318)
72
- - **Prometheus**: Metrics storage (port 9090)
73
- - **Grafana**: Observability dashboard (port 3000)
74
- - **Loki**: Log aggregation (port 3100)
98
+ This devcontainer is configured for web API development. The exact services depend
99
+ on the parameters you chose (database, cache, broker, observability).
75
100
 
76
101
  ### Connection Strings
77
102
 
78
- ```bash
79
- # PostgreSQL
80
- DATABASE_URL="postgresql://postgres:postgres@postgres:5432/myapp"
81
-
82
- # Redis
83
- REDIS_URL="redis://redis:6379"
103
+ Connection strings for each service are defined in `.devcontainer/.env.example`.
104
+ Copy that file to `.env` and adjust values as needed:
84
105
 
85
- # OpenTelemetry
86
- OTEL_EXPORTER_OTLP_ENDPOINT="http://otel-collector:4317"
106
+ ```bash
107
+ cd .devcontainer
108
+ cp .env.example .env
87
109
  ```
88
110
 
89
111
  ### Quick Start
90
112
 
91
- 1. Start your API on port 8000 (configured in this preset)
92
- 2. Access Grafana at http://localhost:3000 (admin/admin)
93
- 3. View metrics in Prometheus at http://localhost:9090
94
- 4. Check logs in Loki via Grafana
113
+ 1. Start your API (default suggested port: 8000)
114
+ 2. Access Grafana at http://localhost:3000 (admin/admin) — if observability was enabled
115
+ 3. View metrics in Prometheus at http://localhost:9090 — if observability was enabled
95
116
 
96
117
  ### Health Checks
97
118
 
98
- All services include health checks. Verify with:
119
+ Verify all services are running:
99
120
 
100
121
  ```bash
101
122
  docker-compose ps
@@ -103,7 +124,6 @@ glueConfig:
103
124
 
104
125
  ### Next Steps
105
126
 
106
- - Configure your API to use the DATABASE_URL and REDIS_URL
107
- - Add OpenTelemetry SDK to your application
127
+ - Configure your API to use the connection strings from `.env`
128
+ - Add OpenTelemetry SDK to your application (if full observability was selected)
108
129
  - Create custom Grafana dashboards for your API metrics
109
- - Set up log forwarding to Loki
@@ -55,7 +55,13 @@ Each overlay directory contains:
55
55
  - **docker-in-docker** - Docker daemon inside container (conflicts with docker-sock)
56
56
  - **docker-sock** - Docker socket mounting (conflicts with docker-in-docker)
57
57
  - **playwright** - Browser automation with Chromium installed
58
- - **codex** - AI-powered code assistant
58
+ - **codex** - OpenAI Codex CLI for AI-powered code generation and assistance
59
+ - **spec-kit** - Specify CLI for Spec-Driven Development with any AI coding agent
60
+ - **claude-code** - Anthropic Claude Code CLI for AI-powered development assistance
61
+ - **gemini-cli** - Google Gemini CLI for AI-powered development assistance
62
+ - **amp** - Sourcegraph Amp CLI for AI-powered code generation and assistance
63
+ - **windsurf-cli** - Codeium Windsurf CLI for AI-powered development assistance
64
+ - **opencode** - opencode AI coding agent for terminal-based development assistance
59
65
 
60
66
  ## Environment Variables
61
67
 
@@ -0,0 +1,70 @@
1
+ # Amp Overlay
2
+
3
+ Adds the Sourcegraph Amp CLI (`amp`) for AI-powered code generation and development assistance.
4
+
5
+ ## Features
6
+
7
+ - **Amp CLI** — Sourcegraph's AI coding agent for the terminal
8
+ - **Codebase-aware** — Understands your entire repository context
9
+
10
+ ## What is Amp?
11
+
12
+ Amp is Sourcegraph's AI coding agent that works directly in your terminal with deep codebase understanding:
13
+
14
+ - **Code generation** — Generate new features from natural language
15
+ - **Codebase context** — Indexed understanding of your entire codebase
16
+ - **Multi-file edits** — Make consistent changes across the project
17
+ - **Task execution** — Autonomous multi-step development tasks
18
+
19
+ ## How It Works
20
+
21
+ This overlay installs `@sourcegraph/amp` globally via npm, making the `amp` command available in your devcontainer.
22
+
23
+ ## Common Commands
24
+
25
+ ```bash
26
+ # Start an interactive session
27
+ amp
28
+
29
+ # Check version
30
+ amp --version
31
+ ```
32
+
33
+ ## Use Cases
34
+
35
+ - **Feature development** — Describe features, Amp implements them across the codebase
36
+ - **Large refactors** — Make consistent changes across many files
37
+ - **Code review** — AI-assisted code analysis
38
+ - **Spec-Driven Development** — Works with `spec-kit` overlay via `specify init --ai amp`
39
+
40
+ **Integrates well with:**
41
+
42
+ - `spec-kit` — Use Amp with the SDD workflow
43
+ - `nodejs` — Required for installation
44
+ - `git-helpers` — Git integration for AI-generated code
45
+
46
+ ## Configuration
47
+
48
+ Authenticate with your Sourcegraph account:
49
+
50
+ ```bash
51
+ amp auth
52
+ ```
53
+
54
+ ## Verification
55
+
56
+ ```bash
57
+ bash .devcontainer/scripts/verify-amp.sh
58
+ ```
59
+
60
+ ## References
61
+
62
+ - [Amp by Sourcegraph](https://sourcegraph.com/amp)
63
+ - [Sourcegraph Platform](https://sourcegraph.com/)
64
+
65
+ **Related Overlays:**
66
+
67
+ - `spec-kit` — Spec-Driven Development with Amp as the AI agent
68
+ - `codex` — OpenAI Codex CLI (alternative AI assistant)
69
+ - `claude-code` — Anthropic Claude Code (alternative AI assistant)
70
+ - `nodejs` — Required for npm-based installation
@@ -0,0 +1,3 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json"
3
+ }
@@ -0,0 +1,15 @@
1
+ id: amp
2
+ name: Amp
3
+ description: Sourcegraph Amp CLI for AI-powered code generation and assistance
4
+ category: dev
5
+ supports: []
6
+ requires:
7
+ - nodejs
8
+ suggests: []
9
+ conflicts: []
10
+ tags:
11
+ - dev
12
+ - ai
13
+ - amp
14
+ - sourcegraph
15
+ ports: []
@@ -0,0 +1,21 @@
1
+ #!/bin/bash
2
+ # amp setup script - Install Sourcegraph Amp CLI
3
+
4
+ set -e
5
+
6
+ echo "📦 Installing Sourcegraph Amp CLI..."
7
+
8
+ # Install @sourcegraph/amp globally
9
+ npm install -g @sourcegraph/amp
10
+
11
+ # Verify installation
12
+ if command -v amp &>/dev/null; then
13
+ echo "✓ Amp CLI installed successfully: $(amp --version 2>/dev/null || echo 'installed')"
14
+ else
15
+ echo "✗ Amp CLI installation failed"
16
+ exit 1
17
+ fi
18
+
19
+ echo "✓ amp setup complete"
20
+ echo "ℹ️ Sourcegraph Amp: https://sourcegraph.com/amp"
21
+ echo "ℹ️ Run 'amp --help' to get started"
@@ -0,0 +1,21 @@
1
+ #!/bin/bash
2
+ # amp overlay verification script
3
+
4
+ set -e
5
+
6
+ echo "🔍 Verifying amp overlay setup..."
7
+
8
+ # Check if amp CLI is installed
9
+ if ! command -v amp &>/dev/null; then
10
+ echo "✗ amp CLI is not installed or not in PATH"
11
+ exit 1
12
+ fi
13
+
14
+ echo "✓ amp CLI is installed: $(amp --version 2>/dev/null || echo 'installed')"
15
+
16
+ echo ""
17
+ echo "✅ amp overlay verification complete!"
18
+ echo ""
19
+ echo "💡 Tips:"
20
+ echo " - Run 'amp --help' to see available commands"
21
+ echo " - Authenticate with your Sourcegraph account"
@@ -0,0 +1,83 @@
1
+ # Claude Code Overlay
2
+
3
+ Adds the Anthropic Claude Code CLI (`claude`) for AI-powered development assistance directly in the terminal.
4
+
5
+ ## Features
6
+
7
+ - **Claude Code CLI** — Interactive AI coding assistant from Anthropic
8
+ - **Terminal-first workflow** — Agentic coding directly from the command line
9
+
10
+ ## What is Claude Code?
11
+
12
+ Claude Code is Anthropic's agentic coding tool that lives in the terminal. It understands your codebase and helps you code faster through natural conversation and autonomous task execution:
13
+
14
+ - **Code generation** — Generate new features and components
15
+ - **Code review** — Get feedback on your code
16
+ - **Debugging** — Identify and fix issues
17
+ - **Refactoring** — Improve existing code
18
+ - **Testing** — Write and run tests
19
+
20
+ ## How It Works
21
+
22
+ This overlay installs `@anthropic-ai/claude-code` globally via npm, making the `claude` command available in your devcontainer.
23
+
24
+ ## Common Commands
25
+
26
+ ```bash
27
+ # Start an interactive session
28
+ claude
29
+
30
+ # Ask a one-off question
31
+ claude "explain this function"
32
+
33
+ # Authenticate with your Anthropic account
34
+ claude auth
35
+
36
+ # Check current version
37
+ claude --version
38
+ ```
39
+
40
+ ## Use Cases
41
+
42
+ - **Feature development** — Describe what you want to build, Claude implements it
43
+ - **Code review** — Get AI feedback on pull requests or code changes
44
+ - **Learning** — Understand unfamiliar codebases or concepts
45
+ - **Refactoring** — Improve code quality with AI assistance
46
+ - **Spec-Driven Development** — Works with the `spec-kit` overlay via `specify init --ai claude`
47
+
48
+ **Integrates well with:**
49
+
50
+ - `spec-kit` — Use Claude Code with the SDD workflow
51
+ - `nodejs` — Required for installation
52
+ - `git-helpers` — Git integration for AI-generated code
53
+ - `pre-commit` — Quality gates for AI-generated code
54
+
55
+ ## Configuration
56
+
57
+ Authentication is managed via the Anthropic API key:
58
+
59
+ ```bash
60
+ # Set your API key
61
+ export ANTHROPIC_API_KEY=your-api-key
62
+
63
+ # Or authenticate interactively
64
+ claude auth
65
+ ```
66
+
67
+ ## Verification
68
+
69
+ ```bash
70
+ bash .devcontainer/scripts/verify-claude-code.sh
71
+ ```
72
+
73
+ ## References
74
+
75
+ - [Claude Code Documentation](https://docs.anthropic.com/en/docs/claude-code)
76
+ - [Anthropic Platform](https://console.anthropic.com/)
77
+
78
+ **Related Overlays:**
79
+
80
+ - `spec-kit` — Spec-Driven Development with Claude as the AI agent
81
+ - `codex` — OpenAI Codex CLI (alternative AI assistant)
82
+ - `gemini-cli` — Google Gemini CLI (alternative AI assistant)
83
+ - `nodejs` — Required for npm-based installation
@@ -0,0 +1,3 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json"
3
+ }
@@ -0,0 +1,15 @@
1
+ id: claude-code
2
+ name: Claude Code
3
+ description: Anthropic Claude Code CLI for AI-powered development assistance
4
+ category: dev
5
+ supports: []
6
+ requires:
7
+ - nodejs
8
+ suggests: []
9
+ conflicts: []
10
+ tags:
11
+ - dev
12
+ - ai
13
+ - claude
14
+ - anthropic
15
+ ports: []
@@ -0,0 +1,21 @@
1
+ #!/bin/bash
2
+ # claude-code setup script - Install Anthropic Claude Code CLI
3
+
4
+ set -e
5
+
6
+ echo "📦 Installing Anthropic Claude Code CLI..."
7
+
8
+ # Install @anthropic-ai/claude-code globally
9
+ npm install -g @anthropic-ai/claude-code
10
+
11
+ # Verify installation
12
+ if command -v claude &>/dev/null; then
13
+ echo "✓ Claude Code CLI installed successfully: $(claude --version 2>/dev/null || echo 'installed')"
14
+ else
15
+ echo "✗ Claude Code CLI installation failed"
16
+ exit 1
17
+ fi
18
+
19
+ echo "✓ claude-code setup complete"
20
+ echo "ℹ️ Anthropic Claude Code: https://docs.anthropic.com/en/docs/claude-code"
21
+ echo "ℹ️ Run 'claude --help' to get started"
@@ -0,0 +1,21 @@
1
+ #!/bin/bash
2
+ # claude-code overlay verification script
3
+
4
+ set -e
5
+
6
+ echo "🔍 Verifying claude-code overlay setup..."
7
+
8
+ # Check if claude CLI is installed
9
+ if ! command -v claude &>/dev/null; then
10
+ echo "✗ claude CLI is not installed or not in PATH"
11
+ exit 1
12
+ fi
13
+
14
+ echo "✓ claude CLI is installed: $(claude --version 2>/dev/null || echo 'installed')"
15
+
16
+ echo ""
17
+ echo "✅ claude-code overlay verification complete!"
18
+ echo ""
19
+ echo "💡 Tips:"
20
+ echo " - Run 'claude --help' to see available commands"
21
+ echo " - Authenticate with: claude auth"
@@ -0,0 +1,190 @@
1
+ # Cloudflared Overlay
2
+
3
+ Cloudflare Tunnel for securely exposing local services to the internet — no port forwarding or firewall configuration required.
4
+
5
+ ## Features
6
+
7
+ - **cloudflared** - Cloudflare's tunneling daemon
8
+ - **No account required** - Anonymous tunnels work immediately
9
+ - **Free** - Generous free tier with no connection limits
10
+ - **Named tunnels** - Persistent URLs with a Cloudflare account (optional)
11
+ - **HTTPS by default** - All tunnels use TLS automatically
12
+
13
+ ## How It Works
14
+
15
+ `cloudflared` creates an outbound-only connection from your dev container to Cloudflare's edge network. Incoming requests are routed through Cloudflare to your local service — no inbound firewall rules needed.
16
+
17
+ ## Quick Start
18
+
19
+ ```bash
20
+ # Expose your local web server (no account required)
21
+ cloudflared tunnel --url http://localhost:3000
22
+
23
+ # Output:
24
+ # +--------------------------------------------------------------------------------------------+
25
+ # | Your quick Tunnel has been created! Visit it at (it may take some time to be reachable): |
26
+ # | https://random-words-here.trycloudflare.com |
27
+ # +--------------------------------------------------------------------------------------------+
28
+ ```
29
+
30
+ ## Common Commands
31
+
32
+ ### Anonymous Tunnel (No Account)
33
+
34
+ ```bash
35
+ # HTTP service
36
+ cloudflared tunnel --url http://localhost:3000
37
+
38
+ # HTTPS service (pass through TLS)
39
+ cloudflared tunnel --url https://localhost:8443
40
+
41
+ # Custom local port
42
+ cloudflared tunnel --url http://localhost:8080
43
+ ```
44
+
45
+ ### Named Tunnel (Requires Cloudflare Account)
46
+
47
+ ```bash
48
+ # 1. Log in to Cloudflare
49
+ cloudflared login
50
+
51
+ # 2. Create a named tunnel
52
+ cloudflared tunnel create my-dev-tunnel
53
+
54
+ # 3. Route traffic to a domain you own
55
+ cloudflared tunnel route dns my-dev-tunnel dev.yourdomain.com
56
+
57
+ # 4. Run the tunnel
58
+ cloudflared tunnel run my-dev-tunnel
59
+
60
+ # Run with a specific URL
61
+ cloudflared tunnel --url http://localhost:3000 run my-dev-tunnel
62
+ ```
63
+
64
+ ### Configuration File
65
+
66
+ Create `~/.cloudflared/config.yml` for persistent configuration:
67
+
68
+ ```yaml
69
+ tunnel: my-dev-tunnel
70
+ credentials-file: /home/user/.cloudflared/<tunnel-id>.json
71
+
72
+ ingress:
73
+ - hostname: dev.yourdomain.com
74
+ service: http://localhost:3000
75
+ - hostname: api.yourdomain.com
76
+ service: http://localhost:8080
77
+ - service: http_status:404
78
+ ```
79
+
80
+ ```bash
81
+ # Run using config file
82
+ cloudflared tunnel run
83
+ ```
84
+
85
+ ### Status and Diagnostics
86
+
87
+ ```bash
88
+ # Check version
89
+ cloudflared --version
90
+
91
+ # List your tunnels (requires login)
92
+ cloudflared tunnel list
93
+
94
+ # Get tunnel info
95
+ cloudflared tunnel info my-dev-tunnel
96
+ ```
97
+
98
+ ## Use Cases
99
+
100
+ - **Webhook testing** - Receive webhooks from GitHub, Stripe, Twilio, etc.
101
+ - **Mobile device testing** - Test your app on real devices without complex setup
102
+ - **Demo sharing** - Share work-in-progress with clients or colleagues
103
+ - **OAuth callbacks** - Test OAuth flows that require a public redirect URI
104
+ - **Long-running tunnels** - More stable than temporary ngrok tunnels
105
+
106
+ ## Webhook Testing Examples
107
+
108
+ ### GitHub Webhooks
109
+
110
+ ```bash
111
+ # 1. Start tunnel
112
+ cloudflared tunnel --url http://localhost:3000
113
+
114
+ # 2. Copy the *.trycloudflare.com URL
115
+ # 3. Add webhook in GitHub: Settings → Webhooks → Add webhook
116
+ # Payload URL: https://random-words.trycloudflare.com/webhook
117
+ ```
118
+
119
+ ### Stripe Webhooks
120
+
121
+ ```bash
122
+ # Start tunnel
123
+ cloudflared tunnel --url http://localhost:4242
124
+
125
+ # Configure Stripe webhook:
126
+ # Dashboard → Developers → Webhooks → Add endpoint
127
+ # URL: https://random-words.trycloudflare.com/stripe/webhook
128
+ ```
129
+
130
+ ## Benefits vs ngrok
131
+
132
+ | Feature | Cloudflared (this overlay) | ngrok |
133
+ | -------------------------- | -------------------------- | --------------------- |
134
+ | **Account required** | No (anonymous tunnels) | Yes |
135
+ | **Free tier limits** | No limits (anonymous) | 40 connections/minute |
136
+ | **Persistent URL (free)** | No (random per session) | No |
137
+ | **Named tunnels** | Yes (with account) | Yes (paid) |
138
+ | **Traffic inspector UI** | No | Yes (port 4040) |
139
+ | **Cloudflare integration** | ✅ Native | No |
140
+ | **Connection stability** | Very stable | Good |
141
+
142
+ ## Security Considerations
143
+
144
+ ⚠️ When exposing local services to the internet:
145
+
146
+ - Cloudflared exposes your local service to public internet traffic
147
+ - Use HTTPS endpoints when possible
148
+ - Do not expose services with sensitive data without authentication
149
+ - Anonymous tunnels are not persistent — URL changes each session
150
+
151
+ ## Troubleshooting
152
+
153
+ ### Tunnel not starting
154
+
155
+ ```bash
156
+ # Check cloudflared version
157
+ cloudflared --version
158
+
159
+ # Run with verbose logging
160
+ cloudflared tunnel --url http://localhost:3000 --loglevel debug
161
+ ```
162
+
163
+ ### Connection refused
164
+
165
+ Ensure your local service is running and listening on the specified port:
166
+
167
+ ```bash
168
+ # Check if service is listening
169
+ curl http://localhost:3000
170
+ ```
171
+
172
+ ### Named tunnel errors
173
+
174
+ ```bash
175
+ # Re-authenticate
176
+ cloudflared login
177
+
178
+ # List tunnels to verify it exists
179
+ cloudflared tunnel list
180
+ ```
181
+
182
+ ## References
183
+
184
+ - [Cloudflare Tunnel Documentation](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/)
185
+ - [cloudflared GitHub](https://github.com/cloudflare/cloudflared)
186
+ - [Cloudflare Free Tunnel Guide](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/do-more-with-tunnels/trycloudflare/)
187
+
188
+ **Related Overlays:**
189
+
190
+ - `ngrok` - Alternative tunneling tool (conflicts with this overlay)
@@ -0,0 +1,3 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json"
3
+ }
@@ -0,0 +1,15 @@
1
+ id: cloudflared
2
+ name: Cloudflared
3
+ description: Cloudflare Tunnel for securely exposing local services to the internet
4
+ category: dev
5
+ supports: []
6
+ requires: []
7
+ suggests: []
8
+ conflicts:
9
+ - ngrok
10
+ tags:
11
+ - dev
12
+ - tunneling
13
+ - proxy
14
+ - cloudflare
15
+ ports: []