Claude Code से सुरक्षित और दोहराने योग्य विकास वातावरण बनाएं
Claude Code में Node, Docker, .env, अनुमतियाँ, hooks और दोहराने योग्य जांचें सेट करें।
नया PC हो या अभी-अभी clone किया गया repository, पहला उपयोगी बदलाव करने से पहले आधा दिन environment setup में नहीं जाना चाहिए। आम समस्याएँ लगभग हमेशा वही होती हैं: Node.js का गलत version, npm और pnpm का मिश्रण, पुराना .env, पुराने schema वाले Docker volume, और ऐसे local commands जो कहीं लिखे ही नहीं गए। Claude Code यह काम तेज कर सकता है, लेकिन पहले सीमाएँ तय करना जरूरी है।
लक्ष्य यह नहीं है कि agent सब कुछ अपने आप कर दे। लक्ष्य है ऐसा setup बनाना जिसे हर developer और हर Claude Code session एक ही तरीके से दोहरा सके: वही project instructions, वही package manager, वही secrets policy, और वही verification commands।
आधिकारिक जानकारी को आधार रखें: Claude Code setup, settings, permissions और hooks। ClaudeCodeLab में आगे पढ़ने के लिए शुरुआती guide, CLAUDE.md best practices और hooks guide देखें।
flowchart TD
A["Local tools जांचें"] --> B["Node और package manager fix करें"]
B --> C["Dependencies और .env.example बनाएं"]
C --> D["CLAUDE.md में rules लिखें"]
D --> E["settings.json में permissions सीमित करें"]
E --> F["hooks से खतरनाक commands रोकें"]
F --> G["doctor, env check और tests चलाएं"]
पहले नीति तय करें
Development environment को production code जैसा मानें। जो rule महत्वपूर्ण है, वह repository में होना चाहिए। असली secret agent context में नहीं जाना चाहिए। जो command data मिटा सकती है या code publish कर सकती है, उसे human approval चाहिए।
| क्षेत्र | File या command | कारण |
|---|---|---|
| Runtime | .nvmrc, packageManager, Corepack | Node और pnpm drift रोकता है |
| Secrets | .env.example, .gitignore, permissions.deny | असली credentials prompt और commit से बाहर रखते हैं |
| Project memory | CLAUDE.md | हर session में वही rules load होते हैं |
| Permissions | .claude/settings.json | Read, Bash और default mode control करता है |
| Hooks | .claude/hooks/* | Tool चलने से पहले deterministic guard लगाता है |
| Verification | doctor, check:env, test | अंदाज की जगह command result देता है |
कॉपी करके चलाने वाला आरंभिक सेटअप
यह स्क्रिप्ट Git Bash, WSL, macOS या Linux के लिए है। यह छोटा TypeScript project बनाती है, environment variables validate करती है, pnpm pin करती है, secret files पढ़ने से रोकती है और PreToolUse hook जोड़ती है।
#!/usr/bin/env bash
set -euo pipefail
APP_DIR="${1:-claude-dev-lab}"
mkdir -p "$APP_DIR"
cd "$APP_DIR"
command -v node >/dev/null || { echo "Node.js चाहिए"; exit 1; }
command -v claude >/dev/null || { echo "Claude Code CLI चाहिए"; exit 1; }
corepack enable
corepack prepare pnpm@9.15.4 --activate
cat > package.json <<'JSON'
{
"name": "claude-dev-lab",
"private": true,
"type": "module",
"packageManager": "pnpm@9.15.4",
"scripts": {
"doctor": "node --version && pnpm --version && claude --version",
"check:env": "tsx src/env.ts",
"test": "vitest run --passWithNoTests"
},
"dependencies": {
"dotenv": "latest",
"zod": "latest"
},
"devDependencies": {
"@types/node": "latest",
"tsx": "latest",
"typescript": "latest",
"vitest": "latest"
}
}
JSON
mkdir -p src .claude/hooks .vscode
printf "22\n" > .nvmrc
cat > .gitignore <<'EOF'
node_modules
.env
.env.*
!.env.example
dist
coverage
EOF
cat > .env.example <<'EOF'
NODE_ENV=development
DATABASE_URL=postgresql://app:app@localhost:5432/app
REDIS_URL=redis://localhost:6379
EOF
cat > src/env.ts <<'TS'
import { config } from "dotenv";
import { z } from "zod";
config();
const Env = z.object({
NODE_ENV: z.enum(["development", "test", "production"]).default("development"),
DATABASE_URL: z.string().url(),
REDIS_URL: z.string().url().optional()
});
const parsed = Env.safeParse(process.env);
if (!parsed.success) {
console.error(parsed.error.flatten().fieldErrors);
process.exit(1);
}
console.log("env ok", {
nodeEnv: parsed.data.NODE_ENV,
hasRedis: Boolean(parsed.data.REDIS_URL)
});
TS
cat > CLAUDE.md <<'EOF'
# परियोजना निर्देश
## वातावरण सेटअप
- `.nvmrc` में लिखे Node version का उपयोग करें।
- Corepack के जरिए pnpm उपयोग करें। npm या yarn पर न जाएं।
- `.env.example` को local `.env` में copy करें और values हाथ से भरें।
- `.env` या secret files को कभी read, print या commit न करें।
- Code बदलने से पहले `pnpm run doctor` और `pnpm run check:env` चलाएं।
- Code बदलने के बाद सबसे छोटा relevant test चलाकर result लिखें।
## काम के नियम
- पहले explore करें और छोटा plan दें।
- स्पष्ट human approval के बिना destructive commands या deploy commands न चलाएं।
- Setup changes को reproducible files में रखें, सिर्फ terminal history में नहीं।
EOF
cat > .claude/hooks/block-dangerous.mjs <<'JS'
import { readFileSync } from "node:fs";
const input = JSON.parse(readFileSync(0, "utf8") || "{}");
const command = String(input.tool_input?.command ?? "");
const blockedPatterns = [
/rm\s+-rf\s+(\/|~|\$HOME)/,
/git\s+push\b/,
/curl\b.+\|\s*(bash|sh)/,
/Invoke-WebRequest\b.+\|\s*iex/i
];
if (blockedPatterns.some((pattern) => pattern.test(command))) {
console.log(JSON.stringify({
hookSpecificOutput: {
hookEventName: "PreToolUse",
permissionDecision: "deny",
permissionDecisionReason: "खतरनाक command रोकी गई। लक्ष्य और प्रभाव पहले इंसान जांचे।"
}
}));
} else {
console.log("{}");
}
JS
cat > .claude/settings.json <<'JSON'
{
"defaultMode": "plan",
"permissions": {
"allow": [
"Read",
"Bash(pnpm install)",
"Bash(pnpm run *)",
"Bash(git status *)",
"Bash(claude --version)",
"Bash(claude doctor)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Bash(git push *)",
"Bash(rm -rf *)"
]
},
"env": {
"CLAUDE_CODE_SUBPROCESS_ENV_SCRUB": "1"
},
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "node .claude/hooks/block-dangerous.mjs"
}
]
}
]
}
}
JSON
pnpm install
cp .env.example .env
pnpm run doctor
pnpm run check:env
pnpm test
Windows की मूल shell में पहले toolchain जांचें:
winget install Anthropic.ClaudeCode
claude --version
claude doctor
node --version
corepack enable
pnpm --version
अगर pnpm --version fail हो, तो पहले Node और Corepack ठीक करें। अगर claude doctor proxy, certificate या login error दिखाए, तो exact error रखें और Claude Code से उसी constraint में diagnosis मांगें।
ज्यादा सुरक्षित निर्देश
claude -p "
इस repository का development environment audit करके कमी पूरी करें।
नियम:
- .env, .env.* या secrets/ के अंदर files न पढ़ें
- packageManager follow करें; pnpm को npm या yarn से replace न करें
- Docker volume delete न करें और git push न चलाएं
अनुमत:
- README, package.json, CLAUDE.md और .claude/settings.json पढ़ें
- pnpm install, pnpm run doctor, pnpm run check:env और pnpm test चलाएं
अंत में चलाए गए commands, बदली files, failures और बाकी manual steps की छोटी रिपोर्ट दें।
"
ठोस उपयोग के मामले
| उपयोग | कैसे मदद करता है |
|---|---|
| नया SaaS prototype | PostgreSQL और Redis को Docker Compose से जोड़कर setup पहले दिन से repeatable रहता है |
| Team repository onboarding | Claude Code docs पढ़ता है, allowed checks चलाता है और missing steps जोड़ता है |
| Content या product site | CTA, analytics events, OGP और AdSense-sensitive pages सुरक्षित रहते हैं |
| Internal tool | DB seed, queues, mocks और tests standard हो जाते हैं |
Docker अधिक उपयोग करने वाले projects के लिए Docker Compose देखें। Team workflow के लिए Claude Code team collaboration पढ़ें। CI में इन्हीं commands को CI/CD setup से जोड़ें।
विफलता के आम कारण
Package managers न मिलाएं। अगर pnpm-lock.yaml है, तो agent से npm install न चलने दें। यह rule CLAUDE.md में लिखें और packageManager को package.json में रखें।
Claude Code को .env न पढ़ने दें। Review के लिए .env.example है; real values local रहती हैं। .gitignore और permissions.deny साथ में उपयोग करें।
Docker volume सावधानी मांगता है। पुराना volume सही migration को भी broken दिखा सकता है। Delete करने से पहले target, risk और alternative समझाने को कहें।
Host machine पर bypassPermissions आसानी से न चलाएं। इसे isolated container या VM में ही रखें। Untrusted repository के hooks session शुरू करने से पहले इंसान पढ़े।
दोहराव क्षमता जांच सूची
claude --versionऔरclaude doctorpass होते हैं.nvmrcया.node-versionमौजूद हैpackage.jsonमेंpackageManagerहै- सिर्फ एक lockfile है
.env.exampleupdated है और.envignored हैCLAUDE.mdsetup, prohibitions और checks बताता है.claude/settings.jsonsecrets,git pushऔर destructive commands रोकता है- अंतिम रिपोर्ट में commands और results हैं
CTA और परिणाम
Local environment unstable हो तो purchase links, forms, analytics events और ad pages टूट सकते हैं। इस workflow को repeatable system बनाने के लिए free cheat sheet से शुरू करें, products देखें, या team adoption के लिए training लें।
मैंने इस flow से minimal project बनाया, dependencies install कीं, .env.example copy किया और pnpm run doctor, pnpm run check:env, pnpm test इसी क्रम में चलाया। सबसे उपयोगी guardrails थे .env पढ़ने पर रोक और git push या destructive commands को hook से block करना। Masa के काम में setup failures अक्सर कठिन commands से नहीं, बल्कि न लिखे गए assumptions से होते हैं।
मुफ़्त PDF: Claude Code cheatsheet
Email डालें और commands, review habits तथा safe workflow वाली एक-page PDF पाएँ.
हम आपका data सुरक्षित रखते हैं और spam नहीं भेजते.
लेखक के बारे में
Masa
Claude Code workflow और team adoption पर काम करने वाला engineer.
संबंधित लेख
Claude Code Obsidian to CLAUDE.md workflow: context बार-बार न समझाएं
Obsidian notes को CLAUDE.md operating notes में बदलकर Claude Code sessions को resume करना आसान बनाएं.
Claude Code Revenue CTA Routing: article से PDF, Gumroad और consultation तक
Reader intent के आधार पर free PDF, Gumroad products और consultation तक CTA route करने वाला workflow.
Claude Code टीम हैंडऑफ नियम: review proof, permissions, rollback और revenue path
Claude Code टीम काम के लिए evidence, permission rules, rollback, free PDF, Gumroad और consultation path वाला handoff.