lemming-cli 0.4.0__tar.gz → 0.4.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/PKG-INFO +1 -1
  2. lemming_cli-0.4.1/SKILL.md +103 -0
  3. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/pyproject.toml +1 -1
  4. lemming_cli-0.4.0/SKILL.md +0 -86
  5. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/.github/workflows/ci.yml +0 -0
  6. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/.github/workflows/publish.yml +0 -0
  7. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/.github/workflows/screenshots.yml +0 -0
  8. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/.gitignore +0 -0
  9. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/.prettierignore +0 -0
  10. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/.prettierrc +0 -0
  11. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/Dockerfile +0 -0
  12. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/LICENSE +0 -0
  13. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/README.md +0 -0
  14. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/biome.json +0 -0
  15. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/docker-compose.yml +0 -0
  16. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/docs/EVALS.md +0 -0
  17. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/docs/HOOKS.md +0 -0
  18. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/docs/screenshots/dashboard-desktop.png +0 -0
  19. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/docs/screenshots/dashboard-mobile.png +0 -0
  20. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/docs/screenshots/task-log-desktop.png +0 -0
  21. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/docs/screenshots/task-log-mobile.png +0 -0
  22. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/package-lock.json +0 -0
  23. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/package.json +0 -0
  24. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/playwright.config.js +0 -0
  25. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/__init__.py +0 -0
  26. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/__init__.py +0 -0
  27. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/auth.py +0 -0
  28. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/auth_test.py +0 -0
  29. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/config.py +0 -0
  30. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/config_test.py +0 -0
  31. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/conftest.py +0 -0
  32. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/context.py +0 -0
  33. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/context_test.py +0 -0
  34. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/directories.py +0 -0
  35. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/directories_test.py +0 -0
  36. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/files.py +0 -0
  37. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/files_test.py +0 -0
  38. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/hooks.py +0 -0
  39. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/hooks_test.py +0 -0
  40. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/logging.py +0 -0
  41. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/logging_test.py +0 -0
  42. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/loop.py +0 -0
  43. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/loop_test.py +0 -0
  44. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/main.py +0 -0
  45. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/main_test.py +0 -0
  46. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/tasks.py +0 -0
  47. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api/tasks_test.py +0 -0
  48. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/api_test.py +0 -0
  49. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/brief_test.py +0 -0
  50. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/__init__.py +0 -0
  51. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/brief.py +0 -0
  52. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/config.py +0 -0
  53. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/config_test.py +0 -0
  54. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/exec_cli.py +0 -0
  55. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/exec_cli_test.py +0 -0
  56. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/goal.py +0 -0
  57. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/goal_test.py +0 -0
  58. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/hooks.py +0 -0
  59. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/hooks_test.py +0 -0
  60. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/machine_output_test.py +0 -0
  61. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/main.py +0 -0
  62. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/main_test.py +0 -0
  63. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/operations.py +0 -0
  64. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/operations_test.py +0 -0
  65. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/progress.py +0 -0
  66. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/progress_test.py +0 -0
  67. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/readability_cli.py +0 -0
  68. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/readability_cli_test.py +0 -0
  69. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/skill.py +0 -0
  70. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/skill_test.py +0 -0
  71. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/stop_test.py +0 -0
  72. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/tasks.py +0 -0
  73. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli/tasks_test.py +0 -0
  74. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/cli_test.py +0 -0
  75. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/conftest.py +0 -0
  76. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/__init__.py +0 -0
  77. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/__main__.py +0 -0
  78. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/cli.py +0 -0
  79. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/cli_test.py +0 -0
  80. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/container.py +0 -0
  81. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/container_test.py +0 -0
  82. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/fixtures.py +0 -0
  83. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/fixtures_test.py +0 -0
  84. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/harness.py +0 -0
  85. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/harness_test.py +0 -0
  86. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/readability.py +0 -0
  87. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/readability_test.py +0 -0
  88. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/roadmap.py +0 -0
  89. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/roadmap_test.py +0 -0
  90. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/scenarios.py +0 -0
  91. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/scenarios_test.py +0 -0
  92. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/suites.py +0 -0
  93. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/trial.py +0 -0
  94. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/evals/trial_test.py +0 -0
  95. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/hooks.py +0 -0
  96. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/hooks_test.py +0 -0
  97. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/integration_test.py +0 -0
  98. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/main.py +0 -0
  99. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/main_test.py +0 -0
  100. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/models.py +0 -0
  101. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/models_test.py +0 -0
  102. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/orchestrator.py +0 -0
  103. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/orchestrator_test.py +0 -0
  104. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/paths.py +0 -0
  105. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/paths_test.py +0 -0
  106. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/persistence.py +0 -0
  107. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/persistence_test.py +0 -0
  108. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/prompts/hooks/50-readability.md +0 -0
  109. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/prompts/hooks/60-testing.md +0 -0
  110. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/prompts/hooks/70-ux.md +0 -0
  111. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/prompts/hooks/90-roadmap.md +0 -0
  112. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/prompts/taskrunner.md +0 -0
  113. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/prompts.py +0 -0
  114. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/prompts_test.py +0 -0
  115. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/providers.py +0 -0
  116. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/providers_test.py +0 -0
  117. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/runner.py +0 -0
  118. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/runner_test.py +0 -0
  119. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/scope.py +0 -0
  120. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/scope_test.py +0 -0
  121. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/shutdown.py +0 -0
  122. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/shutdown_integration_test.py +0 -0
  123. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/shutdown_test.py +0 -0
  124. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/tasks/__init__.py +0 -0
  125. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/tasks/lifecycle.py +0 -0
  126. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/tasks/lifecycle_test.py +0 -0
  127. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/tasks/limits.py +0 -0
  128. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/tasks/operations.py +0 -0
  129. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/tasks/operations_test.py +0 -0
  130. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/tasks/progress.py +0 -0
  131. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/tasks/progress_test.py +0 -0
  132. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/tasks/queries.py +0 -0
  133. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/tasks/queries_test.py +0 -0
  134. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/web/dashboard.spec.js +0 -0
  135. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/web/dashboard.test.js +0 -0
  136. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/web/favicon.js +0 -0
  137. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/web/favicon.spec.js +0 -0
  138. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/web/files.html +0 -0
  139. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/web/files.spec.js +0 -0
  140. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/web/index.html +0 -0
  141. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/web/index.js +0 -0
  142. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/web/logs.html +0 -0
  143. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/web/logs.test.js +0 -0
  144. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/web/mancha.js +0 -0
  145. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/src/lemming/web/screenshots.spec.js +0 -0
  146. {lemming_cli-0.4.0 → lemming_cli-0.4.1}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: lemming-cli
3
- Version: 0.4.0
3
+ Version: 0.4.1
4
4
  Summary: An autonomous, iterative task runner for AI coding agents.
5
5
  Project-URL: Homepage, https://github.com/owahltinez/lemming
6
6
  Project-URL: Repository, https://github.com/owahltinez/lemming
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: lemming
3
+ description: One interface over the AI coding agent CLIs (agy, claude, codex). Delegate a single task to another agent to spare a quota or play to its strengths; run a readability, testing, or UX review over changed files, a branch, or a path; or drive a multi-task project through a roadmap that survives context limits. Use whenever work should run under a different agent than the current one, when reviewing a diff before opening a pull request, or when a job is too large for one agent run.
4
+ license: MIT
5
+ ---
6
+
7
+ # lemming
8
+
9
+ One interface over several agent CLIs. You do not need to know how `agy`,
10
+ `claude`, or `codex` spell their flags — only `lemming`.
11
+
12
+ Use `exec` for one unit of work, and a roadmap for anything larger than a
13
+ single agent run can hold.
14
+
15
+ ## Delegate one task
16
+
17
+ ```sh
18
+ lemming exec "Fix the flaky heartbeat test in src/runner_test.py" --runner codex
19
+
20
+ # Pipe a longer handoff rather than fighting shell quoting; no length limit
21
+ cat handoff.md | lemming exec -f - --runner agy
22
+ ```
23
+
24
+ The agent's closing message comes back on **stdout**, everything else on
25
+ stderr, and the exit code is 0 only if the task completed. Read that message
26
+ instead of hunting through logs.
27
+
28
+ The task starts with an empty context and sees nothing of your conversation,
29
+ so give it everything it needs.
30
+
31
+ ## Run a review
32
+
33
+ With no description there is nothing for a task runner to do, so only the
34
+ reviews run — against work that already exists.
35
+
36
+ ```sh
37
+ lemming exec --review readability # uncommitted work
38
+ lemming exec --review testing --scope main...HEAD
39
+ lemming exec --review all --scope src/api/
40
+ lemming exec "Add pagination" --review all # do the work, then gate it
41
+
42
+ # Someone else's branch, in a worktree so your own tree is untouched
43
+ git worktree add /tmp/pr-123 && (cd /tmp/pr-123 && gh pr checkout 123)
44
+ lemming -C /tmp/pr-123 exec --review testing --scope main...HEAD
45
+ ```
46
+
47
+ `--scope` takes paths, which pass through untouched, or a git revision range,
48
+ which is resolved to the files it changed. It defaults to uncommitted work,
49
+ and a clean tree stops the run rather than reviewing everything.
50
+
51
+ Reviews **edit the workspace** — readability applies fixes and reruns checks.
52
+ That is the point, but it means a review is not read-only.
53
+
54
+ ## Drive a roadmap
55
+
56
+ For work that outlasts one agent run — a migration, a multi-step feature —
57
+ break it into tasks. Each runs with a fresh context seeded only by the goal
58
+ and recorded progress, so the project survives context limits.
59
+
60
+ ```sh
61
+ lemming goal "Add offline support with a service worker and a sync queue"
62
+ lemming add "Register the service worker and cache the app shell"
63
+ lemming add "Queue writes in IndexedDB while offline"
64
+ lemming run # runs until the queue drains
65
+ ```
66
+
67
+ Check on it, and read what an agent actually did:
68
+
69
+ ```sh
70
+ lemming status # queue, attempts, and recorded progress
71
+ lemming status <id> # one task in detail, including its runner command
72
+ lemming logs # the active task's log, or logs <id> for one task
73
+ ```
74
+
75
+ Adjust it while it runs — new tasks are picked up automatically:
76
+
77
+ ```sh
78
+ lemming add "Add a retry backoff to the sync queue" --index 0 # jump the queue
79
+ lemming stop --after-current-task # drain, then stop
80
+ ```
81
+
82
+ After each task, review hooks run automatically and a roadmap hook may revise
83
+ the queue. `lemming hooks list` shows them; `lemming hooks disable <name>`
84
+ turns one off for the project.
85
+
86
+ ## What to know before running any of it
87
+
88
+ - **The agent runs unattended.** `--yolo` is the default, so it does not
89
+ inherit the permission prompts of whatever launched it. Treat this as
90
+ granting an agent unsupervised write access to the working directory.
91
+ - **`exec` makes one attempt, no retry.** A failure is final. A roadmap task
92
+ retries (3 by default) with its progress carried forward.
93
+ - **Interrupting leaves partial edits.** Nothing is restored, so there is no
94
+ atomicity to rely on.
95
+ - **Concurrent runs in one checkout interleave their edits.** Give each
96
+ writing run its own worktree and address it with `-C`.
97
+ - **Failures keep their state.** The directory is printed on stderr and holds
98
+ the run's log directly, so `cat <that dir>/*-runner.log` is the whole
99
+ recovery. It is retired automatically after a week.
100
+ - **`--tasks-file` and `-C` are group options.** They go before the
101
+ subcommand — `lemming -C ../other exec ...`, never `exec -C ../other`.
102
+
103
+ `lemming --help`, or `--help` on any subcommand, has the full flag list.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "lemming-cli"
7
- version = "0.4.0"
7
+ version = "0.4.1"
8
8
  description = "An autonomous, iterative task runner for AI coding agents."
9
9
  readme = "README.md"
10
10
  authors = [
@@ -1,86 +0,0 @@
1
- ---
2
- name: lemming
3
- description: Delegate a single coding task to another AI agent CLI (agy, claude, codex) through one interface, or run a code review — readability, testing, UX — over changed files, a PR branch, or a path. Use when handing work to a different agent to spare a quota or play to its strengths, or when reviewing a diff before opening a pull request. Not for driving a multi-task project; that is a roadmap.
4
- license: MIT
5
- ---
6
-
7
- # lemming
8
-
9
- One interface over several agent CLIs. You do not need to know how `agy`,
10
- `claude`, or `codex` spell their flags — only `lemming exec`.
11
-
12
- ## Delegate one task
13
-
14
- ```sh
15
- lemming exec "Fix the flaky heartbeat test in src/runner_test.py" --runner codex
16
- ```
17
-
18
- The agent's closing message comes back on **stdout**; progress and the event
19
- trace go to stderr. Exit code is 0 only if the task completed. That message is
20
- the return value — read it instead of hunting through logs.
21
-
22
- Pipe a longer handoff rather than fighting shell quoting. There is no length
23
- limit, unlike a roadmap task description:
24
-
25
- ```sh
26
- cat handoff.md | lemming exec -f - --runner agy
27
- ```
28
-
29
- Delegate when another agent's quota, price, or strengths suit the work better
30
- than yours. Give the task everything it needs: it starts with an empty context
31
- and sees nothing of your conversation.
32
-
33
- ## Run a review
34
-
35
- With no description there is nothing for a task runner to do, so only the
36
- reviews run — against work that already exists.
37
-
38
- ```sh
39
- lemming exec --review readability # uncommitted work
40
- lemming exec --review testing --scope main...HEAD
41
- lemming exec --review all --scope src/api/
42
- lemming exec "Add pagination" --review all # do the work, then gate it
43
- ```
44
-
45
- `--scope` takes paths, which pass through untouched, or a git revision range,
46
- which is resolved to the files it changed. It defaults to uncommitted work.
47
- A clean tree stops the run rather than reviewing everything.
48
-
49
- Reviews **edit the workspace**: readability applies fixes and reruns checks.
50
- That is the point — but it means a review is not read-only.
51
-
52
- ## Reviewing someone else's branch
53
-
54
- Check it out in a worktree so your own tree is untouched, and point `-C` at it:
55
-
56
- ```sh
57
- git worktree add /tmp/pr-123 && (cd /tmp/pr-123 && gh pr checkout 123)
58
- lemming -C /tmp/pr-123 exec --review testing --scope main...HEAD
59
- ```
60
-
61
- ## What to know before running it
62
-
63
- - **The agent runs unattended.** `--yolo` is the default, so it does not
64
- inherit the permission prompts of whatever launched it. Treat `lemming exec`
65
- as granting an agent unsupervised write access to the working directory.
66
- - **One agent run, no retry.** A failure is final; it does not silently try
67
- again. `--time-limit` caps the wall clock (default 60 minutes).
68
- - **Interrupting leaves partial edits.** The workspace is not restored, so
69
- there is no atomicity to rely on.
70
- - **Failures keep their log.** The state directory path is printed on stderr;
71
- read it with `lemming logs` pointed at that tasks file.
72
-
73
- ## Running several at once
74
-
75
- Concurrent runs in one checkout will interleave their edits. Give each write
76
- task its own worktree and address it with `-C`. Read-only work parallelizes
77
- safely as-is.
78
-
79
- ## When not to use it
80
-
81
- `exec` is for one unit of work. Anything needing more context than a single
82
- agent run can hold — a migration across a large codebase, a multi-step feature
83
- — belongs on a roadmap: `lemming add`, then `lemming run`. In particular,
84
- `--scope .` over a large repository *samples*; it does not cover.
85
-
86
- Run `lemming exec --help` for the full flag list.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes