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.
- package/README.md +72 -1014
- package/dist/scripts/init.js +512 -238
- package/dist/scripts/init.js.map +1 -1
- package/dist/tool/commands/adopt.d.ts +62 -0
- package/dist/tool/commands/adopt.d.ts.map +1 -0
- package/dist/tool/commands/adopt.js +767 -0
- package/dist/tool/commands/adopt.js.map +1 -0
- package/dist/tool/commands/doctor.js +2 -2
- package/dist/tool/commands/explain.d.ts.map +1 -1
- package/dist/tool/commands/explain.js +88 -0
- package/dist/tool/commands/explain.js.map +1 -1
- package/dist/tool/commands/hash.d.ts +36 -0
- package/dist/tool/commands/hash.d.ts.map +1 -0
- package/dist/tool/commands/hash.js +242 -0
- package/dist/tool/commands/hash.js.map +1 -0
- package/dist/tool/commands/plan.d.ts +53 -0
- package/dist/tool/commands/plan.d.ts.map +1 -1
- package/dist/tool/commands/plan.js +784 -42
- package/dist/tool/commands/plan.js.map +1 -1
- package/dist/tool/questionnaire/composer.d.ts +12 -3
- package/dist/tool/questionnaire/composer.d.ts.map +1 -1
- package/dist/tool/questionnaire/composer.js +133 -20
- package/dist/tool/questionnaire/composer.js.map +1 -1
- package/dist/tool/schema/project-config.d.ts +15 -0
- package/dist/tool/schema/project-config.d.ts.map +1 -0
- package/dist/tool/schema/project-config.js +359 -0
- package/dist/tool/schema/project-config.js.map +1 -0
- package/dist/tool/schema/types.d.ts +57 -1
- package/dist/tool/schema/types.d.ts.map +1 -1
- package/dist/tool/utils/backup.d.ts +23 -0
- package/dist/tool/utils/backup.d.ts.map +1 -0
- package/dist/tool/utils/backup.js +123 -0
- package/dist/tool/utils/backup.js.map +1 -0
- package/dist/tool/utils/gitignore.d.ts +15 -0
- package/dist/tool/utils/gitignore.d.ts.map +1 -0
- package/dist/tool/utils/gitignore.js +41 -0
- package/dist/tool/utils/gitignore.js.map +1 -0
- package/dist/tool/utils/services-export.d.ts +14 -0
- package/dist/tool/utils/services-export.d.ts.map +1 -0
- package/dist/tool/utils/services-export.js +478 -0
- package/dist/tool/utils/services-export.js.map +1 -0
- package/dist/tool/utils/summary.d.ts +69 -0
- package/dist/tool/utils/summary.d.ts.map +1 -0
- package/dist/tool/utils/summary.js +260 -0
- package/dist/tool/utils/summary.js.map +1 -0
- package/docs/README.md +12 -2
- package/docs/adopt.md +196 -0
- package/docs/custom-patches.md +1 -1
- package/docs/discovery-commands.md +55 -3
- package/docs/examples.md +40 -6
- package/docs/filesystem-contract.md +58 -0
- package/docs/hash.md +183 -0
- package/docs/minimal-and-editor.md +1 -1
- package/docs/overlays.md +108 -5
- package/docs/presets-architecture.md +1 -1
- package/docs/presets.md +1 -1
- package/docs/publishing.md +36 -23
- package/docs/security.md +43 -0
- package/docs/specs/001-verbose-plan-graph/checklists/requirements.md +36 -0
- package/docs/specs/001-verbose-plan-graph/contracts/plan-verbose-output.md +96 -0
- package/docs/specs/001-verbose-plan-graph/data-model.md +111 -0
- package/docs/specs/001-verbose-plan-graph/plan.md +127 -0
- package/docs/specs/001-verbose-plan-graph/quickstart.md +106 -0
- package/docs/specs/001-verbose-plan-graph/research.md +100 -0
- package/docs/specs/001-verbose-plan-graph/spec.md +128 -0
- package/docs/specs/001-verbose-plan-graph/tasks.md +223 -0
- package/docs/specs/002-superposition-config-file/checklists/requirements.md +36 -0
- package/docs/specs/002-superposition-config-file/contracts/init-project-config.md +98 -0
- package/docs/specs/002-superposition-config-file/data-model.md +126 -0
- package/docs/specs/002-superposition-config-file/plan.md +208 -0
- package/docs/specs/002-superposition-config-file/quickstart.md +140 -0
- package/docs/specs/002-superposition-config-file/research.md +144 -0
- package/docs/specs/002-superposition-config-file/spec.md +130 -0
- package/docs/specs/002-superposition-config-file/tasks.md +213 -0
- package/docs/team-workflow.md +27 -1
- package/docs/workflows.md +136 -0
- package/overlays/.presets/microservice.yml +32 -6
- package/overlays/.presets/sdd.yml +84 -0
- package/overlays/.presets/web-api.yml +76 -56
- package/overlays/README.md +7 -1
- package/overlays/amp/README.md +70 -0
- package/overlays/amp/devcontainer.patch.json +3 -0
- package/overlays/amp/overlay.yml +15 -0
- package/overlays/amp/setup.sh +21 -0
- package/overlays/amp/verify.sh +21 -0
- package/overlays/claude-code/README.md +83 -0
- package/overlays/claude-code/devcontainer.patch.json +3 -0
- package/overlays/claude-code/overlay.yml +15 -0
- package/overlays/claude-code/setup.sh +21 -0
- package/overlays/claude-code/verify.sh +21 -0
- package/overlays/cloudflared/README.md +190 -0
- package/overlays/cloudflared/devcontainer.patch.json +3 -0
- package/overlays/cloudflared/overlay.yml +15 -0
- package/overlays/cloudflared/setup.sh +49 -0
- package/overlays/cloudflared/verify.sh +21 -0
- package/overlays/direnv/README.md +6 -4
- package/overlays/direnv/setup.sh +0 -12
- package/overlays/gemini-cli/README.md +77 -0
- package/overlays/gemini-cli/devcontainer.patch.json +3 -0
- package/overlays/gemini-cli/overlay.yml +15 -0
- package/overlays/gemini-cli/setup.sh +21 -0
- package/overlays/gemini-cli/verify.sh +21 -0
- package/overlays/grpc-tools/README.md +242 -0
- package/overlays/grpc-tools/devcontainer.patch.json +14 -0
- package/overlays/grpc-tools/overlay.yml +14 -0
- package/overlays/grpc-tools/setup.sh +57 -0
- package/overlays/grpc-tools/verify.sh +47 -0
- package/overlays/keycloak/.env.example +5 -0
- package/overlays/keycloak/README.md +238 -0
- package/overlays/keycloak/devcontainer.patch.json +17 -0
- package/overlays/keycloak/docker-compose.yml +32 -0
- package/overlays/keycloak/overlay.yml +23 -0
- package/overlays/keycloak/verify.sh +54 -0
- package/overlays/mailpit/.env.example +4 -0
- package/overlays/mailpit/README.md +191 -0
- package/overlays/mailpit/devcontainer.patch.json +20 -0
- package/overlays/mailpit/docker-compose.yml +17 -0
- package/overlays/mailpit/overlay.yml +26 -0
- package/overlays/mailpit/verify.sh +52 -0
- package/overlays/ngrok/overlay.yml +2 -1
- package/overlays/opencode/README.md +76 -0
- package/overlays/opencode/devcontainer.patch.json +3 -0
- package/overlays/opencode/overlay.yml +14 -0
- package/overlays/opencode/setup.sh +21 -0
- package/overlays/opencode/verify.sh +21 -0
- package/overlays/python/README.md +51 -35
- package/overlays/python/devcontainer.patch.json +7 -4
- package/overlays/python/setup.sh +50 -23
- package/overlays/python/verify.sh +29 -1
- package/overlays/spec-kit/README.md +181 -0
- package/overlays/spec-kit/devcontainer.patch.json +6 -0
- package/overlays/spec-kit/overlay.yml +19 -0
- package/overlays/spec-kit/setup.sh +45 -0
- package/overlays/spec-kit/verify.sh +33 -0
- package/overlays/windsurf-cli/README.md +69 -0
- package/overlays/windsurf-cli/devcontainer.patch.json +3 -0
- package/overlays/windsurf-cli/overlay.yml +15 -0
- package/overlays/windsurf-cli/setup.sh +21 -0
- package/overlays/windsurf-cli/verify.sh +21 -0
- package/package.json +1 -1
- 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
|
-
#
|
|
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
|
|
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
|
-
|
|
79
|
-
|
|
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
|
-
|
|
86
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
package/overlays/README.md
CHANGED
|
@@ -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
|
|
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,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,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,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: []
|