Skip to main content

Development Setup

Get your local development environment ready for contributing to Grok One-Shot.

Prerequisites​

Required​

  • Node.js 18+ (recommend 20+)
  • Bun (package manager and runtime)
  • Git for version control
  • VS Code (recommended) with suggested extensions
  • Terminal with good TypeScript/Node.js support
  • GitHub CLI for pull request management

Quick Setup​

1. Clone and Install​

# Clone the repository
git clone https://github.com/x-cli-team/grok-one-shot.git
cd grok-one-shot

# Install dependencies
bun install

# Verify setup
bun run typecheck
bun test

2. Development Commands​

# Development mode (hot reload)
bun run dev

# Build for production
bun run build

# Run tests
bun test

# Type checking
bun run typecheck

# Linting
bun run lint

3. Environment Setup​

Create your development configuration:

# Set up API key for testing
export GROK_API_KEY="your-development-key"

# Optional: Use development model
export GROK_MODEL="grok-4-fast-non-reasoning"

Project Structure​

grok-one-shot/
├── src/ # Source code
│ ├── agent/ # Core AI agent logic
│ ├── commands/ # CLI subcommands
│ ├── hooks/ # React hooks
│ ├── mcp/ # MCP integration
│ ├── services/ # Business logic
│ ├── ui/ # Terminal UI components
│ └── utils/ # Shared utilities
├── apps/
│ └── site/ # Documentation site
├── .agent/ # Agent documentation
│ ├── docs/ # Comprehensive docs
│ └── system/ # System configuration
├── tests/ # Test files
└── scripts/ # Build and utility scripts

Development Workflow​

1. Feature Development​

# Create feature branch
git checkout -b feature/your-feature-name

# Make changes and test
bun run dev
# Test your changes...

# Run full test suite
bun run typecheck
bun test
bun run lint

2. Testing Changes​

# Run in development mode
bun run dev

# Test specific functionality
bun run dev -- "test specific feature"

# Test with different models
GROK_MODEL=grok-4-fast bun run dev

3. Documentation​

# Start documentation site
cd apps/site
npm run start

# View at http://localhost:3000

VS Code Setup​

Install these extensions for the best development experience:

{
"recommendations": [
"ms-vscode.vscode-typescript-next",
"esbenp.prettier-vscode",
"bradlc.vscode-tailwindcss",
"ms-vscode.vscode-json"
]
}

Settings​

Add to your VS Code settings:

{
"typescript.preferences.quoteStyle": "single",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}

Debugging​

Development Debugging​

# Run with debug output
DEBUG=grok:* bun run dev

# Specific debug namespaces
DEBUG=grok:agent bun run dev
DEBUG=grok:mcp bun run dev

VS Code Debugging​

Create .vscode/launch.json:

{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Grok One-Shot",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/src/index.ts",
"runtimeExecutable": "bun",
"runtimeArgs": ["--inspect"],
"env": {
"NODE_ENV": "development",
"GROK_API_KEY": "your-dev-key"
}
}
]
}

Testing​

Unit Tests​

# Run all tests
bun test

# Run specific test file
bun test src/agent/grok-agent.test.ts

# Watch mode
bun test --watch

Integration Tests​

# Test with real API (requires GROK_API_KEY)
GROK_API_KEY=your-key bun test integration

# Test MCP integration
bun test mcp

Building​

Local Build​

# Build for production
bun run build

# Test the built version
node dist/index.js --help

Distribution​

# Create distribution package
npm pack

# Test global installation
npm install -g ./xagent-one-shot-*.tgz

Common Issues​

Bun Installation Issues​

# Install bun via npm if curl fails
npm install -g bun

# Or use specific version
npm install -g bun@1.0.0

TypeScript Issues​

# Clear TypeScript cache
rm -rf node_modules/.cache
bun install

# Restart TypeScript server in VS Code
Cmd+Shift+P > "TypeScript: Restart TS Server"

API Key Issues​

# Verify API key is set
echo $GROK_API_KEY

# Test API connectivity
grok -p "test connection"

Next Steps​

  1. Read the Contributing Guide
  2. Explore the Architecture Overview
  3. Check out open Good First Issues
  4. Join the Developer Discord

Ready to contribute? Start with a small change and work your way up to larger features!