guild-cli 0.22.0__tar.gz → 0.22.2__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 (130) hide show
  1. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/ask-colleague/SKILL.md +77 -18
  2. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/ask-colleague/prompts/explore.md +11 -1
  3. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/ask-colleague/prompts/review.md +9 -8
  4. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/ask-colleague/prompts/write.md +7 -1
  5. guild_cli-0.22.2/.claude/skills/ask-colleague/scripts/ask-colleague.sh +941 -0
  6. {guild_cli-0.22.0 → guild_cli-0.22.2}/CHANGELOG.md +65 -0
  7. {guild_cli-0.22.0 → guild_cli-0.22.2}/PKG-INFO +2 -2
  8. {guild_cli-0.22.0 → guild_cli-0.22.2}/docs/skill-sources.md +65 -45
  9. {guild_cli-0.22.0 → guild_cli-0.22.2}/pyproject.toml +1 -1
  10. {guild_cli-0.22.0 → guild_cli-0.22.2}/uv.lock +1 -1
  11. guild_cli-0.22.0/.claude/skills/ask-colleague/scripts/ask-colleague.sh +0 -567
  12. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/agent-config/SKILL.md +0 -0
  13. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
  14. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/agent-config/scripts/show.sh +0 -0
  15. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
  16. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
  17. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/challenge/SKILL.md +0 -0
  18. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/challenge/scripts/challenge.sh +0 -0
  19. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/cicd/SKILL.md +0 -0
  20. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
  21. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
  22. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
  23. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
  24. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/cicd/scripts/workflow.sh +0 -0
  25. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/communicate/SKILL.md +0 -0
  26. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
  27. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
  28. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
  29. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
  30. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +0 -0
  31. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
  32. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/deviate/SKILL.md +0 -0
  33. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/deviate/scripts/deviate.sh +0 -0
  34. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
  35. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
  36. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/guild/SKILL.md +0 -0
  37. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/guild/scripts/configure-repo.sh +0 -0
  38. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/guild/scripts/create.sh +0 -0
  39. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/guild/scripts/overview.sh +0 -0
  40. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/onboard/SKILL.md +0 -0
  41. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/onboard/scripts/onboard.sh +0 -0
  42. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/outsource/SKILL.md +0 -0
  43. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/outsource/prompts/explore.md +0 -0
  44. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/outsource/prompts/review.md +0 -0
  45. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/outsource/prompts/write.md +0 -0
  46. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/outsource/scripts/outsource.sh +0 -0
  47. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
  48. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
  49. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/recall/SKILL.md +0 -0
  50. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/recall/scripts/recall.sh +0 -0
  51. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/remember/SKILL.md +0 -0
  52. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/remember/scripts/remember.sh +0 -0
  53. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/run-tests/SKILL.md +0 -0
  54. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/run-tests/scripts/test.sh +0 -0
  55. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/scope/SKILL.md +0 -0
  56. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/scope/scripts/scope.sh +0 -0
  57. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/sonarclaude/SKILL.md +0 -0
  58. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
  59. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/spec-to-plan/SKILL.md +0 -0
  60. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
  61. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/summarize-delivery/SKILL.md +0 -0
  62. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/summarize-delivery/scripts/summarize-delivery.sh +0 -0
  63. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/teach/SKILL.md +0 -0
  64. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/teach/scripts/teach.sh +0 -0
  65. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/think/SKILL.md +0 -0
  66. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/think/scripts/think.sh +0 -0
  67. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/version-bump/SKILL.md +0 -0
  68. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills/version-bump/scripts/bump.py +0 -0
  69. {guild_cli-0.22.0 → guild_cli-0.22.2}/.claude/skills.local.yaml.example +0 -0
  70. {guild_cli-0.22.0 → guild_cli-0.22.2}/.devague/frames/guildmaster-ships-teach-and-onboard-two-agent-firs.json +0 -0
  71. {guild_cli-0.22.0 → guild_cli-0.22.2}/.devague/plans/guildmaster-ships-teach-and-onboard-two-agent-firs.json +0 -0
  72. {guild_cli-0.22.0 → guild_cli-0.22.2}/.eidetic/memory/default__public.jsonl +0 -0
  73. {guild_cli-0.22.0 → guild_cli-0.22.2}/.eidetic/memory/guildmaster__public.jsonl +0 -0
  74. {guild_cli-0.22.0 → guild_cli-0.22.2}/.flake8 +0 -0
  75. {guild_cli-0.22.0 → guild_cli-0.22.2}/.github/workflows/publish.yml +0 -0
  76. {guild_cli-0.22.0 → guild_cli-0.22.2}/.github/workflows/tests.yml +0 -0
  77. {guild_cli-0.22.0 → guild_cli-0.22.2}/.gitignore +0 -0
  78. {guild_cli-0.22.0 → guild_cli-0.22.2}/.markdownlint-cli2.yaml +0 -0
  79. {guild_cli-0.22.0 → guild_cli-0.22.2}/CLAUDE.md +0 -0
  80. {guild_cli-0.22.0 → guild_cli-0.22.2}/LICENSE +0 -0
  81. {guild_cli-0.22.0 → guild_cli-0.22.2}/README.md +0 -0
  82. {guild_cli-0.22.0 → guild_cli-0.22.2}/culture.yaml +0 -0
  83. {guild_cli-0.22.0 → guild_cli-0.22.2}/docs/cutover.md +0 -0
  84. {guild_cli-0.22.0 → guild_cli-0.22.2}/docs/onboarding/reachy-mini-mcp.json +0 -0
  85. {guild_cli-0.22.0 → guild_cli-0.22.2}/docs/plans/2026-05-24-guildmaster-ships-teach-and-onboard-two-agent-firs.md +0 -0
  86. {guild_cli-0.22.0 → guild_cli-0.22.2}/docs/specs/2026-05-24-guildmaster-ships-teach-and-onboard-two-agent-firs.md +0 -0
  87. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/__init__.py +0 -0
  88. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/__main__.py +0 -0
  89. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/__init__.py +0 -0
  90. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_commands/__init__.py +0 -0
  91. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_commands/_broadcast.py +0 -0
  92. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_commands/_provision_template.py +0 -0
  93. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_commands/create.py +0 -0
  94. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_commands/explain.py +0 -0
  95. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_commands/learn.py +0 -0
  96. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_commands/onboard.py +0 -0
  97. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_commands/overview.py +0 -0
  98. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_commands/show.py +0 -0
  99. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_commands/teach.py +0 -0
  100. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_commands/whoami.py +0 -0
  101. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_errors.py +0 -0
  102. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_output.py +0 -0
  103. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/cli/_repo.py +0 -0
  104. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/scaffold/__init__.py +0 -0
  105. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/scaffold/instantiate.py +0 -0
  106. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/skills/__init__.py +0 -0
  107. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/skills/identity.py +0 -0
  108. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/skills/ledger.py +0 -0
  109. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/skills/render.py +0 -0
  110. {guild_cli-0.22.0 → guild_cli-0.22.2}/guild/skills/sources.py +0 -0
  111. {guild_cli-0.22.0 → guild_cli-0.22.2}/sonar-project.properties +0 -0
  112. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/__init__.py +0 -0
  113. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_broadcast_post.py +0 -0
  114. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_cli.py +0 -0
  115. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_cli_create.py +0 -0
  116. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_cli_explain.py +0 -0
  117. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_cli_learn.py +0 -0
  118. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_cli_onboard.py +0 -0
  119. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_cli_overview.py +0 -0
  120. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_cli_show.py +0 -0
  121. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_cli_teach.py +0 -0
  122. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_cli_whoami.py +0 -0
  123. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_configure_repo_sonar.py +0 -0
  124. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_scaffold_instantiate.py +0 -0
  125. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_skills_convention.py +0 -0
  126. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_skills_identity.py +0 -0
  127. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_skills_ledger.py +0 -0
  128. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_skills_render.py +0 -0
  129. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_skills_sources.py +0 -0
  130. {guild_cli-0.22.0 → guild_cli-0.22.2}/tests/test_version_fallback.py +0 -0
@@ -7,24 +7,27 @@ description: >
7
7
  isn't a stronger model; it's a second, independent mind, and that diversity is
8
8
  the value: `ask-colleague review` gets a candid second opinion on a diff,
9
9
  `ask-colleague explore` gets a fresh read of an area, `ask-colleague write`
10
- hands off a small implementation, and `ask-colleague feedback` grades a finished
11
- work item (the ROI loop). Reach for it REFLEXIVELY, the way you'd lean over to the
10
+ hands off a small implementation, `ask-colleague feedback` grades a finished
11
+ work item (the ROI loop), and `ask-colleague clean` reaps stale/corrupt
12
+ `colleague/*` branches a crashed run left behind (which can break `git fetch`).
13
+ Pilot a running work item with `monitor`/`guide`/`stop`.
14
+ Reach for it REFLEXIVELY, the way you'd lean over to the
12
15
  teammate at the next desk — not only when asked: before you present or open a PR
13
16
  on a non-trivial committed diff, run `review` for a diverse second opinion; for a
14
17
  fresh read of an unfamiliar area whose answer is independent of your current
15
18
  context, run `explore`. Both are read-only — isolated in a throwaway git
16
- worktree, zero side effects — so the reflex is always safe; the side-effecting
17
- `write --apply` / `write --pr` still needs the user's go-ahead. Triggers when the
19
+ worktree, zero side effects to your tree/branch — so the reflex is always safe; the
20
+ side-effecting `write --apply` / `write --pr` still needs the user's go-ahead. Triggers when the
18
21
  user says "ask colleague", "ask a colleague to review/explore/write this", "have
19
22
  colleague take a look", "get a second opinion", "ask the other model", "rate that
20
- work item" — and still on the legacy "outsource this". Colleague's output is a second
21
- opinion to verify and own, never authority.
23
+ work item", "clean up a crashed colleague run" — and still on the legacy "outsource this".
24
+ Colleague's output is a second opinion to verify and own, never authority.
22
25
  ---
23
26
 
24
27
  # ask-colleague — lean on colleague as a different mind
25
28
 
26
29
  `ask-colleague` drives the **`colleague`** CLI so a Claude agent can hand a scoped
27
- task to a *different* backend (default: a local vLLM `Qwen3.6-27B` on
30
+ task to a *different* backend (default: a local vLLM `Qwen3.8-27B` on
28
31
  `:8001`). Colleague's model is **not** assumed to be stronger than you — its
29
32
  value is **diversity**. A second, independent mind catches things the author's
30
33
  mind glides past, which is why **review** is the headline verb. Treat it the way
@@ -95,10 +98,13 @@ else an install hint.
95
98
 
96
99
  | Verb | What it does | Side effects |
97
100
  |------|--------------|--------------|
98
- | `explore "<question or area>"` | Read-only investigation of the repo; the model reads and reports findings. | **None** — runs in a throwaway worktree at HEAD. |
99
- | `review "<what to focus on>" [--base main]` | A diverse second opinion on the **committed** diff (`<base>...HEAD`). | **None** — throwaway worktree; reviews committed changes only. |
100
- | `write "<task>" [--apply\|--pr]` | Implement a change. **Previews by default** (throwaway worktree, prints the would-be diff); `--apply` lands a work branch in place; `--pr` pushes + opens a PR. | **None** by default (preview); a `colleague/<id>` work branch / PR only with `--apply` / `--pr`. |
101
+ | `explore "<question or area>"` | Read-only investigation of the repo; the model reads and reports findings. | **None** to your working tree / branch — runs in a throwaway worktree at HEAD; writes only a gradable run artifact under the gitignored `.colleague/` bookkeeping dir. |
102
+ | `review "<what to focus on>" [--base main]` | A diverse second opinion on the **committed** diff (`<base>...HEAD`). | **None** to your working tree / branch — throwaway worktree, committed changes only; writes only a gradable run artifact under the gitignored `.colleague/` bookkeeping dir. |
103
+ | `write "<task>" [--apply\|--pr]` | Implement a change. **Previews by default** (throwaway worktree, prints the would-be diff); `--apply` lands a work branch in place; `--pr` pushes + opens a PR. | **None** to your working tree / branch by default (preview); a `colleague/<id>` work branch / PR only with `--apply` / `--pr`. |
104
+ | `plan "<task>"` | Colleague **PLANS** a complex task: it proposes a spec, then a split plan, then fans the waves out to a subagent-colleague workforce (`colleague plan run … --yes`). The *inverse of `/think`* — same arc, but colleague is the planning mind, not Claude. Needs a live backend. | Runs `colleague plan` in `--repo` (not a throwaway worktree): the workforce stage spawns isolated subagent worktrees and can land branches — treat like `write --apply` (gets a user nod). |
101
105
  | `feedback <id\|last> [--rating N]` | **Grade a finished work item** (the ROI loop). With `--rating N` (1–5, plus `--notes`) it records feedback; without, it shows the work item's existing feedback. `last` resolves the most recent work item in `--repo`. | Writes `.colleague/<id>.feedback.json` only when `--rating` is given; read-only otherwise. |
106
+ | `resume <task-id\|last> [--detach]` | **Resume a cut run** — a timed-out / SIGTERM'd / budget-exhausted work item picked back up from its persisted artifact (`colleague work --continue`, lineage on `TaskResult.continued_from`). `last` resolves the most recent work item in `--repo`. `--detach` runs it under `setsid`/`nohup` and returns at once (not `--background`, which drops the continue id — colleague#418). | Continues the ORIGINAL run's `colleague/<id>` work branch; never touches your tree / branch. |
107
+ | `clean [--dry-run]` | **Reap what a crashed run left behind** (#162): stale/corrupt `colleague/*` branches + orphaned 0-byte `.colleague/` artifacts that can wedge `git fetch`. Scoped strictly to `colleague/*` (never touches an unrelated branch); conservative with `.git/objects` (reports 0-byte loose objects + suggests `git prune`, never deletes them). A thin pass-through to `colleague clean`. | Deletes corrupt `colleague/<id>` refs + 0-byte `.colleague/` artifacts in `--repo`; `--dry-run` changes nothing. |
102
108
 
103
109
  ### Options
104
110
 
@@ -107,19 +113,28 @@ else an install hint.
107
113
  | `--repo PATH` | Target repo (default: `.`). |
108
114
  | `--base BRANCH` | Base for the `review` diff (default: `main`). |
109
115
  | `--engine NAME` | Backend plugin (default: `$COLLEAGUE_ENGINE` or `vllm-openai`). |
110
- | `--model NAME` | Model (default: `$COLLEAGUE_MODEL` or `sakamakismile/Qwen3.6-27B-Text-NVFP4-MTP`). |
116
+ | `--model NAME` | Model (default: `$COLLEAGUE_MODEL` or `unsloth/Qwen3.8-27B-NVFP4`). |
111
117
  | `--base-url URL` | OpenAI base URL (default: `$COLLEAGUE_BASE_URL` or `http://localhost:8001/v1`). |
112
- | `--max-steps N` | Loop step budget (default: 20). |
118
+ | `--role NAME` | Typed subagent role for the run (`explorer`, `reviewer`, `validator`, `planner`, `writer`). Since #416 a top-level `--role explorer` runs at thinking effort **`low`** (off selectable via `--effort off`); other top-level roles keep the acting seat's effort. |
119
+ | `--effort RUNG` | **Thinking effort for the acting seat** (#416): `off` \| `low` \| `medium` \| `high` \| `xhigh` \| `default`. Unset = colleague's own table (acting seat `medium`). `off` sends `enable_thinking:false` — the measured win for small, well-specified briefs (same brief: off 24 s / xhigh 88 s / medium 129 s, all correct — `docs/evidence/2026-08-22-per-seat-thinking-effort-416-results.md`); `xhigh` for open-ended judgement; `default` = the kill-switch (send nothing, the pre-#416 wire). Exported as `COLLEAGUE_CORTEX_REASONING_EFFORT` + `COLLEAGUE_WORKER_REASONING_EFFORT`; validated before the run. |
120
+ | `--seat-effort S=R[,S=R]` | Per-seat override for the other seats (`cortex`, `worker`, `deepthink`, `senses`, `evaluator`, `design`) — e.g. `--seat-effort senses=off,deepthink=xhigh`. Exported as `COLLEAGUE_<SEAT>_REASONING_EFFORT`. Children keep their role table (writer/planner medium, reviewer/validator low, explorer off) unless the parent overrides per delegation. |
121
+ | `--detach` | (`resume`) run detached and return at once; pilot with `monitor` / `guide` / `stop` once the log names the new flight id. |
122
+ | `--max-steps N` | Loop step budget (default: 20). `explore`/`review` select colleague's own native **`explore`**/**`review`** mode profile (`colleague/profiles.py`, applied via `colleague work --mode`) instead of a wrapper-side override — today that profile defaults to 30, since read-only mapping fans out across more files. An explicit `--max-steps N` always overrides the profile's default, in either direction. If the resolved `colleague` predates `--mode` (a stale install on `PATH`), the wrapper falls back to the old caller-side `--max-steps 30` + reserved-steps behavior so it keeps working. |
113
123
  | `--apply` | (`write`) apply the change in place (work branch) instead of previewing. |
114
124
  | `--allow-dirty` | (`write`) allow running on a dirty tree (only matters with `--apply` / `--pr`). |
115
125
  | `--pr` | (`write`) push + open a PR instead of a local work branch (implies `--apply`). |
116
126
  | `--rating N` | (`feedback`) record a 1–5 quality rating for the work item. |
117
127
  | `--notes "..."` | (`feedback`) free-text notes stored with the rating. |
118
128
  | `--by NAME` | (`feedback`) who is grading (default: colleague's resolved identity). |
129
+ | `--dry-run` | (`clean`) report what would be reaped without changing anything. |
130
+ | `--json` | (any verb) machine-readable output: stdout carries **only** the result JSON, every diagnostic/digest line goes to stderr. |
119
131
 
120
132
  The result printed to stdout is the work item's `TaskResult.summary` (plus
121
133
  `changed_files` / work branch for `write`), parsed from `colleague work
122
- --json`. Per-step progress streams to stderr while it runs.
134
+ --json`. Per-step progress streams to stderr while it runs. Pass `--json` to get
135
+ the raw `TaskResult` on stdout instead of the human digest (the drive verbs emit
136
+ the normalized `TaskResult`; `feedback` / `clean` forward `--json` to colleague),
137
+ keeping stdout valid JSON for a machine consumer while diagnostics stay on stderr.
123
138
 
124
139
  ## When to reach for which verb
125
140
 
@@ -140,6 +155,41 @@ The result printed to stdout is the work item's `TaskResult.summary` (plus
140
155
  says how *good* it was — together they let you compute the **ROI of asking
141
156
  colleague** and decide whether to ask again (and which backend). Grade the most
142
157
  recent work item with `ask-colleague feedback last --rating 4 --notes "…"`.
158
+ - **clean** — recovery, not routine. A crashed / interrupted `write --apply` can
159
+ leave a dangling `colleague/<id>` branch pointing at half-written (0-byte)
160
+ objects that **breaks `git fetch` / `git pull`**. Run `ask-colleague clean`
161
+ (or `colleague clean`) to reap it — start with `--dry-run` to see what it would
162
+ remove. It only ever touches `colleague/*` refs and `.colleague/` artifacts.
163
+
164
+ ## Thinking effort and resuming (#416)
165
+
166
+ Colleague resolves a **per-seat thinking effort** where each seat is built,
167
+ never per turn — the acting seat defaults to `medium`, deepthink `xhigh`,
168
+ senses/Talker `off`, children by role (writer/planner `medium`,
169
+ reviewer/validator `low`, explorer `off`). The wrapper exposes the operator
170
+ overrides as `--effort` (acting seat) and `--seat-effort` (any seat); a typo
171
+ fails fast. Rule of thumb from the measurements: **`--effort off` for small,
172
+ well-specified briefs** (5× faster, same result), **leave the default for
173
+ ordinary work**, **`--effort xhigh` for open-ended judgement** (review of a
174
+ subtle diff, a plan). Effort does not rescue a module-sized brief — split the
175
+ request instead (#415).
176
+
177
+ A run cut by a timeout, SIGTERM or an exhausted budget is **resumable**:
178
+ `ask-colleague resume <task-id|last>` continues it from its artifact on the same
179
+ work branch; `--detach` keeps your shell free. Prefer resume over re-dispatch —
180
+ the continuation carries the prior steps and lineage.
181
+
182
+ ## Piloting a flight
183
+
184
+ Dispatch a drive with `--watch` (on `explore`, `review`, or `write`) to make the
185
+ work item watchable. While it runs you can:
186
+
187
+ - **`ask-colleague monitor <task-id>`** — watch the flight's live feed
188
+ - **`ask-colleague guide <task-id> "<message>"`** — send mid-flight guidance
189
+ - **`ask-colleague stop <task-id>`** — cooperatively ask the flight to stop
190
+
191
+ Control is applied at the running loop's next turn boundary, so guidance and
192
+ stop requests take effect on the next iteration rather than interrupting mid-step.
143
193
 
144
194
  ## Hard rules (do not violate)
145
195
 
@@ -168,11 +218,20 @@ The result printed to stdout is the work item's `TaskResult.summary` (plus
168
218
  uncommitted work, commit it first.
169
219
  - The default backend is whatever single model is running locally; a multi-model
170
220
  fleet (different model per verb) is separate infrastructure.
221
+ - **Every verb writes bookkeeping under `.colleague/`** (run artifacts for
222
+ explore/review/write; feedback records; the `last_work` pointer) — none of it
223
+ in your tracked tree, but in a repo that does **not** already gitignore
224
+ `.colleague/` it shows up as untracked files. **Add `.colleague/` to your
225
+ `.gitignore`** (keep `!/.colleague/commands/` if you commit command templates).
226
+ - **A crashed run can wedge `git fetch`.** A `write --apply` interrupted
227
+ mid-commit can leave a dangling `colleague/<id>` branch + 0-byte artifacts;
228
+ `ask-colleague clean` recovers it. A SIGKILL/OOM *during* the commit can still
229
+ corrupt git objects (git/filesystem durability, not the skill's to guarantee)
230
+ — which is exactly what `clean` is for.
171
231
 
172
232
  ## Provenance
173
233
 
174
- This is a **first-party colleague** skill — `agentculture/colleague` is its
175
- origin. guildmaster **re-broadcasts** it to the mesh (the same inbound pattern as
176
- the devague-origin workflow skills), tracking it in `docs/skill-sources.md`. The
177
- `cite, don't import` policy holds: downstream repos copy it, they don't symlink
178
- or depend on it.
234
+ This is a **first-party** colleague skill — colleague is its origin. See
235
+ `docs/skill-sources.md` for the consumer's per-repo skill ledger. The `cite,
236
+ don't import` policy holds: downstream repos copy it, they don't symlink or
237
+ depend on it.
@@ -18,8 +18,18 @@ Rules:
18
18
  report (or you are within a few steps of the budget), STOP reading and call
19
19
  `finish`. Err on the side of finishing early — a focused finding beats endless
20
20
  reading.
21
+ - For a WIDE codebase map (many folders/modules), do NOT read every file in series
22
+ — that exhausts the step budget. Partition the surface by folder and delegate the
23
+ per-folder sub-surveys to the `subagents` tool (one child per folder/subtree, each
24
+ returning its findings), then synthesize their results into your report.
25
+ - NARRATE PROGRESS: with EVERY tool call, write one short line of plain text
26
+ first — what you just learned and what you are checking next. That line rides
27
+ the run's flight feed, so the operator can see where you are instead of a
28
+ silent turn. A long think with nothing written looks like a stall. If you are
29
+ within ~3 steps of the budget, STOP and write the answer-so-far (partial is
30
+ fine, mark it partial) rather than reading one more file.
21
31
 
22
32
  When you are done, call finish with a structured findings report:
23
33
  1. What it is / how it works (with file:line references).
24
34
  2. Notable details, edge cases, or surprises.
25
- 3. Open questions or risks worth a closer look.
35
+ 3. Open questions or risks worth a closer look.
@@ -5,13 +5,8 @@ Focus the review on:
5
5
 
6
6
  $ARGUMENTS
7
7
 
8
- The change under review is the committed diff on this branch versus its base
9
- (`$BASE`). Start by running, read-only:
10
-
11
- git diff $BASE...HEAD --stat
12
- git diff $BASE...HEAD
13
-
14
- then read the touched files for the context you need.
8
+ The diff for this change is ALREADY PROVIDED below the instructions (filtered +
9
+ capped). Read specific files only if you need more context.
15
10
 
16
11
  Rules:
17
12
  - READ-ONLY. Do NOT modify, create, or delete any file. Only read and run
@@ -29,8 +24,14 @@ Rules:
29
24
  NOTHING and wastes the entire drive — so the moment you have enough to write a
30
25
  useful review (or you are within a few steps of the budget), STOP reading and
31
26
  call `finish`. Err on the side of finishing early.
27
+ - NARRATE PROGRESS: with EVERY tool call, write one short line of plain text
28
+ first — what you just learned and what you are checking next. That line rides
29
+ the run's flight feed, so the operator can see where you are instead of a
30
+ silent turn. A long think with nothing written looks like a stall. If you are
31
+ within ~3 steps of the budget, STOP and write the answer-so-far (partial is
32
+ fine, mark it partial) rather than reading one more file.
32
33
 
33
34
  When you are done, call finish with a structured review:
34
35
  1. Correctness risks / likely bugs (with file:line).
35
36
  2. Design, clarity, or maintainability concerns.
36
- 3. Concrete, actionable suggestions (ranked; most important first).
37
+ 3. Concrete, actionable suggestions (ranked; most important first).
@@ -10,6 +10,12 @@ Rules:
10
10
  text file with exactly one trailing newline.
11
11
  - You may read, create, modify files, and run commands as needed.
12
12
  - Don't widen the scope: do exactly what was asked, nothing more.
13
+ - NARRATE PROGRESS: with EVERY tool call, write one short line of plain text
14
+ first — what you just learned and what you are checking next. That line rides
15
+ the run's flight feed, so the operator can see where you are instead of a
16
+ silent turn. A long think with nothing written looks like a stall. If you are
17
+ within ~3 steps of the budget, STOP and write the answer-so-far (partial is
18
+ fine, mark it partial) rather than reading one more file.
13
19
 
14
20
  When you are done, call finish with a short summary of exactly what you changed
15
- and why.
21
+ and why.