configuring-devenv

Initializes and configures devenv development environments. Searches packages, sets up languages, services, scripts, git hooks, and processes. Use when setting up devenv, adding packages to devenv.nix, configuring languages, services, git hooks, or searching for devenv options.

16 stars

Best use case

configuring-devenv is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Initializes and configures devenv development environments. Searches packages, sets up languages, services, scripts, git hooks, and processes. Use when setting up devenv, adding packages to devenv.nix, configuring languages, services, git hooks, or searching for devenv options.

Teams using configuring-devenv should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/configuring-devenv/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/tools/configuring-devenv/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/configuring-devenv/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How configuring-devenv Compares

Feature / Agentconfiguring-devenvStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Initializes and configures devenv development environments. Searches packages, sets up languages, services, scripts, git hooks, and processes. Use when setting up devenv, adding packages to devenv.nix, configuring languages, services, git hooks, or searching for devenv options.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Devenv Configuration

Initializes, configures, and searches devenv development environments.

## Your Task

Determine action from $ARGUMENTS or context:

| Intent | Action |
|--------|--------|
| "init devenv", "set up devenv", "new devenv" | Initialize new project |
| "add package", "configure", "enable" | Modify configuration |
| "search", "find package", "how to add" | Search packages/options |

## Progress Checklist

- [ ] Determine action (init/config/search)
- [ ] Check current state
- [ ] Execute action
- [ ] Validate changes
- [ ] Guide next steps

---

## Initializing Projects

### Step 1: Check Prerequisites

```bash
# Check if devenv exists
test -f devenv.nix && echo "exists" || echo "new"

# Check if devenv is installed
devenv version
```

If not installed: `curl -L https://get.devenv.sh | sh`

### Step 2: Detect Project Type

| File | Project Type |
|------|--------------|
| `package.json` | Node.js |
| `pyproject.toml`, `requirements.txt` | Python |
| `Cargo.toml` | Rust |
| `go.mod` | Go |
| Multiple | Full-stack |

### Step 3: Create Configuration

**Python:**

```nix
{ pkgs, ... }:

{
  languages.python = {
    enable = true;
    version = "3.11";
    venv.enable = true;
  };

  scripts = {
    test.exec = "pytest";
    lint.exec = "ruff check .";
  };

  git-hooks.hooks = {
    black.enable = true;
    ruff.enable = true;
  };
}
```

**Node.js:**

```nix
{ pkgs, ... }:

{
  languages.javascript = {
    enable = true;
    npm.enable = true;  # or bun.enable
  };

  scripts = {
    dev.exec = "npm run dev";
    test.exec = "npm test";
  };

  git-hooks.hooks = {
    prettier.enable = true;
    eslint.enable = true;
  };
}
```

**Rust:**

```nix
{ pkgs, ... }:

{
  languages.rust.enable = true;

  packages = with pkgs; [ cargo-watch ];

  scripts = {
    dev.exec = "cargo watch -x run";
    test.exec = "cargo test";
  };

  git-hooks.hooks = {
    rustfmt.enable = true;
    clippy.enable = true;
  };
}
```

**Go:**

```nix
{ pkgs, ... }:

{
  languages.go.enable = true;

  packages = with pkgs; [ golangci-lint air ];

  scripts = {
    dev.exec = "air";
    test.exec = "go test ./...";
  };

  git-hooks.hooks = {
    gofmt.enable = true;
    govet.enable = true;
  };
}
```

### Step 4: Create Supporting Files

**.envrc:**

```bash
use devenv
```

**.gitignore additions:**

```
.devenv*
devenv.lock
.direnv
```

### Step 5: Validate

```bash
nix-instantiate --parse devenv.nix
devenv info
direnv allow
```

---

## Configuring Projects

### Always Read First

```bash
cat devenv.nix
```

### Languages

```nix
languages = {
  javascript = {
    enable = true;
    npm.enable = true;      # or bun.enable, pnpm.enable
  };
  python = {
    enable = true;
    version = "3.11";
    venv.enable = true;
  };
  rust.enable = true;
  go.enable = true;
};
```

### Packages

```nix
packages = with pkgs; [
  gh            # GitHub CLI
  jq            # JSON processor
  docker
  kubectl
];
```

### Scripts

```nix
scripts = {
  dev.exec = "npm run dev";
  test.exec = "pytest tests/";
  db-reset.exec = ''
    dropdb myapp --if-exists
    createdb myapp
  '';
};
```

### Git Hooks

```nix
git-hooks.hooks = {
  prettier.enable = true;
  eslint.enable = true;
  black.enable = true;
  rustfmt.enable = true;
  shellcheck.enable = true;
  gitleaks.enable = true;
};
```

### Services

```nix
services = {
  postgres = {
    enable = true;
    initialDatabases = [{ name = "myapp_dev"; }];
  };
  redis.enable = true;
  mysql.enable = true;
};
```

### Processes

```nix
processes = {
  backend.exec = "uvicorn main:app --reload";
  frontend.exec = "npm run dev";
};
```

Start all with `devenv up`.

### Environment Variables

```nix
env = {
  DATABASE_URL = "postgresql://localhost/myapp";
  API_KEY = "dev-key";
};
```

### Validation After Changes

```bash
nix-instantiate --parse devenv.nix
devenv info
direnv reload
```

---

## Searching Packages/Options

### Using CLI

```bash
devenv search <query>
```

### Using MCP Tools

Use `mcp__mcp_devenv_sh__search_packages` and `mcp__mcp_devenv_sh__search_options`.

### Common Corrections

| User Types | Search For |
|------------|------------|
| node, npm | nodejs |
| pg, postgresql | postgres |
| k8s | kubectl |
| python3 | python |
| mongo | mongodb |

### Present Results

```markdown
## Search Results for "{query}"

### Configuration Options
| Option | Description |
|--------|-------------|
| `languages.python.enable` | Enable Python support |

### Packages
| Package | Description |
|---------|-------------|
| `python311` | Python 3.11 interpreter |

### Usage Example
(show nix snippet)
```

---

## Full-Stack Configuration

For frontend + backend + database:

```nix
{ pkgs, ... }:

{
  languages = {
    javascript = {
      enable = true;
      npm.enable = true;
    };
    python = {
      enable = true;
      version = "3.11";
      venv.enable = true;
    };
  };

  env = {
    DATABASE_URL = "postgresql://localhost:5432/myapp_dev";
    API_URL = "http://localhost:8000";
  };

  services.postgres = {
    enable = true;
    initialDatabases = [{ name = "myapp_dev"; }];
  };

  processes = {
    backend = {
      exec = "cd backend && uvicorn main:app --reload --port 8000";
      process-compose = {
        depends_on.postgres.condition = "process_healthy";
      };
    };
    frontend = {
      exec = "cd frontend && npm run dev";
      process-compose = {
        depends_on.backend.condition = "process_healthy";
      };
    };
  };

  scripts = {
    dev.exec = "devenv up";
    db-reset.exec = ''
      dropdb myapp_dev --if-exists
      createdb myapp_dev
    '';
  };

  git-hooks.hooks = {
    prettier.enable = true;
    black.enable = true;
  };
}
```

---

## Error Handling

| Issue | Solution |
|-------|----------|
| devenv not found | `curl -L https://get.devenv.sh \| sh` |
| Syntax error | `nix-instantiate --parse devenv.nix` |
| Package not found | Search with MCP tools or `devenv search` |
| Changes not appearing | `direnv reload` or restart shell |
| Service won't start | Check `$DEVENV_STATE` logs |
| Port in use | `lsof -i :<port>` to find process |
| Hook not running | `devenv gc && direnv allow` |

---

## Tips

- Always read devenv.nix before editing
- Use MCP search tools to find correct names
- Prefer `languages.*` over adding interpreter packages
- Use `services.*` for databases (auto-configured)
- Use `processes` for multi-service development
- Test changes with `devenv info` after editing
- Scripts become shell commands automatically

Related Skills

bgo

16
from diegosouzapw/awesome-omni-skill

Automated Blender build-go workflow. Automatically builds, removes old version, installs, enables, and launches Blender with your extension/add-on. Use when you want to quickly test changes, execute complete build-to-launch cycle, or run custom packaging scripts with automatic Blender launch.

Coding & Development

deleting-op-secrets

16
from diegosouzapw/awesome-omni-skill

Deletes or archives secrets in 1Password using the op CLI. Use when the user needs to permanently remove items, archive deprecated credentials, or clean up unused secrets from 1Password vaults. Supports both permanent deletion and archiving for later recovery.

definition.tech_spike

16
from diegosouzapw/awesome-omni-skill

Scope and prioritize technical spikes that de-risk architecture or implementation questions.

defi-protocol-templates

16
from diegosouzapw/awesome-omni-skill

Implement DeFi protocols with production-ready templates for staking, AMMs, governance, and lending systems. Use when building decentralized finance applications or smart contract protocols.

deepgram-automation

16
from diegosouzapw/awesome-omni-skill

Automate Deepgram tasks via Rube MCP (Composio). Always search tools first for current schemas.

deel-automation

16
from diegosouzapw/awesome-omni-skill

Automate Deel tasks via Rube MCP (Composio). Always search tools first for current schemas.

declarative-agents-microsoft365

16
from diegosouzapw/awesome-omni-skill

Comprehensive development guidelines for Microsoft 365 Copilot declarative agents with schema v1.5, TypeSpec integration, and Microsoft 365 Agents Toolkit workflows Triggers on: **.json, **.ts, **.tsp, **manifest.json, **agent.json, **declarative-agent.json

deck-cli

16
from diegosouzapw/awesome-omni-skill

Manage Kong Gateway and Konnect declaratively using decK CLI. Use when working with Kong Gateway configurations, syncing state, converting OpenAPI specs to Kong config, validating configurations, or automating Kong deployments. Handles declarative configuration files, API lifecycle automation, and Kong entity management.

debugging-memory

16
from diegosouzapw/awesome-omni-skill

This skill should be used when the user asks to "debug this", "fix this bug", "why is this failing", "investigate error", "getting an error", "exception thrown", "crash", "not working", "what's causing this", "root cause", "diagnose this issue", or describes any software bug or error. Also activates when spawning subagents for debugging tasks, using Task tool for bug investigation, or coordinating multiple agents on a debugging problem. Provides memory-first debugging workflow that checks past incidents before investigating.

debug

16
from diegosouzapw/awesome-omni-skill

Systematic debugging with hypothesis testing. Persistent across sessions.

debate-persona-generator

16
from diegosouzapw/awesome-omni-skill

Generates three distinct expert challenger personas for multi-perspective debate. Each persona critiques from a different angle.

deadline-funnel-automation

16
from diegosouzapw/awesome-omni-skill

Automate Deadline Funnel tasks via Rube MCP (Composio). Always search tools first for current schemas.