chore: consolidate new foundation and archive v1 (#1495)

This commit is contained in:
2026-09-07 12:32:57 -05:00
3511 changed files with 727899 additions and 10 deletions
@@ -0,0 +1,13 @@
# Mosaic Runtime Adapter — Claude Code
## MANDATORY — Read Before Any Response
BEFORE responding to any user message, READ:
1. `~/.config/mosaic/AGENTS.md`
2. `~/.config/mosaic/runtime/claude/RUNTIME.md`
Do NOT respond until both files are loaded.
This file (`~/.claude/CLAUDE.md`) exists only as a fallback for direct `claude` launches.
For full injection, use `mosaic claude`.
@@ -0,0 +1,61 @@
# Claude Runtime Reference
Claude-runtime behavior only. Global rules win if anything here conflicts.
## Required Actions
1. Follow the Session Start load order in `~/.config/mosaic/AGENTS.md`.
2. Runtime config lives in `~/.claude/settings.json` (hooks, model, plugins, permissions) and
`~/.claude/hooks-config.json`.
3. Structured reasoning (Constitution) binds to the sequential-thinking MCP on this harness; it is REQUIRED — if unavailable, report the failure and stop planning-intensive execution.
4. First response MUST declare mode per the global contract.
5. Git wrappers first for issue/PR/milestone ops; runtime-default confirmation prompts do NOT
override Mosaic hard gates (push/merge/issue-close without routine confirmation).
## Subagent Model Selection (Claude Code syntax)
The Task tool takes `model`: `"haiku"` | `"sonnet"` | `"opus"`. You MUST set it per the tier rule
in AGENTS.md — omitting it defaults to the parent (usually opus) and wastes budget.
```
Task(subagent_type="Explore", model="haiku", prompt="Find all API route handlers")
Task(subagent_type="feature-dev:code-reviewer", model="sonnet", prompt="Review src/auth/ changes")
Task(subagent_type="Plan", model="opus", prompt="Design the multi-tenant isolation strategy")
```
## Memory Policy (Hard Gate)
OpenBrain is the primary cross-agent memory layer — capture learnings/gotchas/decisions there
(`capture` MCP tool or REST). `~/.claude/projects/*/memory/MEMORY.md` is **write-blocked** by the
`prevent-memory-write.sh` PreToolUse hook (the rule alone proved insufficient — the hook is the
hard gate). At session start, `search(topic)` + `recent()` to load prior context. Full protocol:
`~/.config/mosaic/guides/MEMORY.md`.
Quick placement: discoveries/decisions → OpenBrain; active task state → `docs/TASKS.md` or
`docs/scratchpads/`; Mosaic framework notes → `~/.config/mosaic/memory/`.
## MCP Configuration
MCP servers are configured in `~/.claude.json` (key `mcpServers`) — NOT `~/.claude/settings.json`,
where that key is ignored. `settings.json` controls hooks/model/plugins/permissions.
```bash
claude mcp add --scope user --transport http <name> <url> --header "Authorization: Bearer <token>"
claude mcp add --scope user <name> -- npx -y <package> # stdio
```
`--scope user``~/.claude.json` (global); `project``.claude/settings.json`; `local` (default)
→ not committed.
## Required Settings (launcher-audited, advisory)
`mosaic claude` warns if `~/.claude/settings.json` is missing these (session still launches):
- **Hooks** — PreToolUse `prevent-memory-write.sh` (Write|Edit|MultiEdit); PostToolUse
`qa-hook-stdin.sh` + `typecheck-hook.sh` (Edit|MultiEdit|Write).
- **Plugins** — `feature-dev`, `pr-review-toolkit`, `code-review`.
- **Settings** — `enableAllMcpTools: true`; `model: "opus"` (orchestrator default; workers use
tiered models via the Task `model` param).
Note: PostToolUse hook plain stdout on exit 0 goes to the debug log, not model context — only
`hookSpecificOutput.additionalContext` (or exit-2 stderr) enters context.
@@ -0,0 +1 @@
Mosaic lease promotion was processed mechanically; no action is needed.
@@ -0,0 +1,301 @@
# Context7 Integration for Atomic Code Implementer
## Overview
The atomic-code-implementer agent uses Context7 MCP server to dynamically fetch up-to-date documentation for libraries and frameworks. This integration provides real-time access to the latest API documentation, best practices, and code examples.
## Integration Points
### 1. Preset-Driven Documentation Lookup
Each preset configuration includes a `context7Libraries` array that specifies which libraries to fetch documentation for:
```json
{
"context7Libraries": [
"@nestjs/common",
"@nestjs/core",
"@nestjs/typeorm",
"typeorm",
"class-validator"
]
}
```
When a preset is loaded, the agent automatically resolves and fetches documentation for all specified libraries.
### 2. Error-Driven Documentation Lookup
When build errors, type errors, or runtime issues occur, the agent can automatically lookup documentation for:
- Error resolution patterns
- API migration guides
- Breaking change documentation
- Best practice guidelines
### 3. Implementation-Driven Lookup
During atomic task implementation, the agent can fetch:
- Framework-specific implementation patterns
- Library-specific configuration examples
- Performance optimization techniques
- Security best practices
## Context7 Usage Patterns
### Library Resolution
```javascript
// Resolve library ID from preset configuration
const libraryId = await mcp__context7__resolve_library_id({
libraryName: '@nestjs/common',
});
```
### Documentation Retrieval
```javascript
// Get comprehensive documentation
const docs = await mcp__context7__get_library_docs({
context7CompatibleLibraryID: '/nestjs/nest',
topic: 'controllers',
tokens: 8000,
});
```
### Error-Specific Lookups
```javascript
// Look up specific error patterns
const errorDocs = await mcp__context7__get_library_docs({
context7CompatibleLibraryID: '/typescript/typescript',
topic: 'type errors',
tokens: 5000,
});
```
## Automatic Lookup Triggers
### 1. Preset Loading Phase
When an atomic task is started:
1. Detect tech stack from file extensions
2. Load appropriate preset configuration
3. Extract `context7Libraries` array
4. Resolve all library IDs
5. Fetch relevant documentation based on task context
### 2. Error Detection Phase
When quality hooks detect issues:
1. Parse error messages for library/framework references
2. Resolve documentation for problematic libraries
3. Look up error-specific resolution patterns
4. Apply common fixes based on documentation
### 3. Implementation Phase
During code implementation:
1. Detect new library imports or API usage
2. Automatically fetch documentation for unknown patterns
3. Provide implementation examples and best practices
4. Validate against latest API specifications
## Context7 Library Mappings
### NestJS Backend
```json
{
"@nestjs/common": "/nestjs/nest",
"@nestjs/typeorm": "/nestjs/typeorm",
"typeorm": "/typeorm/typeorm",
"class-validator": "/typestack/class-validator",
"bcrypt": "/kelektiv/node.bcrypt.js"
}
```
### React Frontend
```json
{
"react": "/facebook/react",
"react-dom": "/facebook/react",
"@tanstack/react-query": "/tanstack/query",
"tailwindcss": "/tailwindlabs/tailwindcss",
"@testing-library/react": "/testing-library/react-testing-library"
}
```
### Python FastAPI
```json
{
"fastapi": "/tiangolo/fastapi",
"sqlalchemy": "/sqlalchemy/sqlalchemy",
"pydantic": "/samuelcolvin/pydantic",
"pytest": "/pytest-dev/pytest"
}
```
## Integration Workflow
### Sequential Thinking Enhanced Lookup
```markdown
1. **Preset Analysis Phase**
- Use sequential thinking to determine optimal documentation needs
- Analyze task requirements for specific library features
- Prioritize documentation lookup based on complexity
2. **Dynamic Documentation Loading**
- Load core framework documentation first
- Fetch specialized library docs based on task specifics
- Cache documentation for session reuse
3. **Implementation Guidance**
- Use retrieved docs to guide implementation decisions
- Apply documented best practices and patterns
- Validate implementation against official examples
```
### Error Resolution Workflow
```markdown
1. **Error Detection**
- Parse error messages for library/API references
- Identify deprecated or changed APIs
- Extract relevant context from error stack traces
2. **Documentation Lookup**
- Resolve library documentation for error context
- Fetch migration guides for breaking changes
- Look up troubleshooting and FAQ sections
3. **Automated Remediation**
- Apply documented fixes and workarounds
- Update code to use current APIs
- Add proper error handling based on docs
```
## Configuration Examples
### Preset Configuration with Context7
```json
{
"name": "NestJS HIPAA Healthcare",
"techStack": {
"framework": "NestJS",
"database": "TypeORM + PostgreSQL"
},
"context7Libraries": ["@nestjs/common", "@nestjs/typeorm", "typeorm", "bcrypt", "helmet"],
"context7Topics": {
"security": ["authentication", "authorization", "encryption"],
"database": ["migrations", "relationships", "transactions"],
"testing": ["unit tests", "integration tests", "mocking"]
},
"context7AutoLookup": {
"onError": true,
"onImport": true,
"onDeprecation": true
}
}
```
### Agent Integration Points
````markdown
## Context7 Integration in atomic-code-implementer.md
### Phase 1: Preset Loading
```javascript
// Load preset and resolve documentation
const preset = loadPreset(detectedTechStack, domainContext);
const libraryDocs = await loadContext7Documentation(preset.context7Libraries);
```
````
### Phase 2: Implementation Guidance
```javascript
// Get implementation examples during coding
const implementationDocs = await mcp__context7__get_library_docs({
context7CompatibleLibraryID: '/nestjs/nest',
topic: 'controllers authentication',
tokens: 6000,
});
```
### Phase 3: Error Resolution
```javascript
// Look up error-specific documentation
if (buildError.includes('TypeError: Cannot read property')) {
const errorDocs = await mcp__context7__get_library_docs({
context7CompatibleLibraryID: extractLibraryFromError(buildError),
topic: 'common errors troubleshooting',
tokens: 4000,
});
}
```
````
## Best Practices
### 1. Documentation Caching
- Cache resolved library IDs for session duration
- Store frequently accessed documentation locally
- Implement intelligent cache invalidation
### 2. Context-Aware Lookups
- Tailor documentation queries to specific atomic task context
- Use targeted topics rather than generic documentation
- Prioritize relevant sections based on implementation needs
### 3. Error-Driven Learning
- Maintain error pattern → documentation mapping
- Learn from successful error resolutions
- Build knowledge base of common issues and solutions
### 4. Performance Optimization
- Batch documentation requests when possible
- Use appropriate token limits for different use cases
- Implement request deduplication
## Troubleshooting
### Common Issues
1. **Library Not Found**
```javascript
// Fallback to generic search
const fallbackId = await mcp__context7__resolve_library_id({
libraryName: `${libraryName} documentation`
});
````
2. **Documentation Too Generic**
```javascript
// Use more specific topics
const specificDocs = await mcp__context7__get_library_docs({
context7CompatibleLibraryID: libraryId,
topic: `${specificFeature} implementation examples`,
tokens: 8000,
});
```
3. **Rate Limiting**
```javascript
// Implement exponential backoff
const docs = await retryWithBackoff(() => mcp__context7__get_library_docs(params));
```
This integration ensures the atomic code implementer always has access to the most current and relevant documentation, enabling it to produce high-quality, up-to-date implementations while following current best practices.
@@ -0,0 +1,287 @@
{
"name": "Universal Atomic Code Implementer Hooks",
"description": "Comprehensive hooks configuration for quality enforcement and automatic remediation",
"mosaic-managed": true,
"version": "1.0.0",
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "bash",
"args": [
"-c",
"echo '[HOOK] Universal quality enforcement for $FILE_PATH'; if [[ \"$FILE_PATH\" == *.ts || \"$FILE_PATH\" == *.tsx ]]; then echo '[HOOK] TypeScript checks'; npx eslint --fix \"$FILE_PATH\" && npx prettier --write \"$FILE_PATH\" && npx tsc --noEmit || echo '[HOOK] TS completed'; elif [[ \"$FILE_PATH\" == *.js || \"$FILE_PATH\" == *.jsx ]]; then echo '[HOOK] JavaScript checks'; npx eslint --fix \"$FILE_PATH\" && npx prettier --write \"$FILE_PATH\" || echo '[HOOK] JS completed'; elif [[ \"$FILE_PATH\" == *.py ]]; then echo '[HOOK] Python checks'; black \"$FILE_PATH\" && flake8 \"$FILE_PATH\" && mypy \"$FILE_PATH\" || echo '[HOOK] Python completed'; fi"
]
}
]
}
]
},
"fileTypeHooks": {
"*.ts": {
"afterChange": [
"echo '[HOOK] TypeScript file modified: ${FILE_PATH}'",
"npx eslint --fix ${FILE_PATH}",
"npx prettier --write ${FILE_PATH}",
"npx tsc --noEmit --project tsconfig.json"
],
"beforeDelete": ["echo '[HOOK] Checking for TypeScript file dependencies before deletion'"]
},
"*.tsx": {
"afterChange": [
"echo '[HOOK] React TypeScript file modified: ${FILE_PATH}'",
"npx eslint --fix ${FILE_PATH}",
"npx prettier --write ${FILE_PATH}",
"npx tsc --noEmit --project tsconfig.json",
"if command -v npm >/dev/null 2>&1; then",
" npm run test:component -- ${FILE_NAME} 2>/dev/null || echo '[HOOK] Component tests checked'",
"fi"
]
},
"*.js": {
"afterChange": [
"echo '[HOOK] JavaScript file modified: ${FILE_PATH}'",
"npx eslint --fix ${FILE_PATH}",
"npx prettier --write ${FILE_PATH}"
]
},
"*.jsx": {
"afterChange": [
"echo '[HOOK] React JavaScript file modified: ${FILE_PATH}'",
"npx eslint --fix ${FILE_PATH}",
"npx prettier --write ${FILE_PATH}",
"if command -v npm >/dev/null 2>&1; then",
" npm run test:component -- ${FILE_NAME} 2>/dev/null || echo '[HOOK] Component tests checked'",
"fi"
]
},
"*.py": {
"afterChange": [
"echo '[HOOK] Python file modified: ${FILE_PATH}'",
"black ${FILE_PATH}",
"flake8 ${FILE_PATH} || echo '[HOOK] Flake8 linting completed'",
"mypy ${FILE_PATH} || echo '[HOOK] MyPy type checking completed'",
"if command -v pytest >/dev/null 2>&1; then",
" pytest ${FILE_PATH%.*}_test.py 2>/dev/null || echo '[HOOK] Python tests checked'",
"fi"
]
},
"package.json": {
"afterChange": [
"echo '[HOOK] package.json modified, updating dependencies'",
"npm install --no-audit --no-fund || echo '[HOOK] Dependency update completed'"
]
},
"requirements.txt": {
"afterChange": [
"echo '[HOOK] requirements.txt modified, updating Python dependencies'",
"pip install -r requirements.txt || echo '[HOOK] Python dependency update completed'"
]
},
"*.json": {
"afterChange": [
"echo '[HOOK] JSON file modified: ${FILE_PATH}'",
"if command -v jq >/dev/null 2>&1; then",
" jq . ${FILE_PATH} > /dev/null || echo '[HOOK] JSON validation failed'",
"fi"
]
},
"*.md": {
"afterChange": [
"echo '[HOOK] Markdown file modified: ${FILE_PATH}'",
"if command -v prettier >/dev/null 2>&1; then",
" npx prettier --write ${FILE_PATH} || echo '[HOOK] Markdown formatting completed'",
"fi"
]
}
},
"remediationActions": {
"RETRY_OPERATION": {
"description": "Retry the last file operation after applying fixes",
"maxRetries": 2,
"backoffMs": 1000
},
"CONTINUE_WITH_WARNING": {
"description": "Continue execution but log warnings for manual review",
"logLevel": "warning"
},
"ABORT_WITH_ERROR": {
"description": "Stop execution and require manual intervention",
"logLevel": "error"
},
"TRIGGER_QA_AGENT": {
"description": "Escalate to QA validation agent for complex issues",
"agent": "qa-validation-agent"
},
"REQUEST_CONTEXT7_HELP": {
"description": "Look up documentation for error resolution",
"tool": "mcp__context7__get-library-docs"
}
},
"qualityGates": {
"typescript": {
"eslint": {
"enabled": true,
"config": ".eslintrc.js",
"autoFix": true,
"failOnError": false
},
"prettier": {
"enabled": true,
"config": ".prettierrc",
"autoFix": true
},
"typeCheck": {
"enabled": true,
"config": "tsconfig.json",
"failOnError": false
},
"testing": {
"enabled": true,
"runAffected": true,
"coverage": 80
}
},
"python": {
"black": {
"enabled": true,
"lineLength": 88,
"autoFix": true
},
"flake8": {
"enabled": true,
"config": ".flake8",
"failOnError": false
},
"mypy": {
"enabled": true,
"config": "mypy.ini",
"failOnError": false
},
"pytest": {
"enabled": true,
"coverage": 90
}
},
"javascript": {
"eslint": {
"enabled": true,
"autoFix": true
},
"prettier": {
"enabled": true,
"autoFix": true
}
}
},
"performanceOptimization": {
"parallelExecution": {
"enabled": true,
"maxConcurrency": 4
},
"caching": {
"enabled": true,
"eslint": true,
"prettier": true,
"typescript": true
},
"incrementalChecks": {
"enabled": true,
"onlyModifiedFiles": true
}
},
"monitoring": {
"metrics": {
"hookExecutionTime": true,
"errorRates": true,
"remediationSuccess": true
},
"logging": {
"level": "info",
"format": "json",
"includeStackTrace": true
},
"alerts": {
"highErrorRate": {
"threshold": 0.1,
"action": "log"
},
"slowHookExecution": {
"thresholdMs": 10000,
"action": "log"
}
}
},
"integration": {
"presets": {
"loadHooksFromPresets": true,
"overrideWithProjectConfig": true
},
"cicd": {
"skipInCI": false,
"reportToCI": true
},
"ide": {
"vscode": {
"showNotifications": true,
"autoSave": false
}
}
},
"customCommands": {
"fullQualityCheck": {
"description": "Run comprehensive quality checks",
"commands": [
"npm run lint",
"npm run format",
"npm run build",
"npm run test",
"npm run type-check"
]
},
"securityScan": {
"description": "Run security scanning",
"commands": [
"npm audit",
"npx eslint . --ext .ts,.tsx,.js,.jsx --config .eslintrc.security.js || echo 'Security scan completed'"
]
},
"performanceCheck": {
"description": "Run performance analysis",
"commands": [
"npm run build:analyze || echo 'Bundle analysis completed'",
"npm run lighthouse || echo 'Lighthouse audit completed'"
]
}
},
"documentation": {
"usage": "This configuration provides comprehensive quality enforcement through hooks",
"examples": [
{
"scenario": "TypeScript file creation",
"flow": "Write file → ESLint auto-fix → Prettier format → TypeScript check → Tests"
},
{
"scenario": "Python file modification",
"flow": "Edit file → Black format → Flake8 lint → MyPy type check → Pytest"
},
{
"scenario": "Build error",
"flow": "Error detected → Analyze common issues → Apply fixes → Retry or continue"
}
],
"troubleshooting": [
{
"issue": "Hooks taking too long",
"solution": "Enable parallelExecution and incremental checks"
},
{
"issue": "False positive errors",
"solution": "Adjust quality gate thresholds or use CONTINUE_WITH_WARNING"
}
]
}
}
@@ -0,0 +1,329 @@
{
"model": "opus",
"hooks": {
"PreCompact": [
{
"matcher": ".*",
"hooks": [
{
"type": "command",
"command": "python3 \"$HOME/.config/mosaic/tools/lease-broker/revoke-lease.py\" --runtime claude --reason pre-compact"
}
]
}
],
"SessionStart": [
{
"matcher": "compact",
"hooks": [
{
"type": "command",
"command": "python3 \"$HOME/.config/mosaic/tools/lease-broker/revoke-lease.py\" --runtime claude --reason session-start-compact"
}
]
},
{
"matcher": "resume|clear",
"hooks": [
{
"type": "command",
"command": "python3 \"$HOME/.config/mosaic/tools/lease-broker/revoke-lease.py\" --runtime claude --reason session-start-rollover --bump-generation"
}
]
}
],
"UserPromptSubmit": [
{
"matcher": "^/mosaic-promote$",
"hooks": [
{
"type": "command",
"command": "python3 ~/.config/mosaic/tools/lease-broker/promote-begin.py",
"timeout": 15
}
]
}
],
"PreToolUse": [
{
"matcher": ".*",
"hooks": [
{
"type": "command",
"command": "python3 ~/.config/mosaic/tools/lease-broker/mutator-gate.py --runtime claude --recovery-command ~/.config/mosaic/tools/lease-broker/recover-context.py",
"timeout": 3
}
]
},
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "~/.config/mosaic/tools/qa/prevent-memory-write.sh",
"timeout": 10
}
]
},
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "~/.config/mosaic/tools/git/wrapper-guard.sh",
"timeout": 10
}
]
}
],
"PostToolUse": [
{
"matcher": "Edit|MultiEdit|Write",
"hooks": [
{
"type": "command",
"command": "~/.config/mosaic/tools/qa/qa-hook-stdin.sh",
"timeout": 60
}
]
},
{
"matcher": "Edit|MultiEdit|Write",
"hooks": [
{
"type": "command",
"command": "~/.config/mosaic/tools/qa/typecheck-hook.sh",
"timeout": 30
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "python3 ~/.config/mosaic/tools/lease-broker/receipt-observer-client.py --runtime claude --latest-entry; observer_status=$?; python3 ~/.config/mosaic/tools/lease-broker/promote-complete.py; exit $observer_status",
"timeout": 15
},
{
"type": "command",
"command": "~/.config/mosaic/tools/qa/reflect-stop-hook.sh",
"timeout": 15
}
]
}
]
},
"enabledPlugins": {
"frontend-design@claude-plugins-official": true,
"feature-dev@claude-plugins-official": true,
"code-review@claude-plugins-official": true,
"pr-review-toolkit@claude-plugins-official": true
},
"skipDangerousModePermissionPrompt": true,
"allowedCommands": [
"npm",
"npm install",
"npm run",
"npm test",
"npm build",
"npm start",
"npm run dev",
"npm run build",
"npm run lint",
"npm run typecheck",
"npm run test:ci",
"npm run test:e2e",
"npm run test:unit",
"npm run test:integration",
"npm run test:cov",
"npm run test:security",
"npm run security:scan",
"npm run security:audit",
"npm run performance:benchmark",
"npm run build:dev",
"npm run build:prod",
"npm run test",
"npm run test:watch",
"npm run migrate",
"npm run migrate:rollback",
"npm run db:seed",
"npm run db:reset",
"node",
"yarn",
"pnpm",
"npx",
"npx tsc",
"npx eslint",
"npx prettier",
"npx jest",
"npx vitest",
"git",
"git add",
"git commit",
"git push",
"git pull",
"git status",
"git diff",
"git log",
"git branch",
"git checkout",
"git merge",
"git init",
"git remote",
"git fetch",
"git reset",
"git rebase",
"git stash",
"git tag",
"git show",
"git config",
"gh",
"gh issue",
"gh pr",
"gh repo",
"gh api",
"docker",
"docker build",
"docker run",
"docker ps",
"docker logs",
"docker exec",
"docker stop",
"docker start",
"docker pull",
"docker push",
"docker-compose",
"docker-compose up",
"docker-compose down",
"docker-compose build",
"docker-compose logs",
"docker-compose ps",
"docker-compose exec",
"kubectl",
"kubectl get",
"kubectl describe",
"kubectl logs",
"kubectl apply",
"kubectl delete",
"kubectl port-forward",
"mkdir",
"touch",
"chmod",
"chown",
"ls",
"cd",
"pwd",
"cp",
"mv",
"rm",
"cat",
"echo",
"head",
"tail",
"grep",
"grep -E",
"grep -r",
"find",
"find -name",
"find -type",
"find -path",
"find -exec",
"find . -type f",
"find . -type d",
"wc",
"sort",
"uniq",
"curl",
"wget",
"ping",
"netstat",
"ss",
"lsof",
"psql",
"pg_dump",
"pg_restore",
"sqlite3",
"jest",
"vitest",
"playwright",
"cypress",
"artillery",
"lighthouse",
"tsc",
"eslint",
"prettier",
"snyk",
"semgrep",
"tar",
"gzip",
"unzip",
"zip",
"which",
"whoami",
"id",
"env",
"export",
"source",
"sleep",
"date",
"uptime",
"df",
"du",
"free",
"top",
"htop",
"ps",
"tree",
"jq",
"sed",
"awk",
"xargs",
"tee",
"test",
"true",
"false",
"basename",
"dirname",
"realpath",
"readlink",
"stat",
"file",
"make",
"cmake",
"gcc",
"g++",
"clang",
"python",
"python3",
"pip",
"pip3",
"pip install",
"poetry",
"pipenv",
"go",
"go build",
"go test",
"go run",
"go mod",
"cargo",
"rustc",
"ruby",
"gem",
"bundle",
"rake",
"java",
"javac",
"mvn",
"gradle",
"dotnet",
"msbuild",
"php",
"composer",
"perl",
"cpan",
"nohup"
],
"enableAllMcpTools": true
}