Technology Preferences
Preferred tools and technologies. Defaults, not hard rules.
Note: This is a living document. Preferences evolve as new tools emerge and requirements change. Check the latest version before making decisions.
⚡ Quick Start
Starting a new project? Default stack:
# JavaScript/TypeScript
bun init # Runtime + package manager
biome init # Lint + format
just --init # Task runner (optional)
# Python
uv init # Python project + deps
uv add pytest # Testing
# Version control
git init
Quick decision guide:
| Need |
Use |
| JS/TS runtime |
bun |
| Python packages |
uv |
| Lint/format |
biome (JS/TS) |
| Search code |
ripgrep (rg) |
| Find files |
fd |
| Tasks |
just |
| Editor |
zed |
Prerequisites
- OS: macOS (desktop), Ubuntu (servers)
- Shell: Any (examples work in bash/zsh/fish)
- Package managers: Homebrew (macOS), system package manager (Linux)
How to Use This
When working with this user:
- Check this file first — Before suggesting tools, consult these preferences
- Prefer listed tools — When multiple solutions exist, default to these
- Respect "Exploring" — Tools marked as exploring are for learning only
- Ask before adding — Don't install unlisted tools without confirmation
- Note deviations — If project requirements override preferences, document it
Automatic Agent Invocation
The agent must self-trigger this skill — not just when the user asks, but when the agent itself is about to make a technology decision. This includes:
| Agent Action |
Must Check my-tech-stack? |
| Installing a new npm/pip/cargo package |
✅ YES |
| Adding a dependency to package.json/pyproject.toml/Cargo.toml |
✅ YES |
| Choosing between two libraries/frameworks |
✅ YES |
| Selecting a build tool, linter, or formatter |
✅ YES |
| Adding a new dev tool to the project |
✅ YES |
| Recommending a runtime (bun vs node, uv vs pip) |
✅ YES |
| Choosing a testing framework |
✅ YES |
| Adding infrastructure tools (docker, terraform, k3s) |
✅ YES |
| Using a code search tool (rg vs grep vs ag) |
✅ YES |
Standard library usage (e.g., fetch vs axios) |
⚠️ Prefer listed preferences |
Decision Flow
Agent about to recommend/install a tool?
├── Is it in the preferred list above? → Use it
├── Is it in the "Exploring" section? → Ask user before using
├── Is it unlisted? → Ask user: "This tool isn't in my preferred stack. Use it anyway?"
└── Is there a project-specific override? → Follow project, note deviation
Example self-trigger:
"I need to add a JSON parser. Checking @skills/my-tech-stack... The project uses TypeScript with bun. I'll use a native solution or check if yaml is already preferred for config."
Never silently install unlisted tools. Always consult this skill first, even when the user hasn't explicitly asked.
By Category
Development Environment
| Tool |
When to Use |
| bun |
JavaScript/TypeScript runtime and package manager; fast installs, running JS/TS scripts, Node.js alternative |
| devenv |
Default local dev environment — Nix-based reproducible dev shells; per-project dependencies without global pollution |
| fd |
Fast, user-friendly alternative to find; searching for files and directories |
| fzf |
Fuzzy finder for command-line; interactive filtering of lists, files, command history, process management |
| github |
Git hosting; code collaboration; CI/CD with Actions; issue tracking |
| homebrew |
Installing system-wide dependencies, dev tools, macOS applications; preferred package manager for macOS |
| mise |
Managing multiple language versions, project-specific tool versions, unified version management across teams |
ripgrep (rg) |
Fast, recursive text search; code searching across large codebases; faster alternative to grep |
| typescript |
Type-safe JavaScript development; large-scale JS applications; better IDE support |
| uv |
Managing Python dependencies, virtual environments, Python version/package isolation |
| zed |
Primary code editor; fast, collaborative, Rust-based IDE |
AI Agents
| Tool |
When to Use |
| pi-coding-agent |
Primary coding agent — preferred harness for agent-driven development |
| opencode |
Alternative agent harness; use when pi is unavailable |
AI Providers
| Provider |
When to Use |
| fireworks |
Default LLM provider — fast inference, FirePass intelligent routing, cost-effective |
| firepass |
Intelligent model routing; automatically selects optimal model for the task |
Code Quality
| Tool |
When to Use |
| biome |
Fast linting and formatting for JavaScript/TypeScript/CSS; faster alternative to ESLint + Prettier |
Biome Configuration
{
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 4
},
"javascript": {
"formatter": {
"quoteStyle": "double",
"trailingCommas": "all"
}
}
}
- Indentation: 4 spaces (not tabs)
- Quote style: double
- Trailing commas:
all — always use trailing commas in arrays, objects, and function parameters
- Apply to all JS/TS projects using Biome
Infrastructure & Cloud
| Tool |
When to Use |
| cloudflare |
DNS management, CDN, DDoS protection, serverless workers, fast global edge network |
| docker |
Deployment packaging — containerizing projects for remote deployment; docker build + docker compose for shipping to other machines |
| k3s |
Lightweight Kubernetes for edge, IoT, CI/CD, resource-constrained environments |
| terraform |
Infrastructure as Code for provisioning cloud resources; multi-cloud or complex infrastructure |
Local dev vs deployment:
| Context |
Tool |
Rationale |
| Local development |
devenv |
Reproducible Nix shells without Docker overhead |
| Deployment packaging |
docker |
Universal runtime on target machines |
Note: Docker is intentionally not used as a local development runtime. Use devenv for local envs, docker only for building deployable images.
Local Development
| Tool |
When to Use |
| portless |
Clean, memorable local URLs instead of localhost:3000; working with multiple local services |
API & Testing
| Tool |
When to Use |
| httpie |
Default for API work — testing APIs, debugging endpoints, agent workflows; natural syntax, auto JSON formatting |
| curl |
Production scripts, CI/CD pipelines, binary data handling, systems where Python isn't available |
httpie vs curl decision guide:
| Situation |
Use |
| API exploration, debugging |
httpie — http GET api.example.com/users page==1 |
| Production deployment scripts |
curl — universally available, reliable exit codes |
| Agent-driven workflows |
httpie — more readable in logs, less flag memorization |
| JSON-heavy APIs |
httpie — native JSON support, auto-pretty-printing |
| Binary file downloads |
curl — more robust for non-text data |
| CI/CD pipelines |
curl — no dependency on Python/HTTPie |
Security & Secrets
| Tool |
When to Use |
| bitwarden / bws |
Password management, secure secret storage; bws CLI for programmatic access in scripts and CI/CD |
| wireguard |
Simple, fast, modern VPN; secure point-to-point connections; mesh networking |
Remote Access
| Tool |
When to Use |
| eternal-terminal |
Remote shell that auto-reconnects without interrupting session; resilient alternative to SSH |
| WR: |
|
| NV:### Web Frameworks |
|
| NV: |
|
| QB: |
Tool |
| KR: |
------ |
| HP: |
SvelteKit |
| HP: |
React |
| KR: |
|
| VZ: |
|
| NV:### Task Automation |
|
| Tool |
When to Use |
| just |
Running project tasks, build scripts, command shortcuts; Makefile replacement with better cross-platform support |
| mise (tasks) |
Defining and running project tasks when already using mise for version management |
Operating System
| Context |
Preference |
| Desktop |
macOS — Primary development and daily driver |
| Servers |
Ubuntu — Server environments, cloud VMs, production deployments |
Shell
| Context |
Preference |
Notes |
| Interactive |
fish |
Daily command-line work; autosuggestions, syntax highlighting |
| Scripts / Agents |
zsh |
Automation; compatibility with existing bash scripts |
Exploring
These tools are for learning and experimentation, not production use:
| Tool |
Interest |
| chat-sdk |
Building AI chat interfaces, streaming LLM responses |
| colima |
macOS Docker-compatible containers via Lima; kept as fallback if docker daemon is needed locally |
| dotenvx |
Managing environment variables across environments, encrypting secrets |
| gridland |
Building terminal apps with React and OpenTUI; works in both browser and terminal |
| endeavouros |
Arch-based Linux distribution; exploring as alternative desktop/server OS |
| json-render |
Rendering JSON as UI components; quick admin dashboards |
| memex |
Zettelkasten-based agent memory with bidirectional links; installed as pi package |
| smolvm |
MicroVMs for sandboxing untrusted code, portable executables, isolated dev environments |
| mastra |
Building AI agents, orchestrating LLM workflows |
| rust |
Systems programming, performance-critical apps, WebAssembly, CLI tools |
| varlock.dev |
Securely sharing environment variables with team members |
| raganything |
Multimodal RAG system for documents with images, tables, and equations |
Quick Decision Reference
Starting a new project?
- Use bun for JS/TS runtime and package management
- Use TypeScript for type safety
- Use biome for linting/formatting
- Use zed as code editor
RH:- Use mise for version management
RH:- Use SvelteKit for web framework (when applicable)
Need to search code?
- Use ripgrep (
rg) - it's faster than grep
Need to find files?
- Use fd - more user-friendly than find
Working with Python?
- Use uv for dependencies and virtual environments
Need a local development environment?
- Use devenv — Nix-based, reproducible, no Docker overhead
Need containers on macOS?
- Use docker CLI + compose for deployment packaging only
- Do not use Docker as a local dev runtime — use devenv instead
Setting up CI/CD?
- Use GitHub Actions on GitHub
Need infrastructure?
- Use Cloudflare for edge/network
- Use Terraform for IaC
- Use k3s for lightweight Kubernetes
Managing secrets?
- Use bitwarden / bws for password/secret management
Handling Conflicts
When project requirements conflict with these preferences:
- Follow project requirements — they're the authority for that codebase
- Note the deviation — mention that you're using X instead of the preferred Y
- Don't update this file — project-specific overrides don't change general preferences
- Consider asking — if the conflict seems unnecessary, ask the user about it
Example:
"The project uses npm instead of bun (your preferred package manager). I'll proceed with npm for consistency with the existing codebase."
Common Agent Mistakes
❌ Wrong: Suggesting npm when bun is available and preferred
✅ Right: "The project uses npm, but bun is preferred. I'll proceed with npm for consistency, or we can migrate."
❌ Wrong: Installing unlisted tools without asking
✅ Right: "This tool isn't in my preferred stack. Should I use it anyway?"
❌ Wrong: Using "Exploring" tools in production code
✅ Right: "This tool is in my 'Exploring' list — learning only. I'll use a production-grade alternative instead."
❌ Wrong: Suggesting TypeScript for a one-off shell script
✅ Right: Use bash/fish for scripts; TypeScript for maintained projects
❌ Wrong: Forgetting to document deviations from preferred stack
✅ Right: Always note when project requirements override personal preferences
Troubleshooting
Tool not available?
→ Check if it's in the "Exploring" section (learning only, not production-ready)
→ For missing tools, ask user before installing
Preference conflicts with project requirements?
→ Always follow project requirements
→ Document the deviation: "Using npm instead of preferred bun"
Unclear which tool to use?
→ Check "Quick Decision Reference" section
→ When in doubt, ask before adding new dependencies
Version conflicts between tools?
→ Use mise for version management
→ Pin versions in project config files
Versioning
- Last updated: 2026-06-05
- Version: 2.0
- Update notes: Migrated default local dev environment from devbox to devenv. devenv provides native Nix DSL configuration, built-in services, tasks, git hooks, and testing. Projects migrated: kindercare, event-horizon, HongKongTaxiMeterCarThing.
Related Skills
- my-agent-file-conventions — For creating AGENT.md files (not tech recommendations)
1---2name: my-tech-stack3description: **MANDATORY REFERENCE** for all tool recommendations. ALWAYS consult BEFORE suggesting tools, libraries, frameworks, or technologies. **ALWAYS use when user asks about:** preferred tools, tech recommendations ("bun or node", "uv or pip"), or stack decisions. **ALWAYS use when agent decides:** to install a package, add a dependency, choose a library/framework, select a build tool, or make any technology choice that affects the project's stack. **DO NOT use for:** agent configuration (@skills/my-agent-file-conventions) or VCS operations. **CRITICAL:** Do NOT suggest unlisted tools without asking first.4---56# Technology Preferences78Preferred tools and technologies. Defaults, not hard rules.910> **Note:** This is a living document. Preferences evolve as new tools emerge and requirements change. Check the latest version before making decisions.1112## ⚡ Quick Start1314**Starting a new project?** Default stack:1516```bash17# JavaScript/TypeScript18bun init # Runtime + package manager19biome init # Lint + format20just --init # Task runner (optional)2122# Python23uv init # Python project + deps24uv add pytest # Testing2526# Version control27git init28```2930**Quick decision guide:**31| Need | Use |32|------|-----|33| JS/TS runtime | **bun** |34| Python packages | **uv** |35| Lint/format | **biome** (JS/TS) |36| Search code | **ripgrep** (`rg`) |37| Find files | **fd** |38| Tasks | **just** |39| Editor | **zed** |4041## Prerequisites4243- **OS:** macOS (desktop), Ubuntu (servers)44- **Shell:** Any (examples work in bash/zsh/fish)45- **Package managers:** Homebrew (macOS), system package manager (Linux)4647## How to Use This4849When working with this user:50511. **Check this file first** — Before suggesting tools, consult these preferences522. **Prefer listed tools** — When multiple solutions exist, default to these533. **Respect "Exploring"** — Tools marked as exploring are for learning only544. **Ask before adding** — Don't install unlisted tools without confirmation555. **Note deviations** — If project requirements override preferences, document it5657## Automatic Agent Invocation5859**The agent must self-trigger this skill** — not just when the user asks, but when the agent itself is about to make a technology decision. This includes:6061| Agent Action | Must Check my-tech-stack? |62|--------------|---------------------------|63| Installing a new npm/pip/cargo package | ✅ YES |64| Adding a dependency to package.json/pyproject.toml/Cargo.toml | ✅ YES |65| Choosing between two libraries/frameworks | ✅ YES |66| Selecting a build tool, linter, or formatter | ✅ YES |67| Adding a new dev tool to the project | ✅ YES |68| Recommending a runtime (bun vs node, uv vs pip) | ✅ YES |69| Choosing a testing framework | ✅ YES |70| Adding infrastructure tools (docker, terraform, k3s) | ✅ YES |71| Using a code search tool (rg vs grep vs ag) | ✅ YES |72| Standard library usage (e.g., `fetch` vs `axios`) | ⚠️ Prefer listed preferences |7374### Decision Flow7576```77Agent about to recommend/install a tool?78├── Is it in the preferred list above? → Use it79├── Is it in the "Exploring" section? → Ask user before using80├── Is it unlisted? → Ask user: "This tool isn't in my preferred stack. Use it anyway?"81└── Is there a project-specific override? → Follow project, note deviation82```8384**Example self-trigger:**85> "I need to add a JSON parser. Checking @skills/my-tech-stack... The project uses TypeScript with bun. I'll use a native solution or check if `yaml` is already preferred for config."8687**Never silently install unlisted tools.** Always consult this skill first, even when the user hasn't explicitly asked.8889## By Category9091### Development Environment9293| Tool | When to Use |94|------|-------------|95| [**bun**](https://github.com/oven-sh/bun) | JavaScript/TypeScript runtime and package manager; fast installs, running JS/TS scripts, Node.js alternative |96| [**devenv**](https://devenv.sh) | **Default local dev environment** — Nix-based reproducible dev shells; per-project dependencies without global pollution |97| [**fd**](https://github.com/sharkdp/fd) | Fast, user-friendly alternative to `find`; searching for files and directories |98| [**fzf**](https://github.com/junegunn/fzf) | Fuzzy finder for command-line; interactive filtering of lists, files, command history, process management |99| [**github**](https://github.com/) | Git hosting; code collaboration; CI/CD with Actions; issue tracking |100| [**homebrew**](https://brew.sh/) | Installing system-wide dependencies, dev tools, macOS applications; preferred package manager for macOS |101| [**mise**](https://github.com/jdx/mise) | Managing multiple language versions, project-specific tool versions, unified version management across teams |102| [**ripgrep**](https://github.com/BurntSushi/ripgrep) (`rg`) | Fast, recursive text search; code searching across large codebases; faster alternative to grep |103| [**typescript**](https://www.typescriptlang.org/) | Type-safe JavaScript development; large-scale JS applications; better IDE support |104| [**uv**](https://github.com/astral-sh/uv) | Managing Python dependencies, virtual environments, Python version/package isolation |105| [**zed**](https://zed.dev/) | Primary code editor; fast, collaborative, Rust-based IDE |106107### AI Agents108109| Tool | When to Use |110|------|-------------|111| [**pi-coding-agent**](https://github.com/mariozechner/pi) | **Primary coding agent** — preferred harness for agent-driven development |112| [**opencode**](https://opencode.ai/) | Alternative agent harness; use when pi is unavailable |113114### AI Providers115116| Provider | When to Use |117|----------|-------------|118| [**fireworks**](https://fireworks.ai/) | **Default LLM provider** — fast inference, FirePass intelligent routing, cost-effective |119| [**firepass**](https://fireworks.ai/models?show=Serverless&filters=firepass) | Intelligent model routing; automatically selects optimal model for the task |120121### Code Quality122123| Tool | When to Use |124|------|-------------|125| [**biome**](https://github.com/biomejs/biome) | Fast linting and formatting for JavaScript/TypeScript/CSS; faster alternative to ESLint + Prettier |126127#### Biome Configuration128129```json130{131 "formatter": {132 "enabled": true,133 "indentStyle": "space",134 "indentWidth": 4135 },136 "javascript": {137 "formatter": {138 "quoteStyle": "double",139 "trailingCommas": "all"140 }141 }142}143```144145- **Indentation**: 4 spaces (not tabs)146- **Quote style**: double147- **Trailing commas**: `all` — always use trailing commas in arrays, objects, and function parameters148- Apply to all JS/TS projects using Biome149150### Infrastructure & Cloud151152| Tool | When to Use |153|------|-------------|154| [**cloudflare**](https://www.cloudflare.com/) | DNS management, CDN, DDoS protection, serverless workers, fast global edge network |155| [**docker**](https://www.docker.com/) | **Deployment packaging** — containerizing projects for remote deployment; `docker build` + `docker compose` for shipping to other machines |156| [**k3s**](https://github.com/k3s-io/k3s) | Lightweight Kubernetes for edge, IoT, CI/CD, resource-constrained environments |157| [**terraform**](https://github.com/hashicorp/terraform) | Infrastructure as Code for provisioning cloud resources; multi-cloud or complex infrastructure |158159**Local dev vs deployment:**160| Context | Tool | Rationale |161|---|---|---|162| Local development | **devenv** | Reproducible Nix shells without Docker overhead |163| Deployment packaging | **docker** | Universal runtime on target machines |164165**Note:** Docker is intentionally not used as a local development runtime. Use `devenv` for local envs, `docker` only for building deployable images.166167### Local Development168169| Tool | When to Use |170|------|-------------|171| [**portless**](https://github.com/unkeyed/portless) | Clean, memorable local URLs instead of `localhost:3000`; working with multiple local services |172173### API & Testing174175| Tool | When to Use |176|------|-------------|177| [**httpie**](https://github.com/httpie/cli) | **Default for API work** — testing APIs, debugging endpoints, agent workflows; natural syntax, auto JSON formatting |178| **curl** | Production scripts, CI/CD pipelines, binary data handling, systems where Python isn't available |179180**httpie vs curl decision guide:**181| Situation | Use |182|-----------|-----|183| API exploration, debugging | **httpie** — `http GET api.example.com/users page==1` |184| Production deployment scripts | **curl** — universally available, reliable exit codes |185| Agent-driven workflows | **httpie** — more readable in logs, less flag memorization |186| JSON-heavy APIs | **httpie** — native JSON support, auto-pretty-printing |187| Binary file downloads | **curl** — more robust for non-text data |188| CI/CD pipelines | **curl** — no dependency on Python/HTTPie |189190### Security & Secrets191192| Tool | When to Use |193|------|-------------|194| [**bitwarden**](https://bitwarden.com/) / [**bws**](https://github.com/bitwarden/sdk) | Password management, secure secret storage; bws CLI for programmatic access in scripts and CI/CD |195| [**wireguard**](https://www.wireguard.com/) | Simple, fast, modern VPN; secure point-to-point connections; mesh networking |196197### Remote Access198199| Tool | When to Use |200|------|-------------|201| [**eternal-terminal**](https://github.com/MisterTea/EternalTerminal) | Remote shell that auto-reconnects without interrupting session; resilient alternative to SSH |202WR:203NV:### Web Frameworks204NV:205QB:| Tool | When to Use |206KR:|------|-------------|207HP:|[**SvelteKit**](https://svelte.dev/) | Preferred full-stack framework; minimal JS, compile-time optimizations |208HP:|[**React**](https://react.dev/) | When ecosystem/project requirements demand it; fallback option |209KR:210VZ:211NV:### Task Automation212213| Tool | When to Use |214|------|-------------|215| [**just**](https://github.com/casey/just) | Running project tasks, build scripts, command shortcuts; Makefile replacement with better cross-platform support |216| [**mise**](https://github.com/jdx/mise) (tasks) | Defining and running project tasks when already using mise for version management |217218### Operating System219220| Context | Preference |221|---------|------------|222| **Desktop** | [**macOS**](https://www.apple.com/macos/) — Primary development and daily driver |223| **Servers** | [**Ubuntu**](https://ubuntu.com/) — Server environments, cloud VMs, production deployments |224225### Shell226227| Context | Preference | Notes |228|---------|------------|-------|229| **Interactive** | [**fish**](https://fishshell.com/) | Daily command-line work; autosuggestions, syntax highlighting |230| **Scripts / Agents** | [**zsh**](https://www.zsh.org/) | Automation; compatibility with existing bash scripts |231232## Exploring233234These tools are for learning and experimentation, not production use:235236| Tool | Interest |237|------|----------|238| [**chat-sdk**](https://chat-sdk.dev/) | Building AI chat interfaces, streaming LLM responses |239| [**colima**](https://github.com/abiosoft/colima) | macOS Docker-compatible containers via Lima; kept as fallback if docker daemon is needed locally |240| [**dotenvx**](https://github.com/dotenvx/dotenvx) | Managing environment variables across environments, encrypting secrets |241| [**gridland**](https://www.gridland.io/) | Building terminal apps with React and OpenTUI; works in both browser and terminal |242| [**endeavouros**](https://endeavouros.com/) | Arch-based Linux distribution; exploring as alternative desktop/server OS |243| [**json-render**](https://github.com/vercel-labs/json-render) | Rendering JSON as UI components; quick admin dashboards |244| [**memex**](https://github.com/iamtouchsky/memex) | Zettelkasten-based agent memory with bidirectional links; installed as pi package |245| [**smolvm**](https://github.com/smol-machines/smolvm) | MicroVMs for sandboxing untrusted code, portable executables, isolated dev environments |246| [**mastra**](https://github.com/mastra-ai/mastra) | Building AI agents, orchestrating LLM workflows |247| [**rust**](https://www.rust-lang.org/) | Systems programming, performance-critical apps, WebAssembly, CLI tools |248| [**varlock.dev**](https://varlock.dev/) | Securely sharing environment variables with team members |249| [**raganything**](https://github.com/HKUDS/RAG-Anything) | Multimodal RAG system for documents with images, tables, and equations |250251## Quick Decision Reference252253### Starting a new project?254- Use **bun** for JS/TS runtime and package management255- Use **TypeScript** for type safety256- Use **biome** for linting/formatting257- Use **zed** as code editor258RH:- Use **mise** for version management259RH:- Use **SvelteKit** for web framework (when applicable)260261### Need to search code?262- Use **ripgrep** (`rg`) - it's faster than grep263264### Need to find files?265- Use **fd** - more user-friendly than find266267### Working with Python?268- Use **uv** for dependencies and virtual environments269270### Need a local development environment?271- Use **devenv** — Nix-based, reproducible, no Docker overhead272273### Need containers on macOS?274- Use **docker** CLI + compose for deployment packaging only275- Do not use Docker as a local dev runtime — use devenv instead276277### Setting up CI/CD?278- Use **GitHub Actions** on **GitHub**279280### Need infrastructure?281- Use **Cloudflare** for edge/network282- Use **Terraform** for IaC283- Use **k3s** for lightweight Kubernetes284285### Managing secrets?286- Use **bitwarden** / **bws** for password/secret management287288## Handling Conflicts289290When project requirements conflict with these preferences:2912921. **Follow project requirements** — they're the authority for that codebase2932. **Note the deviation** — mention that you're using X instead of the preferred Y2943. **Don't update this file** — project-specific overrides don't change general preferences2954. **Consider asking** — if the conflict seems unnecessary, ask the user about it296297Example:298> "The project uses npm instead of bun (your preferred package manager). I'll proceed with npm for consistency with the existing codebase."299300## Common Agent Mistakes301302❌ **Wrong:** Suggesting npm when bun is available and preferred303✅ **Right:** "The project uses npm, but bun is preferred. I'll proceed with npm for consistency, or we can migrate."304305❌ **Wrong:** Installing unlisted tools without asking306✅ **Right:** "This tool isn't in my preferred stack. Should I use it anyway?"307308❌ **Wrong:** Using "Exploring" tools in production code309✅ **Right:** "This tool is in my 'Exploring' list — learning only. I'll use a production-grade alternative instead."310311❌ **Wrong:** Suggesting TypeScript for a one-off shell script312✅ **Right:** Use bash/fish for scripts; TypeScript for maintained projects313314❌ **Wrong:** Forgetting to document deviations from preferred stack315✅ **Right:** Always note when project requirements override personal preferences316317## Troubleshooting318319**Tool not available?**320→ Check if it's in the "Exploring" section (learning only, not production-ready)321→ For missing tools, ask user before installing322323**Preference conflicts with project requirements?**324→ Always follow project requirements325→ Document the deviation: "Using npm instead of preferred bun"326327**Unclear which tool to use?**328→ Check "Quick Decision Reference" section329→ When in doubt, ask before adding new dependencies330331**Version conflicts between tools?**332→ Use **mise** for version management333→ Pin versions in project config files334335## Versioning336337- **Last updated:** 2026-06-05338- **Version:** 2.0339- **Update notes:** Migrated default local dev environment from devbox to devenv. devenv provides native Nix DSL configuration, built-in services, tasks, git hooks, and testing. Projects migrated: kindercare, event-horizon, HongKongTaxiMeterCarThing.340341## Related Skills342343- **my-agent-file-conventions** — For creating AGENT.md files (not tech recommendations)