first-fluke/oh-my-agent-oma-dev-workflow
Use when setting up or optimizing developer workflows in a monorepo, managing mise tasks, git hooks, CI/CD pipelines, database migrations, or release automation. Invoke for development environment setup, build automation, testing workflows, and release coordination.
npx skills add https://github.com/first-fluke/oh-my-agent --skill oma-dev-workflow
Set up, run, optimize, and troubleshoot reproducible development workflows in monorepos using mise, task automation, validation pipelines, CI/CD, migrations, i18n builds, and release coordination.
mise.toml, task definitions, CI files, migration/i18n/build configs, and failure logs when relevantmise, project task definitions, runtime versions, package managers behind mise tasksmise.toml files and available tasks.mise install.mise tasks --all.mise install.| Action | SSL primitive | Evidence |
|--------|---------------|----------|
| Read task definitions | READ | mise.toml, CI config |
| Select task strategy | SELECT | Parallel/sequential/changed-scope |
| Run workflow commands | CALL_TOOL | mise run, mise install, mise tasks |
| Write workflow config | WRITE | Hooks, CI, env templates |
| Validate outputs | VALIDATE | Exit codes, logs, artifacts |
| Report status | NOTIFY | Final workflow summary |
mise, shell, CI/CD tooling, project package manager tasks behind misemise tasks --all
mise install
mise run lint
mise run test
For app-specific tasks:
mise run //{path}:{task}
| Scope | Resource target |
|-------|-----------------|
| CODEBASE | mise.toml, CI configs, scripts, generated clients |
| LOCAL_FS | Env templates, build outputs, logs |
| PROCESS | mise, build, test, lint, dev-server commands |
| CREDENTIALS | Secrets must not be hardcoded in workflow configs |
mise run tasks instead of direct package manager commandsmise install after pulling changes that might update runtime versionsmise run lint, mise run test) for independent operationslint:changed, test:changed)mise tasks --all to discover available tasks before running10. Document task dependencies in mise.toml comments
11. Use consistent task naming conventions across apps
12. Enable mise in CI/CD pipelines for reproducible builds
13. Pin runtime versions in mise.toml for consistency
14. Test tasks locally before committing CI/CD changes
15. Never use direct package manager commands when mise tasks exist
16. Never modify mise.toml without understanding task dependencies
17. Never skip mise install after toolchain version updates
18. Never run dev servers without checking port availability first
19. Never commit without running validation on affected apps
20. Never ignore task failures - always investigate root cause
21. Never hardcode secrets in mise.toml files
22. Never assume task availability - always verify with mise tasks
23. Never run destructive tasks (clean, reset) without confirmation
24. Never skip reading task definitions before running unfamiliar tasks
# Install mise
curl https://mise.run | sh
# Activate in shell
echo 'eval "$(~/.local/bin/mise activate)"' >> ~/.zshrc
# Install all runtimes defined in mise.toml
mise install
# Verify installation
mise list
project-root/
├── mise.toml # Root task definitions
├── apps/
│ ├── api/ # Backend application
│ │ └── mise.toml # App-specific tasks
│ ├── web/ # Frontend application
│ │ └── mise.toml
│ └── mobile/ # Mobile application
│ └── mise.toml
├── packages/
│ ├── shared/ # Shared libraries
│ └── config/ # Shared configuration
└── scripts/ # Utility scripts
Root-level tasks:
mise run lint # Lint all apps (parallel)
mise run test # Test all apps (parallel)
mise run dev # Start all dev servers
mise run build # Production builds
App-specific tasks:
# Syntax: mise run //{path}:{task}
mise run //apps/api:dev
mise run //apps/api:test
mise run //apps/web:build
| Task Type | Purpose | Example |
|-----------|---------|---------|
| dev | Start development server | mise run //apps/api:dev |
| build | Production build | mise run //apps/web:build |
| test | Run test suite | mise run //apps/api:test |
| lint | Run linter | mise run lint |
| format | Format code | mise run format |
| typecheck | Type checking | mise run typecheck |
| migrate | Database migrations | mise run //apps/api:migrate |
| Topic | Resource File | When to Load |
|-------|---------------|--------------|
| Validation Pipeline | resources/validation-pipeline.md | Git hooks, CI/CD, change-based testing |
| Database & Infrastructure | resources/database-patterns.md | Migrations, local Docker infra |
| API Generation | resources/api-workflows.md | Generating API clients |
| i18n Patterns | resources/i18n-patterns.md | Internationalization |
| Release Coordination | resources/release-coordination.md | Versioning, changelog, releases |
| Troubleshooting | resources/troubleshooting.md | Debugging issues |
Define dependencies in mise.toml:
[tasks.build]
depends = ["lint", "test"]
run = "echo 'Building after lint and test pass'"
[tasks.dev]
depends = ["//apps/api:dev", "//apps/web:dev"]
Parallel (independent tasks):
# Runs all lint tasks simultaneously
mise run lint
Sequential (dependent tasks):
# Runs in order: lint → test → build
mise run lint && mise run test && mise run build
Mixed approach:
# Start dev servers in background
mise run //apps/api:dev &
mise run //apps/web:dev &
wait
Common patterns for monorepo env vars:
# Database
DATABASE_URL=postgresql://user:pass@localhost:5432/db
# Cache
REDIS_URL=redis://localhost:6379/0
# API
API_URL=http://localhost:8000
# Frontend
PUBLIC_API_URL=http://localhost:8000
When setting up development environment:
mise list)When running tasks:
When troubleshooting:
mise config, mise doctor)| Issue | Solution |
|-------|----------|
| Task not found | Run mise tasks --all to list available tasks |
| Runtime not found | Run mise install to install missing runtime |
| Task hangs | Check for interactive prompts, use --yes if available |
| Port already in use | Find process: lsof -ti:PORT then kill |
| Permission denied | Check file permissions, try with proper user |
| Missing dependencies | Run mise run install or app-specific install |
Follow the core workflow step by step:
Vendor-specific execution protocols are injected automatically by oma agent:spawn.
Source files live under ../_shared/runtime/execution-protocols/{vendor}.md.
../_shared/core/clarification-protocol.md../_shared/core/difficulty-guide.mdmise, task runner, monorepo, dev server, lint, format, test, typecheck, build, deployment, ci/cd, parallel execution, workflow, automation, tooling
Take first-fluke/oh-my-agent-oma-dev-workflow from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.