Dev Workflow - Monorepo Task Automation Specialist
Scheduling
Goal
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.
Intent signature
- User asks about dev servers, mise tasks, lint/format/typecheck/test/build, git hooks, CI/CD, migrations, generated clients, i18n builds, or release automation.
- User needs workflow execution or developer environment setup rather than product feature implementation.
When to use
- Running development servers for monorepo with multiple applications
- Executing lint, format, typecheck across multiple apps in parallel
- Managing database migrations and schema changes
- Generating API clients or code from schemas
- Building internationalization (i18n) files
- Executing production builds and deployment preparation
- Running parallel tasks in monorepo context
- Setting up pre-commit validation workflows
- Troubleshooting mise task failures or configuration issues
- Optimizing CI/CD pipelines with mise
When NOT to use
- Database schema design or query tuning -> use DB Agent
- Backend API implementation -> use Backend Agent
- Frontend UI implementation -> use Frontend Agent
- Mobile development -> use Mobile Agent
Expected inputs
- Requested workflow operation, affected apps/packages, and current monorepo structure
mise.toml, task definitions, CI files, migration/i18n/build configs, and failure logs when relevant
- Desired validation, setup, or release outcome
Expected outputs
- Executed or documented mise task workflow
- Updated workflow config, CI/CD pipeline, hooks, env template, or release guidance when requested
- Status report with commands, outputs, failures, and next actions
Dependencies
mise, project task definitions, runtime versions, package managers behind mise tasks
- Resource guides for validation, database patterns, API workflows, i18n, release coordination, and troubleshooting
Control-flow features
- Branches by affected apps, task dependency graph, port availability, task failure, and CI/release context
- Calls local process commands; may write workflow/config files
- Must avoid destructive tasks and secrets in workflow configs
Structural Flow
Entry
- Identify affected apps/packages and requested workflow outcome.
- Read
mise.toml files and available tasks.
- Determine whether tasks can run in parallel or must be sequential.
Scenes
- PREPARE: Analyze requirements, task graph, runtime prerequisites, and ports.
- ACQUIRE: Inspect mise config, task definitions, CI hooks, env patterns, and logs.
- ACT: Run or modify mise tasks, workflow configs, or validation pipelines.
- VERIFY: Check exit codes, generated artifacts, logs, and CI compatibility.
- FINALIZE: Report command status, duration, failures, and next steps.
Transitions
- If runtime versions changed, run
mise install.
- If changed-file tasks exist, prefer changed-scope validation.
- If port is occupied, resolve or select another port before starting dev server.
- If a task is unfamiliar, read its definition before running.
Failure and recovery
- If task is missing, run
mise tasks --all.
- If runtime is missing, run or recommend
mise install.
- If task hangs, check for prompts or long-running dev-server behavior.
- If destructive task is requested, require confirmation.
Exit
- Success: workflow runs or config changes are verified.
- Partial success: task failures, missing runtime, or CI/environment blockers are explicit.
Logical Operations
Actions
| 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 |
Tools and instruments
mise, shell, CI/CD tooling, project package manager tasks behind mise
- Resource guides for validation, database, API, i18n, release, and troubleshooting
Canonical command path
mise tasks --all
mise install
mise run lint
mise run test
For app-specific tasks:
mise run //{path}:{task}
Resource scope
| 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 |
Preconditions
- Target workflow and affected project area are identifiable.
- Task definitions can be discovered or missing-task state is reported.
Effects and side effects
- May start dev servers, run tests/builds, generate clients, run migrations, or edit workflow configs.
- May consume CPU/time or occupy ports.
Guardrails
- Always use
mise run tasks instead of direct package manager commands
- Run
mise install after pulling changes that might update runtime versions
- Use parallel tasks (
mise run lint, mise run test) for independent operations
- Run lint/test only on apps with changed files (
lint:changed, test:changed)
- Validate commit messages with commitlint before committing
- Run pre-commit validation pipeline for staged files only
- Configure CI to skip unchanged apps for faster builds
- Check
mise tasks --all to discover available tasks before running
- Verify task output and exit codes for CI/CD integration
- Document task dependencies in mise.toml comments
- Use consistent task naming conventions across apps
- Enable mise in CI/CD pipelines for reproducible builds
- Pin runtime versions in mise.toml for consistency
- Test tasks locally before committing CI/CD changes
- Never use direct package manager commands when mise tasks exist
- Never modify mise.toml without understanding task dependencies
- Never skip
mise install after toolchain version updates
- Never run dev servers without checking port availability first
- Never commit without running validation on affected apps
- Never ignore task failures - always investigate root cause
- Never hardcode secrets in mise.toml files
- Never assume task availability - always verify with
mise tasks
- Never run destructive tasks (clean, reset) without confirmation
- Never skip reading task definitions before running unfamiliar tasks
- Always quote task names containing
: in mise.toml ([tasks."lint:changed"]) — unquoted colons fail TOML parsing
- Always set
monorepo_root = true (plus [monorepo].config_roots) in the root mise.toml before using //path:task syntax
Technical Guidelines
Prerequisites
# 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 Structure (Monorepo)
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
The root mise.toml must enable monorepo task paths, or every //path:task invocation fails with "require a monorepo root configuration":
# Root mise.toml — monorepo_root is a top-level key (before any [table])
monorepo_root = true
[monorepo]
config_roots = ["apps/*", "packages/*"]
Task Syntax
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}
# Requires monorepo_root = true in root mise.toml (see Project Structure)
mise run //apps/api:dev
mise run //apps/api:test
mise run //apps/web:build
TOML quoting rule: task names containing : must be quoted — [tasks."gen:api"], never [tasks.gen:api] (unquoted colons are a TOML parse error).
Common Task Patterns
| 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 |
Reference Guide
| 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 |
Task Dependencies
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 vs Sequential Execution
Parallel (independent tasks):
# Runs all lint tasks simultaneously (via depends)
mise run lint
# mise-native parallel execution of multiple tasks
mise run lint ::: test
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
Environment Variables
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
Output Templates
When setting up development environment:
- Runtime installation verification (
mise list)
- Dependency installation commands per app
- Environment variable template (.env.example)
- Development server startup commands
- Common task quick reference
When running tasks:
- Command executed with full path
- Expected output summary
- Duration and success/failure status
- Next recommended actions
When troubleshooting:
- Diagnostic commands (
mise config, mise doctor)
- Common issue solutions
- Port/process conflict resolution
- Cleanup commands if needed
Troubleshooting Guide
| 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 |
How to Execute
Follow the core workflow step by step:
- Analyze Task Requirements - Identify which apps are affected and task dependencies
- Check mise Configuration - Verify mise.toml structure and available tasks
- Determine Execution Strategy - Decide between parallel vs sequential task execution
- Run Prerequisites - Install runtimes, dependencies if needed
- Execute Tasks - Run mise tasks with proper error handling
- Verify Results - Check output, logs, and generated artifacts
- Report Status - Summarize success/failure with actionable next steps
Execution Protocol (CLI Mode)
Vendor-specific execution protocols are injected automatically by oma agent spawn.
Source files live under ../_shared/runtime/execution-protocols/{vendor}.md.
References
- Clarification:
../_shared/core/clarification-protocol.md
- Difficulty assessment:
../_shared/core/difficulty-guide.md
Knowledge Reference
mise, task runner, monorepo, dev server, lint, format, test, typecheck, build, deployment, ci/cd, parallel execution, workflow, automation, tooling
1---
2name: oma-dev-workflow
3description: Use when setting up or optimizing developer workflows in a
4 monorepo, managing mise tasks, git hooks, CI/CD pipelines, database
5 migrations, or release automation. Invoke for development environment setup,
6 build automation, testing workflows, and release coordination.
7---
8
9# Dev Workflow - Monorepo Task Automation Specialist
10
11## Scheduling
12
13### Goal
14Set up, run, optimize, and troubleshoot reproducible development workflows in monorepos using `mise`, task automation, validation pipelines, CI/CD, migrations, i18n builds, and release coordination.
15
16### Intent signature
17- User asks about dev servers, mise tasks, lint/format/typecheck/test/build, git hooks, CI/CD, migrations, generated clients, i18n builds, or release automation.
18- User needs workflow execution or developer environment setup rather than product feature implementation.
19
20### When to use
21
22- Running development servers for monorepo with multiple applications
23- Executing lint, format, typecheck across multiple apps in parallel
24- Managing database migrations and schema changes
25- Generating API clients or code from schemas
26- Building internationalization (i18n) files
27- Executing production builds and deployment preparation
28- Running parallel tasks in monorepo context
29- Setting up pre-commit validation workflows
30- Troubleshooting mise task failures or configuration issues
31- Optimizing CI/CD pipelines with mise
32
33### When NOT to use
34
35- Database schema design or query tuning -> use DB Agent
36- Backend API implementation -> use Backend Agent
37- Frontend UI implementation -> use Frontend Agent
38- Mobile development -> use Mobile Agent
39
40### Expected inputs
41- Requested workflow operation, affected apps/packages, and current monorepo structure
42- `mise.toml`, task definitions, CI files, migration/i18n/build configs, and failure logs when relevant
43- Desired validation, setup, or release outcome
44
45### Expected outputs
46- Executed or documented mise task workflow
47- Updated workflow config, CI/CD pipeline, hooks, env template, or release guidance when requested
48- Status report with commands, outputs, failures, and next actions
49
50### Dependencies
51- `mise`, project task definitions, runtime versions, package managers behind mise tasks
52- Resource guides for validation, database patterns, API workflows, i18n, release coordination, and troubleshooting
53
54### Control-flow features
55- Branches by affected apps, task dependency graph, port availability, task failure, and CI/release context
56- Calls local process commands; may write workflow/config files
57- Must avoid destructive tasks and secrets in workflow configs
58
59## Structural Flow
60
61### Entry
621. Identify affected apps/packages and requested workflow outcome.
632. Read `mise.toml` files and available tasks.
643. Determine whether tasks can run in parallel or must be sequential.
65
66### Scenes
671. **PREPARE**: Analyze requirements, task graph, runtime prerequisites, and ports.
682. **ACQUIRE**: Inspect mise config, task definitions, CI hooks, env patterns, and logs.
693. **ACT**: Run or modify mise tasks, workflow configs, or validation pipelines.
704. **VERIFY**: Check exit codes, generated artifacts, logs, and CI compatibility.
715. **FINALIZE**: Report command status, duration, failures, and next steps.
72
73### Transitions
74- If runtime versions changed, run `mise install`.
75- If changed-file tasks exist, prefer changed-scope validation.
76- If port is occupied, resolve or select another port before starting dev server.
77- If a task is unfamiliar, read its definition before running.
78
79### Failure and recovery
80- If task is missing, run `mise tasks --all`.
81- If runtime is missing, run or recommend `mise install`.
82- If task hangs, check for prompts or long-running dev-server behavior.
83- If destructive task is requested, require confirmation.
84
85### Exit
86- Success: workflow runs or config changes are verified.
87- Partial success: task failures, missing runtime, or CI/environment blockers are explicit.
88
89## Logical Operations
90
91### Actions
92| Action | SSL primitive | Evidence |
93|--------|---------------|----------|
94| Read task definitions | `READ` | `mise.toml`, CI config |
95| Select task strategy | `SELECT` | Parallel/sequential/changed-scope |
96| Run workflow commands | `CALL_TOOL` | `mise run`, `mise install`, `mise tasks` |
97| Write workflow config | `WRITE` | Hooks, CI, env templates |
98| Validate outputs | `VALIDATE` | Exit codes, logs, artifacts |
99| Report status | `NOTIFY` | Final workflow summary |
100
101### Tools and instruments
102- `mise`, shell, CI/CD tooling, project package manager tasks behind mise
103- Resource guides for validation, database, API, i18n, release, and troubleshooting
104
105### Canonical command path
106```bash
107mise tasks --all
108mise install
109mise run lint
110mise run test
111```
112
113For app-specific tasks:
114```bash
115mise run //{path}:{task}
116```
117
118### Resource scope
119| Scope | Resource target |
120|-------|-----------------|
121| `CODEBASE` | `mise.toml`, CI configs, scripts, generated clients |
122| `LOCAL_FS` | Env templates, build outputs, logs |
123| `PROCESS` | mise, build, test, lint, dev-server commands |
124| `CREDENTIALS` | Secrets must not be hardcoded in workflow configs |
125
126### Preconditions
127- Target workflow and affected project area are identifiable.
128- Task definitions can be discovered or missing-task state is reported.
129
130### Effects and side effects
131- May start dev servers, run tests/builds, generate clients, run migrations, or edit workflow configs.
132- May consume CPU/time or occupy ports.
133
134### Guardrails
135
1361. Always use `mise run` tasks instead of direct package manager commands
1372. Run `mise install` after pulling changes that might update runtime versions
1383. Use parallel tasks (`mise run lint`, `mise run test`) for independent operations
1394. Run lint/test only on apps with changed files (`lint:changed`, `test:changed`)
1405. Validate commit messages with commitlint before committing
1416. Run pre-commit validation pipeline for staged files only
1427. Configure CI to skip unchanged apps for faster builds
1438. Check `mise tasks --all` to discover available tasks before running
1449. Verify task output and exit codes for CI/CD integration
14510. Document task dependencies in mise.toml comments
14611. Use consistent task naming conventions across apps
14712. Enable mise in CI/CD pipelines for reproducible builds
14813. Pin runtime versions in mise.toml for consistency
14914. Test tasks locally before committing CI/CD changes
15015. Never use direct package manager commands when mise tasks exist
15116. Never modify mise.toml without understanding task dependencies
15217. Never skip `mise install` after toolchain version updates
15318. Never run dev servers without checking port availability first
15419. Never commit without running validation on affected apps
15520. Never ignore task failures - always investigate root cause
15621. Never hardcode secrets in mise.toml files
15722. Never assume task availability - always verify with `mise tasks`
15823. Never run destructive tasks (clean, reset) without confirmation
15924. Never skip reading task definitions before running unfamiliar tasks
16025. Always quote task names containing `:` in mise.toml (`[tasks."lint:changed"]`) — unquoted colons fail TOML parsing
16126. Always set `monorepo_root = true` (plus `[monorepo].config_roots`) in the root mise.toml before using `//path:task` syntax
162
163### Technical Guidelines
164
165### Prerequisites
166
167```bash
168# Install mise
169curl https://mise.run | sh
170
171# Activate in shell
172echo 'eval "$(~/.local/bin/mise activate)"' >> ~/.zshrc
173
174# Install all runtimes defined in mise.toml
175mise install
176
177# Verify installation
178mise list
179```
180
181### Project Structure (Monorepo)
182
183```
184project-root/
185├── mise.toml # Root task definitions
186├── apps/
187│ ├── api/ # Backend application
188│ │ └── mise.toml # App-specific tasks
189│ ├── web/ # Frontend application
190│ │ └── mise.toml
191│ └── mobile/ # Mobile application
192│ └── mise.toml
193├── packages/
194│ ├── shared/ # Shared libraries
195│ └── config/ # Shared configuration
196└── scripts/ # Utility scripts
197```
198
199The root `mise.toml` must enable monorepo task paths, or every `//path:task` invocation fails with "require a monorepo root configuration":
200
201```toml
202# Root mise.toml — monorepo_root is a top-level key (before any [table])
203monorepo_root = true
204
205[monorepo]
206config_roots = ["apps/*", "packages/*"]
207```
208
209### Task Syntax
210
211**Root-level tasks:**
212```bash
213mise run lint # Lint all apps (parallel)
214mise run test # Test all apps (parallel)
215mise run dev # Start all dev servers
216mise run build # Production builds
217```
218
219**App-specific tasks:**
220```bash
221# Syntax: mise run //{path}:{task}
222# Requires monorepo_root = true in root mise.toml (see Project Structure)
223mise run //apps/api:dev
224mise run //apps/api:test
225mise run //apps/web:build
226```
227
228**TOML quoting rule:** task names containing `:` must be quoted — `[tasks."gen:api"]`, never `[tasks.gen:api]` (unquoted colons are a TOML parse error).
229
230### Common Task Patterns
231
232| Task Type | Purpose | Example |
233|-----------|---------|---------|
234| `dev` | Start development server | `mise run //apps/api:dev` |
235| `build` | Production build | `mise run //apps/web:build` |
236| `test` | Run test suite | `mise run //apps/api:test` |
237| `lint` | Run linter | `mise run lint` |
238| `format` | Format code | `mise run format` |
239| `typecheck` | Type checking | `mise run typecheck` |
240| `migrate` | Database migrations | `mise run //apps/api:migrate` |
241
242### Reference Guide
243
244| Topic | Resource File | When to Load |
245|-------|---------------|--------------|
246| Validation Pipeline | `resources/validation-pipeline.md` | Git hooks, CI/CD, change-based testing |
247| Database & Infrastructure | `resources/database-patterns.md` | Migrations, local Docker infra |
248| API Generation | `resources/api-workflows.md` | Generating API clients |
249| i18n Patterns | `resources/i18n-patterns.md` | Internationalization |
250| Release Coordination | `resources/release-coordination.md` | Versioning, changelog, releases |
251| Troubleshooting | `resources/troubleshooting.md` | Debugging issues |
252
253### Task Dependencies
254
255Define dependencies in `mise.toml`:
256
257```toml
258[tasks.build]
259depends = ["lint", "test"]
260run = "echo 'Building after lint and test pass'"
261
262[tasks.dev]
263depends = ["//apps/api:dev", "//apps/web:dev"]
264```
265
266### Parallel vs Sequential Execution
267
268**Parallel (independent tasks):**
269```bash
270# Runs all lint tasks simultaneously (via depends)
271mise run lint
272
273# mise-native parallel execution of multiple tasks
274mise run lint ::: test
275```
276
277**Sequential (dependent tasks):**
278```bash
279# Runs in order: lint → test → build
280mise run lint && mise run test && mise run build
281```
282
283**Mixed approach:**
284```bash
285# Start dev servers in background
286mise run //apps/api:dev &
287mise run //apps/web:dev &
288wait
289```
290
291### Environment Variables
292
293Common patterns for monorepo env vars:
294
295```bash
296# Database
297DATABASE_URL=postgresql://user:pass@localhost:5432/db
298
299# Cache
300REDIS_URL=redis://localhost:6379/0
301
302# API
303API_URL=http://localhost:8000
304
305# Frontend
306PUBLIC_API_URL=http://localhost:8000
307```
308
309### Output Templates
310
311When setting up development environment:
3121. Runtime installation verification (`mise list`)
3132. Dependency installation commands per app
3143. Environment variable template (.env.example)
3154. Development server startup commands
3165. Common task quick reference
317
318When running tasks:
3191. Command executed with full path
3202. Expected output summary
3213. Duration and success/failure status
3224. Next recommended actions
323
324When troubleshooting:
3251. Diagnostic commands (`mise config`, `mise doctor`)
3262. Common issue solutions
3273. Port/process conflict resolution
3284. Cleanup commands if needed
329
330### Troubleshooting Guide
331
332| Issue | Solution |
333|-------|----------|
334| Task not found | Run `mise tasks --all` to list available tasks |
335| Runtime not found | Run `mise install` to install missing runtime |
336| Task hangs | Check for interactive prompts, use `--yes` if available |
337| Port already in use | Find process: `lsof -ti:PORT` then kill |
338| Permission denied | Check file permissions, try with proper user |
339| Missing dependencies | Run `mise run install` or app-specific install |
340
341### How to Execute
342
343Follow the core workflow step by step:
3441. **Analyze Task Requirements** - Identify which apps are affected and task dependencies
3452. **Check mise Configuration** - Verify mise.toml structure and available tasks
3463. **Determine Execution Strategy** - Decide between parallel vs sequential task execution
3474. **Run Prerequisites** - Install runtimes, dependencies if needed
3485. **Execute Tasks** - Run mise tasks with proper error handling
3496. **Verify Results** - Check output, logs, and generated artifacts
3507. **Report Status** - Summarize success/failure with actionable next steps
351
352### Execution Protocol (CLI Mode)
353
354Vendor-specific execution protocols are injected automatically by `oma agent spawn`.
355Source files live under `../_shared/runtime/execution-protocols/{vendor}.md`.
356
357## References
358
359- Clarification: `../_shared/core/clarification-protocol.md`
360- Difficulty assessment: `../_shared/core/difficulty-guide.md`
361
362### Knowledge Reference
363
364mise, task runner, monorepo, dev server, lint, format, test, typecheck, build, deployment, ci/cd, parallel execution, workflow, automation, tooling