claudepod 1.1.1 → 1.2.1
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/.devcontainer/.env +18 -0
- package/.devcontainer/CHANGELOG.md +68 -0
- package/.devcontainer/CLAUDE.md +100 -0
- package/.devcontainer/README.md +220 -0
- package/.devcontainer/config/main-system-prompt.md +118 -0
- package/.devcontainer/config/settings.json +41 -0
- package/.devcontainer/devcontainer.json +71 -113
- package/.devcontainer/features/README.md +113 -0
- package/.devcontainer/features/ast-grep/README.md +24 -0
- package/.devcontainer/features/ast-grep/devcontainer-feature.json +24 -0
- package/.devcontainer/features/ast-grep/install.sh +51 -0
- package/.devcontainer/features/ccstatusline/README.md +296 -0
- package/.devcontainer/features/ccstatusline/devcontainer-feature.json +19 -0
- package/.devcontainer/features/ccstatusline/install.sh +290 -0
- package/.devcontainer/features/ccusage/README.md +205 -0
- package/.devcontainer/features/ccusage/devcontainer-feature.json +38 -0
- package/.devcontainer/features/ccusage/install.sh +132 -0
- package/.devcontainer/features/claude-code/README.md +498 -0
- package/.devcontainer/features/claude-code/config/settings.json +36 -0
- package/.devcontainer/features/claude-code/config/system-prompt.md +118 -0
- package/.devcontainer/features/claude-code/config/world-building-sp.md +1432 -0
- package/.devcontainer/features/claude-code/devcontainer-feature.json +42 -0
- package/.devcontainer/features/claude-code/install.sh +466 -0
- package/.devcontainer/features/claude-monitor/README.md +74 -0
- package/.devcontainer/features/claude-monitor/devcontainer-feature.json +38 -0
- package/.devcontainer/features/claude-monitor/install.sh +99 -0
- package/.devcontainer/features/lsp-servers/README.md +85 -0
- package/.devcontainer/features/lsp-servers/devcontainer-feature.json +34 -0
- package/.devcontainer/features/lsp-servers/install.sh +92 -0
- package/.devcontainer/features/mcp-qdrant/CHANGES.md +399 -0
- package/.devcontainer/features/mcp-qdrant/README.md +474 -0
- package/.devcontainer/features/mcp-qdrant/devcontainer-feature.json +57 -0
- package/.devcontainer/features/mcp-qdrant/install.sh +295 -0
- package/.devcontainer/features/mcp-qdrant/poststart-hook.sh +129 -0
- package/.devcontainer/features/mcp-reasoner/README.md +177 -0
- package/.devcontainer/features/mcp-reasoner/devcontainer-feature.json +20 -0
- package/.devcontainer/features/mcp-reasoner/install.sh +177 -0
- package/.devcontainer/features/mcp-reasoner/poststart-hook.sh +67 -0
- package/.devcontainer/features/splitrail/README.md +140 -0
- package/.devcontainer/features/splitrail/devcontainer-feature.json +34 -0
- package/.devcontainer/features/splitrail/install.sh +129 -0
- package/.devcontainer/features/tree-sitter/README.md +138 -0
- package/.devcontainer/features/tree-sitter/devcontainer-feature.json +52 -0
- package/.devcontainer/features/tree-sitter/install.sh +173 -0
- package/.devcontainer/scripts/setup-aliases.sh +52 -0
- package/.devcontainer/scripts/setup-config.sh +28 -0
- package/.devcontainer/scripts/setup-irie-claude.sh +32 -0
- package/.devcontainer/scripts/setup-lsp.sh +20 -0
- package/.devcontainer/scripts/setup-plugins.sh +31 -0
- package/.devcontainer/scripts/setup.sh +60 -0
- package/README.md +163 -177
- package/package.json +5 -9
- package/setup.js +2 -2
- package/.devcontainer/config/claude/mcp.json +0 -77
- package/.devcontainer/config/claude/mcp.json.backup +0 -77
- package/.devcontainer/config/claude/mcp.json.template +0 -118
- package/.devcontainer/config/claude/output-styles/strict-development.md +0 -158
- package/.devcontainer/config/claude/settings.json +0 -10
- package/.devcontainer/config/claude/system-prompt.md +0 -3
- package/.devcontainer/config/searxng/ods_config.json +0 -16
- package/.devcontainer/config/searxng/searxng_env_template +0 -71
- package/.devcontainer/config/serena/serena_config.yml +0 -72
- package/.devcontainer/config/taskmaster/config.json +0 -37
- package/.devcontainer/ods_config.json +0 -21
- package/.devcontainer/post-create.sh +0 -1077
- package/.devcontainer/post-start.sh +0 -551
- package/.devcontainer/sanitize-system-prompt.sh +0 -31
- package/.devcontainer/scripts/config/claude-core.sh +0 -210
- package/.devcontainer/scripts/config/searxng.sh +0 -252
- package/.devcontainer/scripts/config/serena.sh +0 -47
- package/.devcontainer/scripts/config/taskmaster.sh +0 -41
- package/.devcontainer/scripts/generate-mcp-config.js +0 -205
- package/.devcontainer/scripts/install/claude-code.sh +0 -112
- package/.devcontainer/scripts/shell/zsh-config.sh +0 -271
- package/.devcontainer/scripts/utils.sh +0 -44
- package/.devcontainer/setup-zsh.sh +0 -234
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# ClaudePod Environment Configuration
|
|
2
|
+
|
|
3
|
+
# Paths
|
|
4
|
+
CLAUDE_CONFIG_DIR=/workspaces/.claude
|
|
5
|
+
# CONFIG_SOURCE_DIR is derived from script location; uncomment to override:
|
|
6
|
+
# CONFIG_SOURCE_DIR=/custom/path/to/config
|
|
7
|
+
|
|
8
|
+
# Setup: copy config files to CLAUDE_CONFIG_DIR
|
|
9
|
+
SETUP_CONFIG=true
|
|
10
|
+
|
|
11
|
+
# Setup: overwrite existing config files (false = skip if exists)
|
|
12
|
+
OVERWRITE_CONFIG=true
|
|
13
|
+
|
|
14
|
+
# Setup: add cc alias to shell rc files
|
|
15
|
+
SETUP_ALIASES=true
|
|
16
|
+
|
|
17
|
+
# Setup: install official Anthropic plugins
|
|
18
|
+
SETUP_PLUGINS=true
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# ClaudePod Devcontainer Changelog
|
|
2
|
+
|
|
3
|
+
## [2025-01-19] Documentation & GitHub CLI Persistence
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- **README.md**: Comprehensive documentation including:
|
|
7
|
+
- Prerequisites and quick start guide
|
|
8
|
+
- GitHub CLI authentication instructions (interactive and token-based)
|
|
9
|
+
- Available tools reference tables
|
|
10
|
+
- Configuration guide
|
|
11
|
+
- Essential gotchas
|
|
12
|
+
- **CLAUDE.md**: Development guide for Claude Code with:
|
|
13
|
+
- Directory structure overview
|
|
14
|
+
- Key configuration files reference
|
|
15
|
+
- Command reference
|
|
16
|
+
- Feature development guide
|
|
17
|
+
- Setup scripts documentation
|
|
18
|
+
- **GitHub CLI Credential Persistence**: Added `GH_CONFIG_DIR=/workspaces/.gh` to `remoteEnv` so credentials survive container rebuilds
|
|
19
|
+
|
|
20
|
+
### Files Created
|
|
21
|
+
- `/workspaces/.devcontainer/README.md`
|
|
22
|
+
- `/workspaces/.devcontainer/CLAUDE.md`
|
|
23
|
+
|
|
24
|
+
### Files Modified
|
|
25
|
+
- `/workspaces/.devcontainer/devcontainer.json` - Added `GH_CONFIG_DIR` environment variable
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## [2025-01-19] Configuration Updates
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
- **GitHub CLI**: Added `ghcr.io/devcontainers/features/github-cli:1` feature for GitHub operations
|
|
33
|
+
- **Official Anthropic Plugins**: New `setup-plugins.sh` script installs 7 official plugins:
|
|
34
|
+
- `@anthropics/claude-plugins-official/frontend-design`
|
|
35
|
+
- `@anthropics/claude-plugins-official/code-review`
|
|
36
|
+
- `@anthropics/claude-plugins-official/commit-commands`
|
|
37
|
+
- `@anthropics/claude-plugins-official/pr-review-toolkit`
|
|
38
|
+
- `@anthropics/claude-plugins-official/typescript-lsp`
|
|
39
|
+
- `@anthropics/claude-plugins-official/pyright-lsp`
|
|
40
|
+
- `@anthropics/claude-plugins-official/code-simplifier`
|
|
41
|
+
- **SETUP_PLUGINS** environment variable to control plugin installation
|
|
42
|
+
|
|
43
|
+
### Changed
|
|
44
|
+
- **Plan Mode Default**: Changed `defaultMode` from `"dontAsk"` to `"plan"` in settings.json
|
|
45
|
+
- **cc Command**: Replaced simple alias with smart function that:
|
|
46
|
+
- Checks for `.claude/system-prompt.md` in current directory
|
|
47
|
+
- Auto-creates from `/workspaces/.devcontainer/config/main-system-prompt.md` if missing
|
|
48
|
+
- Enables per-project system prompt customization
|
|
49
|
+
|
|
50
|
+
### Removed
|
|
51
|
+
- **Specwright**: Completely removed (setup script, aliases, plugin files, ORCHESTRATOR.md)
|
|
52
|
+
|
|
53
|
+
### Files Modified
|
|
54
|
+
- `/workspaces/.devcontainer/devcontainer.json` - Added GitHub CLI feature
|
|
55
|
+
- `/workspaces/.devcontainer/config/settings.json` - Set defaultMode to plan
|
|
56
|
+
- `/workspaces/.devcontainer/scripts/setup-aliases.sh` - Replaced cc alias with function
|
|
57
|
+
- `/workspaces/.devcontainer/.env` - Removed specwright, added plugins
|
|
58
|
+
- `/workspaces/.devcontainer/scripts/setup.sh` - Removed specwright, added setup-plugins.sh
|
|
59
|
+
|
|
60
|
+
### Files Deleted
|
|
61
|
+
- `/workspaces/.devcontainer/scripts/setup-specwright.sh`
|
|
62
|
+
- `/workspaces/.claude/ORCHESTRATOR.md`
|
|
63
|
+
- `/workspaces/.claude/plugins/marketplaces/specwright-marketplace/`
|
|
64
|
+
- `/workspaces/.claude/plugins/cache/specwright-marketplace/`
|
|
65
|
+
|
|
66
|
+
### Files Created
|
|
67
|
+
- `/workspaces/.devcontainer/scripts/setup-plugins.sh` - Plugin installer script
|
|
68
|
+
- `/workspaces/.devcontainer/CHANGELOG.md` - This changelog
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# DevContainer Development Guide
|
|
2
|
+
|
|
3
|
+
ClaudePod devcontainer for AI-assisted development with Claude Code.
|
|
4
|
+
|
|
5
|
+
## Directory Structure
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
/workspaces/
|
|
9
|
+
├── .devcontainer/ # Container configuration (this directory)
|
|
10
|
+
│ ├── devcontainer.json # Main container definition
|
|
11
|
+
│ ├── .env # Environment variables
|
|
12
|
+
│ ├── config/ # Default configurations
|
|
13
|
+
│ │ ├── settings.json # Claude Code settings
|
|
14
|
+
│ │ └── main-system-prompt.md
|
|
15
|
+
│ ├── features/ # Custom devcontainer features
|
|
16
|
+
│ └── scripts/ # Setup scripts
|
|
17
|
+
├── .claude/ # Runtime Claude config (created on first run)
|
|
18
|
+
│ ├── settings.json # Active settings
|
|
19
|
+
│ └── system-prompt.md # Active system prompt
|
|
20
|
+
└── .gh/ # GitHub CLI config (persists across rebuilds)
|
|
21
|
+
└── hosts.yml # Authenticated hosts
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Key Configuration Files
|
|
25
|
+
|
|
26
|
+
| File | Purpose |
|
|
27
|
+
|------|---------|
|
|
28
|
+
| `devcontainer.json` | Container definition: base image, features, mounts, environment |
|
|
29
|
+
| `.env` | Environment variables controlling setup behavior |
|
|
30
|
+
| `config/settings.json` | Claude Code defaults: model, tokens, permissions, plugins |
|
|
31
|
+
| `config/main-system-prompt.md` | Default system prompt defining assistant behavior |
|
|
32
|
+
|
|
33
|
+
## Commands
|
|
34
|
+
|
|
35
|
+
| Command | Purpose |
|
|
36
|
+
|---------|---------|
|
|
37
|
+
| `cc` | Run Claude Code with auto-configuration (creates local `.claude/` if needed) |
|
|
38
|
+
| `claude` | Direct Claude Code CLI |
|
|
39
|
+
| `ccusage` | Analyze token usage history |
|
|
40
|
+
| `gh` | GitHub CLI for repo operations |
|
|
41
|
+
| `uv` | Fast Python package manager |
|
|
42
|
+
| `ast-grep` | Structural code search |
|
|
43
|
+
|
|
44
|
+
## Feature Development
|
|
45
|
+
|
|
46
|
+
Custom features live in `./features/`. Each feature follows the [devcontainer feature spec](https://containers.dev/implementors/features/):
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
features/
|
|
50
|
+
└── my-feature/
|
|
51
|
+
├── devcontainer-feature.json # Metadata and options
|
|
52
|
+
├── install.sh # Installation script
|
|
53
|
+
└── README.md # Documentation
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
To test a feature locally, reference it in `devcontainer.json`:
|
|
57
|
+
```json
|
|
58
|
+
"features": {
|
|
59
|
+
"./features/my-feature": {}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Setup Scripts
|
|
64
|
+
|
|
65
|
+
Scripts in `./scripts/` run via `postStartCommand`:
|
|
66
|
+
|
|
67
|
+
| Script | Purpose |
|
|
68
|
+
|--------|---------|
|
|
69
|
+
| `setup.sh` | Main orchestrator |
|
|
70
|
+
| `setup-config.sh` | Copies config files to `/workspaces/.claude/` |
|
|
71
|
+
| `setup-aliases.sh` | Creates `cc` shell function |
|
|
72
|
+
| `setup-lsp.sh` | Installs LSP plugins |
|
|
73
|
+
| `setup-plugins.sh` | Installs official Anthropic plugins |
|
|
74
|
+
|
|
75
|
+
## Installed Plugins
|
|
76
|
+
|
|
77
|
+
Automatically installed on container start:
|
|
78
|
+
|
|
79
|
+
- `frontend-design@claude-plugins-official`
|
|
80
|
+
- `code-review@claude-plugins-official`
|
|
81
|
+
- `commit-commands@claude-plugins-official`
|
|
82
|
+
- `pr-review-toolkit@claude-plugins-official`
|
|
83
|
+
|
|
84
|
+
## Environment Variables
|
|
85
|
+
|
|
86
|
+
Key environment variables set in the container:
|
|
87
|
+
|
|
88
|
+
| Variable | Value |
|
|
89
|
+
|----------|-------|
|
|
90
|
+
| `WORKSPACE_ROOT` | `/workspaces` |
|
|
91
|
+
| `CLAUDE_CONFIG_DIR` | `/workspaces/.claude` |
|
|
92
|
+
| `GH_CONFIG_DIR` | `/workspaces/.gh` |
|
|
93
|
+
| `ANTHROPIC_MODEL` | `claude-opus-4-5-20251101` |
|
|
94
|
+
|
|
95
|
+
## Modifying Behavior
|
|
96
|
+
|
|
97
|
+
1. **Change default model**: Edit `config/settings.json`, update `"model"` field
|
|
98
|
+
2. **Change system prompt**: Edit `config/main-system-prompt.md`
|
|
99
|
+
3. **Add features**: Add to `"features"` in `devcontainer.json`
|
|
100
|
+
4. **Disable auto-setup**: Set variables to `false` in `.env`
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# ClaudePod DevContainer
|
|
2
|
+
|
|
3
|
+
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
4
|
+
[](https://www.npmjs.com/package/claudepod)
|
|
5
|
+
|
|
6
|
+
A curated development environment optimized for AI-powered coding with Claude Code. ClaudePod comes pre-configured with language servers, code intelligence tools, and official Anthropic plugins to streamline your development workflow.
|
|
7
|
+
|
|
8
|
+
## Prerequisites
|
|
9
|
+
|
|
10
|
+
- **Docker Desktop** (or compatible container runtime like Podman)
|
|
11
|
+
- **VS Code** with the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers), or **GitHub Codespaces**
|
|
12
|
+
- **Claude Code authentication** - see [Authentication](#authentication) section
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
1. **Open in Container**
|
|
17
|
+
- VS Code: Open the folder, then select "Reopen in Container" from the command palette
|
|
18
|
+
- Codespaces: Create a new codespace from this repository
|
|
19
|
+
|
|
20
|
+
2. **Authenticate** (first time only)
|
|
21
|
+
```bash
|
|
22
|
+
claude
|
|
23
|
+
```
|
|
24
|
+
Follow the prompts to authenticate via browser or API key.
|
|
25
|
+
|
|
26
|
+
3. **Start Claude Code**
|
|
27
|
+
```bash
|
|
28
|
+
cc
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Authentication
|
|
32
|
+
|
|
33
|
+
Claude Code supports multiple authentication methods. On first run, you'll be prompted to choose:
|
|
34
|
+
|
|
35
|
+
### Browser Login (Recommended)
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
claude
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Select "Login with browser" and complete authentication in your browser. This uses your Claude.ai account.
|
|
42
|
+
|
|
43
|
+
### API Key
|
|
44
|
+
|
|
45
|
+
For programmatic access or environments without browsers:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
49
|
+
claude
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Get an API key from [console.anthropic.com](https://console.anthropic.com/).
|
|
53
|
+
|
|
54
|
+
### Credential Persistence
|
|
55
|
+
|
|
56
|
+
Authentication credentials are stored in `/workspaces/.claude/` and persist across container rebuilds.
|
|
57
|
+
|
|
58
|
+
For more options, see the [Claude Code documentation](https://docs.anthropic.com/en/docs/claude-code).
|
|
59
|
+
|
|
60
|
+
## GitHub CLI Authentication
|
|
61
|
+
|
|
62
|
+
GitHub CLI (`gh`) is pre-installed for repository operations like pushing code, creating pull requests, and accessing private repositories.
|
|
63
|
+
|
|
64
|
+
### Interactive Login (Recommended)
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
gh auth login
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Follow the prompts:
|
|
71
|
+
1. Select **GitHub.com** (or your enterprise server)
|
|
72
|
+
2. Choose your preferred protocol: **HTTPS** (recommended) or **SSH**
|
|
73
|
+
3. Authenticate via **browser** (easiest) or paste a personal access token
|
|
74
|
+
|
|
75
|
+
### Token-Based Login
|
|
76
|
+
|
|
77
|
+
For automated setups or environments without browser access:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# From a file
|
|
81
|
+
gh auth login --with-token < ~/github-token.txt
|
|
82
|
+
|
|
83
|
+
# From environment variable
|
|
84
|
+
echo "$GITHUB_TOKEN" | gh auth login --with-token
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Generate a token at [github.com/settings/tokens](https://github.com/settings/tokens) with appropriate scopes (typically `repo`, `read:org`).
|
|
88
|
+
|
|
89
|
+
### Verifying Authentication
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
gh auth status
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Expected output shows your authenticated account and token scopes.
|
|
96
|
+
|
|
97
|
+
### Credential Persistence
|
|
98
|
+
|
|
99
|
+
GitHub CLI credentials are automatically persisted across container rebuilds. The container is configured to store credentials in `/workspaces/.gh/` (via `GH_CONFIG_DIR`), which is part of the bind-mounted workspace.
|
|
100
|
+
|
|
101
|
+
**You only need to authenticate once.** After running `gh auth login`, your credentials will survive container rebuilds and be available in future sessions.
|
|
102
|
+
|
|
103
|
+
## Available Tools
|
|
104
|
+
|
|
105
|
+
### Languages & Runtimes
|
|
106
|
+
| Tool | Description |
|
|
107
|
+
|------|-------------|
|
|
108
|
+
| Python 3.14 | Base language runtime |
|
|
109
|
+
| Node.js LTS | JavaScript runtime |
|
|
110
|
+
| TypeScript | Via Node.js |
|
|
111
|
+
|
|
112
|
+
### Package Managers
|
|
113
|
+
| Tool | Description |
|
|
114
|
+
|------|-------------|
|
|
115
|
+
| `uv` | Fast Python package manager (pip alternative) |
|
|
116
|
+
| `npm` | Node.js package manager |
|
|
117
|
+
| `pip` / `pipx` | Python package installers |
|
|
118
|
+
|
|
119
|
+
### Development Tools
|
|
120
|
+
| Tool | Description |
|
|
121
|
+
|------|-------------|
|
|
122
|
+
| `gh` | GitHub CLI for repository operations |
|
|
123
|
+
| `docker` | Container CLI (connects to host Docker) |
|
|
124
|
+
| `git` | Version control |
|
|
125
|
+
| `jq` | JSON processor |
|
|
126
|
+
| `curl` | HTTP client |
|
|
127
|
+
|
|
128
|
+
### Code Intelligence
|
|
129
|
+
| Tool | Description |
|
|
130
|
+
|------|-------------|
|
|
131
|
+
| tree-sitter | AST parsing for JavaScript, TypeScript, Python |
|
|
132
|
+
| ast-grep | Structural code search and rewriting |
|
|
133
|
+
| Pyright | Python language server |
|
|
134
|
+
| TypeScript LSP | TypeScript/JavaScript language server |
|
|
135
|
+
|
|
136
|
+
### Claude Code Tools
|
|
137
|
+
| Tool | Description |
|
|
138
|
+
|------|-------------|
|
|
139
|
+
| `claude` | Claude Code CLI |
|
|
140
|
+
| `cc` | Wrapper with auto-configuration |
|
|
141
|
+
| `ccusage` | Token usage analyzer |
|
|
142
|
+
| `ccstatusline` | Status line for sessions |
|
|
143
|
+
| `claude-monitor` | Real-time usage tracking |
|
|
144
|
+
|
|
145
|
+
## Using Claude Code
|
|
146
|
+
|
|
147
|
+
### The `cc` Command
|
|
148
|
+
|
|
149
|
+
The `cc` command is a wrapper that:
|
|
150
|
+
- Creates a project-local `.claude/` directory if missing
|
|
151
|
+
- Copies default configuration files
|
|
152
|
+
- Launches Claude Code with the project's system prompt
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
cc # Start Claude Code in current directory
|
|
156
|
+
cc "explain this" # Start with an initial prompt
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Direct CLI
|
|
160
|
+
|
|
161
|
+
For more control, use the `claude` command directly:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
claude # Basic invocation
|
|
165
|
+
claude --help # View all options
|
|
166
|
+
claude --resume # Resume previous session
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Configuration
|
|
170
|
+
|
|
171
|
+
### Environment Variables
|
|
172
|
+
|
|
173
|
+
Edit `.devcontainer/.env` to customize behavior:
|
|
174
|
+
|
|
175
|
+
| Variable | Default | Description |
|
|
176
|
+
|----------|---------|-------------|
|
|
177
|
+
| `CLAUDE_CONFIG_DIR` | `/workspaces/.claude` | Claude configuration directory |
|
|
178
|
+
| `SETUP_CONFIG` | `true` | Copy config files during setup |
|
|
179
|
+
| `OVERWRITE_CONFIG` | `true` | Overwrite existing configs |
|
|
180
|
+
| `SETUP_ALIASES` | `true` | Add `cc` alias to shell |
|
|
181
|
+
| `SETUP_PLUGINS` | `true` | Install official plugins |
|
|
182
|
+
|
|
183
|
+
### Claude Code Settings
|
|
184
|
+
|
|
185
|
+
Default settings are in `.devcontainer/config/settings.json`. These are copied to `/workspaces/.claude/settings.json` on first run.
|
|
186
|
+
|
|
187
|
+
Key defaults:
|
|
188
|
+
- **Model**: Claude Opus 4.5
|
|
189
|
+
- **Default mode**: Plan (prompts before executing)
|
|
190
|
+
- **Max output tokens**: 64,000
|
|
191
|
+
|
|
192
|
+
### System Prompt
|
|
193
|
+
|
|
194
|
+
The default system prompt is in `.devcontainer/config/main-system-prompt.md`. Override it by creating a `.claude/system-prompt.md` in your project directory.
|
|
195
|
+
|
|
196
|
+
## Custom Features
|
|
197
|
+
|
|
198
|
+
ClaudePod includes several custom devcontainer features:
|
|
199
|
+
|
|
200
|
+
| Feature | Description |
|
|
201
|
+
|---------|-------------|
|
|
202
|
+
| `claude-monitor` | Real-time token usage monitoring with ML predictions |
|
|
203
|
+
| `ccusage` | Usage analytics CLI |
|
|
204
|
+
| `ccstatusline` | Compact powerline status display |
|
|
205
|
+
| `ast-grep` | Structural code search using AST patterns |
|
|
206
|
+
| `tree-sitter` | Parser with JS/TS/Python grammars |
|
|
207
|
+
| `lsp-servers` | Pyright and TypeScript language servers |
|
|
208
|
+
|
|
209
|
+
## Essential Gotchas
|
|
210
|
+
|
|
211
|
+
- **Authentication required**: Run `claude` once to authenticate before using `cc`
|
|
212
|
+
- **Plan mode default**: The container starts in "plan" mode, which prompts for approval before making changes
|
|
213
|
+
- **Project-local config**: The `cc` command creates `.claude/` in your current directory for project-specific settings
|
|
214
|
+
- **GitHub auth persists**: Run `gh auth login` once; credentials survive container rebuilds (stored in `/workspaces/.gh/`)
|
|
215
|
+
|
|
216
|
+
## Further Reading
|
|
217
|
+
|
|
218
|
+
- [Claude Code Documentation](https://docs.anthropic.com/en/docs/claude-code)
|
|
219
|
+
- [Dev Containers Specification](https://containers.dev/)
|
|
220
|
+
- [GitHub CLI Manual](https://cli.github.com/manual/)
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
<identity>
|
|
2
|
+
You are Alira.
|
|
3
|
+
</identity>
|
|
4
|
+
|
|
5
|
+
<response_guidelines>
|
|
6
|
+
Begin responses with substantive content.
|
|
7
|
+
|
|
8
|
+
Match emoji usage to source material or explicit requests.
|
|
9
|
+
|
|
10
|
+
Mark uncertainty explicitly. Distinguish confirmed facts from inference.
|
|
11
|
+
|
|
12
|
+
<example>
|
|
13
|
+
User: "What's the best sorting algorithm?"
|
|
14
|
+
Alira: "Context determines the answer. For nearly-sorted data, insertion sort excels. For general-purpose use with guaranteed O(n log n), merge sort or heapsort. What's your use case?"
|
|
15
|
+
</example>
|
|
16
|
+
</response_guidelines>
|
|
17
|
+
|
|
18
|
+
<core_directives>
|
|
19
|
+
Execute rigorously. Pass to all subagents. Deviation requires explicit user approval.
|
|
20
|
+
|
|
21
|
+
Write minimal code that satisfies requirements.
|
|
22
|
+
|
|
23
|
+
Address concrete problems present in the codebase.
|
|
24
|
+
|
|
25
|
+
When theory conflicts with working solutions, follow working solutions.
|
|
26
|
+
|
|
27
|
+
Data structures and their relationships are the foundation; code follows from them.
|
|
28
|
+
|
|
29
|
+
The right abstraction handles all cases uniformly.
|
|
30
|
+
|
|
31
|
+
<orchestration>
|
|
32
|
+
Main thread: orchestration and code modification only.
|
|
33
|
+
|
|
34
|
+
Subagents handle all information gathering—file reading, searches, context assembly, dependency analysis, test execution. Subagents report; main thread synthesizes, decides, acts.
|
|
35
|
+
|
|
36
|
+
<example>
|
|
37
|
+
User: "Update the authentication module to use JWT"
|
|
38
|
+
Alira: Spawns subagent to gather current auth implementation, token handling, test coverage. Receives findings. Main thread plans and executes modifications.
|
|
39
|
+
</example>
|
|
40
|
+
</orchestration>
|
|
41
|
+
|
|
42
|
+
<task_handling>
|
|
43
|
+
Present task interpretation and await approval before work begins.
|
|
44
|
+
|
|
45
|
+
When uncertain, deploy subagent to gather clarifying context. Ask user only when ambiguity persists after subagent findings.
|
|
46
|
+
|
|
47
|
+
Present plans, await approval. Execute directly only when explicitly instructed or trivially simple.
|
|
48
|
+
|
|
49
|
+
<example>
|
|
50
|
+
User: "Refactor the data layer"
|
|
51
|
+
Alira: "Interpretation: restructure repository pattern in /src/data/ to reduce coupling between models and persistence logic. Scope: UserRepository, OrderRepository, shared base class. Tests updated to match. Proceed?"
|
|
52
|
+
</example>
|
|
53
|
+
</task_handling>
|
|
54
|
+
|
|
55
|
+
<context_overflow>
|
|
56
|
+
When context nears capacity: stop. State remaining capacity and work status. Wait for user direction.
|
|
57
|
+
</context_overflow>
|
|
58
|
+
</core_directives>
|
|
59
|
+
|
|
60
|
+
<code_directives>
|
|
61
|
+
Python: 2-3 nesting levels. Other languages: 3-4 levels. Extract functions beyond these thresholds.
|
|
62
|
+
|
|
63
|
+
Functions: short, single purpose.
|
|
64
|
+
|
|
65
|
+
Handle errors at appropriate boundaries with general patterns.
|
|
66
|
+
|
|
67
|
+
Special cases signal architectural gaps. Redesign for uniform handling.
|
|
68
|
+
|
|
69
|
+
Optimize performance with measured evidence of user impact. Prefer simple code over marginal speed gains.
|
|
70
|
+
|
|
71
|
+
Verify changes preserve existing functionality. Document issues exceeding context limits and request guidance.
|
|
72
|
+
|
|
73
|
+
<documentation>
|
|
74
|
+
Inline comments explain *why*, only when non-obvious. Routine documentation belongs in docblocks: purpose, parameters, return values, usage.
|
|
75
|
+
|
|
76
|
+
<example>
|
|
77
|
+
# why (correct)
|
|
78
|
+
offset = len(header) + 1 # null terminator in legacy format
|
|
79
|
+
|
|
80
|
+
# what (unnecessary)
|
|
81
|
+
|
|
82
|
+
offset = len(header) + 1 # add one to header length
|
|
83
|
+
</example>
|
|
84
|
+
</documentation>
|
|
85
|
+
|
|
86
|
+
<code_standards>
|
|
87
|
+
Files: small, focused, single purpose. One reason to change per file.
|
|
88
|
+
|
|
89
|
+
<solid>
|
|
90
|
+
Single Responsibility: each module, class, function owns one concern.
|
|
91
|
+
|
|
92
|
+
Open/Closed: extend behavior through composition and abstraction; existing code remains stable.
|
|
93
|
+
|
|
94
|
+
Liskov Substitution: subtypes fulfill the contracts of their parents completely.
|
|
95
|
+
|
|
96
|
+
Interface Segregation: small, specific interfaces. Clients depend only on methods they use.
|
|
97
|
+
|
|
98
|
+
Dependency Inversion: depend on abstractions. High-level modules and low-level modules both point toward interfaces.
|
|
99
|
+
</solid>
|
|
100
|
+
|
|
101
|
+
<principles>
|
|
102
|
+
DRY: single source of truth for knowledge and logic. Extract, reference, reuse.
|
|
103
|
+
|
|
104
|
+
KISS: favor straightforward solutions. Complexity requires justification.
|
|
105
|
+
|
|
106
|
+
YAGNI: implement for current requirements. Speculative features wait until needed.
|
|
107
|
+
|
|
108
|
+
Convention over Configuration: follow established patterns; configure only where deviation is necessary.
|
|
109
|
+
|
|
110
|
+
Law of Demeter: objects interact with immediate collaborators. Avoid reaching through chains.
|
|
111
|
+
</principles>
|
|
112
|
+
|
|
113
|
+
<example>
|
|
114
|
+
User: "Add email notifications when orders ship"
|
|
115
|
+
Alira: Creates NotificationService interface, EmailNotifier implementation, injects into OrderService. OrderService calls notifier.send()—unaware of email specifics. One file per component.
|
|
116
|
+
</example>
|
|
117
|
+
</code_standards>
|
|
118
|
+
</code_directives>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cleanupPeriodDays": 360,
|
|
3
|
+
"env": {
|
|
4
|
+
"ANTHROPIC_MODEL": "claude-opus-4-5-20251101",
|
|
5
|
+
"CLAUDE_CODE_SUBAGENT_MODEL": "claude-opus-4-5-20251101",
|
|
6
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-5-20251101",
|
|
7
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5-20250929",
|
|
8
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5-20251001",
|
|
9
|
+
"BASH_DEFAULT_TIMEOUT_MS": "240000",
|
|
10
|
+
"BASH_MAX_TIMEOUT_MS": "600000",
|
|
11
|
+
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "true",
|
|
12
|
+
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": "64000",
|
|
13
|
+
"MAX_MCP_OUTPUT_TOKENS": "10000",
|
|
14
|
+
"MAX_THINKING_TOKENS": "14999",
|
|
15
|
+
"MCP_TIMEOUT": "120000",
|
|
16
|
+
"MCP_TOOL_TIMEOUT": "30000"
|
|
17
|
+
},
|
|
18
|
+
"includeCoAuthoredBy": false,
|
|
19
|
+
"permissions": {
|
|
20
|
+
"allow": [
|
|
21
|
+
"Read(/workspaces/*)",
|
|
22
|
+
"WebFetch(domain:*)"
|
|
23
|
+
],
|
|
24
|
+
"deny": [],
|
|
25
|
+
"ask": [],
|
|
26
|
+
"defaultMode": "plan",
|
|
27
|
+
"additionalDirectories": []
|
|
28
|
+
},
|
|
29
|
+
"model": "opus",
|
|
30
|
+
"enabledMcpjsonServers": [],
|
|
31
|
+
"disabledMcpjsonServers": [],
|
|
32
|
+
"hooks": {},
|
|
33
|
+
"statusLine": {
|
|
34
|
+
"type": "command",
|
|
35
|
+
"command": "/usr/local/bin/ccstatusline-wrapper"
|
|
36
|
+
},
|
|
37
|
+
"enabledPlugins": {
|
|
38
|
+
"frontend-design@claude-code-plugins": true
|
|
39
|
+
},
|
|
40
|
+
"outputStyle": ""
|
|
41
|
+
}
|