guild-cli 0.8.3__tar.gz → 0.8.4__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.
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/assign-to-workforce/SKILL.md +1 -1
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +1 -1
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/cicd/SKILL.md +42 -42
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/cicd/scripts/pr-status.sh +1 -1
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/cicd/scripts/workflow.sh +29 -29
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +1 -1
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.gitignore +3 -1
- {guild_cli-0.8.3 → guild_cli-0.8.4}/CHANGELOG.md +25 -2
- {guild_cli-0.8.3 → guild_cli-0.8.4}/CLAUDE.md +1 -1
- {guild_cli-0.8.3 → guild_cli-0.8.4}/PKG-INFO +1 -1
- {guild_cli-0.8.3 → guild_cli-0.8.4}/docs/cutover.md +1 -1
- {guild_cli-0.8.3 → guild_cli-0.8.4}/docs/skill-sources.md +4 -4
- {guild_cli-0.8.3 → guild_cli-0.8.4}/pyproject.toml +1 -1
- {guild_cli-0.8.3 → guild_cli-0.8.4}/uv.lock +1 -1
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/agent-config/SKILL.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/agent-config/scripts/show.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/communicate/SKILL.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/guild/SKILL.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/guild/scripts/configure-repo.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/guild/scripts/create.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/guild/scripts/overview.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/onboard/SKILL.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/onboard/scripts/onboard.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/run-tests/SKILL.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/run-tests/scripts/test.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/sonarclaude/SKILL.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/spec-to-plan/SKILL.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/teach/SKILL.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/teach/scripts/teach.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/think/SKILL.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/think/scripts/think.sh +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/version-bump/SKILL.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/version-bump/scripts/bump.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills.local.yaml.example +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.devague/frames/guildmaster-ships-teach-and-onboard-two-agent-firs.json +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.devague/plans/guildmaster-ships-teach-and-onboard-two-agent-firs.json +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.flake8 +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.github/workflows/publish.yml +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.github/workflows/tests.yml +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/.markdownlint-cli2.yaml +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/LICENSE +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/README.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/culture.yaml +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/docs/plans/2026-05-24-guildmaster-ships-teach-and-onboard-two-agent-firs.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/docs/specs/2026-05-24-guildmaster-ships-teach-and-onboard-two-agent-firs.md +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/__init__.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/__main__.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/__init__.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_commands/__init__.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_commands/_broadcast.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_commands/_provision_template.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_commands/create.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_commands/explain.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_commands/learn.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_commands/onboard.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_commands/overview.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_commands/show.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_commands/teach.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_commands/whoami.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_errors.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_output.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/cli/_repo.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/scaffold/__init__.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/scaffold/instantiate.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/skills/__init__.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/skills/identity.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/skills/ledger.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/skills/render.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/guild/skills/sources.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/sonar-project.properties +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/__init__.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_broadcast_post.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_cli.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_cli_create.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_cli_explain.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_cli_learn.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_cli_onboard.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_cli_overview.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_cli_show.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_cli_teach.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_cli_whoami.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_scaffold_instantiate.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_skills_convention.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_skills_identity.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_skills_ledger.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_skills_render.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_skills_sources.py +0 -0
- {guild_cli-0.8.3 → guild_cli-0.8.4}/tests/test_version_fallback.py +0 -0
|
@@ -154,7 +154,7 @@ and their tests pass.
|
|
|
154
154
|
### Human gate 3 — the final PR
|
|
155
155
|
|
|
156
156
|
Once all waves are merged and the full test suite passes, the main agent opens
|
|
157
|
-
a PR via the `cicd` skill (`
|
|
157
|
+
a PR via the `cicd` skill (`devex pr open`). The human reviews and merges. This
|
|
158
158
|
is the last and only remaining human gate.
|
|
159
159
|
|
|
160
160
|
## Hard rules (do not violate)
|
|
@@ -73,7 +73,7 @@ you are implementing. Results go to stdout, diagnostics to stderr.
|
|
|
73
73
|
Human gates (three only):
|
|
74
74
|
1. The exported spec (already closed by the /think leg).
|
|
75
75
|
2. This implementation split plan (go/no-go to assign to workforce).
|
|
76
|
-
3. The final PR (opened by the main agent via `cicd` / `
|
|
76
|
+
3. The final PR (opened by the main agent via `cicd` / `devex pr open`).
|
|
77
77
|
|
|
78
78
|
The devague CLI is non-orchestrating (#20): `devague plan waves` describes
|
|
79
79
|
the graph; the operator performs the fan-out. One worktree per task; TDD
|
|
@@ -1,51 +1,51 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cicd
|
|
3
3
|
description: >
|
|
4
|
-
guildmaster's CI/CD lane, layered on `
|
|
5
|
-
read / reply / delta to
|
|
4
|
+
guildmaster's CI/CD lane, layered on `devex pr`. Delegates lint / open /
|
|
5
|
+
read / reply / delta to devex; adds two extensions — `status`
|
|
6
6
|
(SonarCloud quality gate + hotspots + unresolved-thread tally) and
|
|
7
7
|
`await` (read --wait + status with non-zero exit on Sonar ERROR or
|
|
8
8
|
unresolved threads). Use when: creating PRs in guildmaster, handling
|
|
9
9
|
review feedback, polling CI status, or the user says "create PR",
|
|
10
10
|
"review comments", "address feedback", "resolve threads". Renamed
|
|
11
|
-
from `pr-review` in steward 0.7.0; rebased on
|
|
11
|
+
from `pr-review` in steward 0.7.0; rebased on devex in 0.12.0.
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
# CI/CD — guildmaster edition
|
|
15
15
|
|
|
16
|
-
`
|
|
16
|
+
`devex pr` (in `agentculture/devex`) is the upstream for the
|
|
17
17
|
five core PR-lifecycle verbs — `lint`, `open`, `read`, `reply`,
|
|
18
18
|
`delta`. Steward used to vendor parallel scripts for each; in 0.12.0
|
|
19
|
-
those vendored copies were dropped in favor of delegating to `
|
|
19
|
+
those vendored copies were dropped in favor of delegating to `devex`.
|
|
20
20
|
What's left in this skill is **the steward-specific gating layer**:
|
|
21
21
|
|
|
22
22
|
- `status` — SonarCloud quality gate, OPEN issues, hotspots, deploy
|
|
23
23
|
preview URL, unresolved-inline-thread tally.
|
|
24
|
-
- `await` — composes `
|
|
24
|
+
- `await` — composes `devex pr read --wait` with `status` and gates on
|
|
25
25
|
Sonar `ERROR` / unresolved threads. The single command to run after
|
|
26
26
|
pushing a fix when you want "wake me when this PR is triage-able."
|
|
27
27
|
|
|
28
28
|
Those two are the steward unique surface today. The `await` combo verb
|
|
29
|
-
landed natively in
|
|
30
|
-
([
|
|
29
|
+
landed natively in devex
|
|
30
|
+
([devex#41](https://github.com/agentculture/devex/issues/41), now
|
|
31
31
|
closed); the gate extras that aren't yet native — SonarCloud hotspots,
|
|
32
32
|
deploy-preview URL, an explicit resolved/unresolved thread tally — are
|
|
33
33
|
tracked upstream in
|
|
34
|
-
[
|
|
34
|
+
[devex#52](https://github.com/agentculture/devex/issues/52) and
|
|
35
35
|
migrate out of this skill once they land.
|
|
36
36
|
|
|
37
37
|
The workflow is encapsulated in `scripts/workflow.sh` — follow that
|
|
38
|
-
(or call `
|
|
38
|
+
(or call `devex pr` directly).
|
|
39
39
|
|
|
40
|
-
## The
|
|
40
|
+
## The devex inversion (upstream-as-consumer)
|
|
41
41
|
|
|
42
|
-
One consumer is special: **
|
|
42
|
+
One consumer is special: **devex itself**, the repo that owns `devex pr`.
|
|
43
43
|
Vendoring this skill there verbatim would re-vendor bash that just wraps the
|
|
44
|
-
Python
|
|
45
|
-
([
|
|
44
|
+
Python devex already ships, so devex vendors it **adapted-thin**
|
|
45
|
+
([devex#53](https://github.com/agentculture/devex/pull/53)):
|
|
46
46
|
`workflow.sh` is the only script and it forwards
|
|
47
47
|
`lint | open | read | reply | delta | await` straight to the native
|
|
48
|
-
`
|
|
48
|
+
`devex pr <verb>` — including the native `devex pr await` combo verb (devex
|
|
49
49
|
0.21.0). The steward `status` / `await` shell extensions and the vendored
|
|
50
50
|
helpers (`pr-reply.sh`, `_resolve-nick.sh`, `portability-lint.sh`) are all
|
|
51
51
|
redundant there, each superseded by a native verb. For that one consumer the
|
|
@@ -54,23 +54,23 @@ skill collapses to a **pure delegate**.
|
|
|
54
54
|
The only gate bits not yet native are SonarCloud **hotspots**, the
|
|
55
55
|
**deploy-preview URL**, and an explicit **resolved/unresolved thread tally** —
|
|
56
56
|
tracked upstream in
|
|
57
|
-
[
|
|
57
|
+
[devex#52](https://github.com/agentculture/devex/issues/52). Once those
|
|
58
58
|
land, steward retires `pr-status.sh` too and `workflow.sh status/await`
|
|
59
|
-
delegates to native `
|
|
59
|
+
delegates to native `devex pr` everywhere.
|
|
60
60
|
|
|
61
|
-
**For broadcasts:** a skill-update brief to
|
|
61
|
+
**For broadcasts:** a skill-update brief to devex should expect this thin
|
|
62
62
|
`workflow.sh`-only shape, not steward's five-file layout. (Ref:
|
|
63
63
|
[steward#53](https://github.com/agentculture/steward/issues/53).)
|
|
64
64
|
|
|
65
65
|
## Prerequisites
|
|
66
66
|
|
|
67
|
-
Hard requirements: `
|
|
67
|
+
Hard requirements: `devex` (>=0.21), `gh` (GitHub CLI), `jq`, `bash`,
|
|
68
68
|
`python3` (stdlib only), `curl` (used by `pr-status.sh`).
|
|
69
69
|
|
|
70
|
-
Install
|
|
70
|
+
Install devex once:
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
|
-
uv tool install
|
|
73
|
+
uv tool install devex # or: pip install --user devex
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
Soft requirement: `PyYAML` is needed **only for suffix mode** of the
|
|
@@ -80,7 +80,7 @@ clear install hint when invoked without it.
|
|
|
80
80
|
|
|
81
81
|
Per-machine paths (sibling-project layout) live in
|
|
82
82
|
`.claude/skills.local.yaml`; see the committed `.example` for the
|
|
83
|
-
schema. `
|
|
83
|
+
schema. `devex pr delta` reads the same file.
|
|
84
84
|
|
|
85
85
|
## How to run
|
|
86
86
|
|
|
@@ -88,16 +88,16 @@ schema. `agex pr delta` reads the same file.
|
|
|
88
88
|
|
|
89
89
|
| Command | What it does |
|
|
90
90
|
|---------|--------------|
|
|
91
|
-
| `workflow.sh lint` | `
|
|
92
|
-
| `workflow.sh open [gh-flags]` | `
|
|
93
|
-
| `workflow.sh read [PR] [--wait N]` | `
|
|
94
|
-
| `workflow.sh reply <PR>` | `
|
|
95
|
-
| `workflow.sh delta` | `
|
|
91
|
+
| `workflow.sh lint` | `devex pr lint --exit-on-violation` — portability + alignment-trigger check. |
|
|
92
|
+
| `workflow.sh open [gh-flags]` | `devex pr open --delayed-read`. Creates the PR, then polls 180s for an initial briefing. `--title TITLE` required; body via `--body-file PATH` or stdin. |
|
|
93
|
+
| `workflow.sh read [PR] [--wait N]` | `devex pr read`. One-shot briefing (CI checks, SonarCloud gate + new issues, all comments, next-step footer). Pass `--wait N` to poll up to N seconds for required reviewers. |
|
|
94
|
+
| `workflow.sh reply <PR>` | `devex pr reply <PR>` — batch JSONL replies (stdin) + thread resolve. devex auto-signs from `culture.yaml`. |
|
|
95
|
+
| `workflow.sh delta` | `devex pr delta` — sibling alignment dump. |
|
|
96
96
|
| `workflow.sh status <PR>` | **Steward extension.** `pr-status.sh` — Sonar gate, OPEN issues, hotspots, unresolved-thread breakdown, deploy preview URL. Authoritative gate for `await`. |
|
|
97
|
-
| `workflow.sh await <PR>` | **Steward extension.** `
|
|
97
|
+
| `workflow.sh await <PR>` | **Steward extension.** `devex pr read --wait` then `status`. Exits non-zero on Sonar ERROR or unresolved threads. Tunables: `STEWARD_PR_AWAIT_WAIT` (default 1800s passed to `--wait`), `STEWARD_PR_AWAIT_SECONDS` (legacy fixed pre-sleep, deprecated). |
|
|
98
98
|
| `workflow.sh help` | Print the list. |
|
|
99
99
|
|
|
100
|
-
You can also call `
|
|
100
|
+
You can also call `devex pr <verb>` directly — `workflow.sh` is a
|
|
101
101
|
typing-saver around the same verbs. The steward `status` and `await`
|
|
102
102
|
extensions only have shell entry points.
|
|
103
103
|
|
|
@@ -108,21 +108,21 @@ and useful when a one-off reply doesn't merit batch JSONL. It is not
|
|
|
108
108
|
called by `workflow.sh` anymore. The vendored `portability-lint.sh`
|
|
109
109
|
is also still shipped — `steward doctor`'s portability check runs it
|
|
110
110
|
directly against target repos. Both are scheduled for follow-up
|
|
111
|
-
migration to
|
|
111
|
+
migration to devex.
|
|
112
112
|
|
|
113
113
|
## Long waits (background polling)
|
|
114
114
|
|
|
115
|
-
`
|
|
115
|
+
`devex pr read --wait N` polls in-session for up to N seconds. The
|
|
116
116
|
Anthropic prompt cache has a 5-minute TTL; sleeping past it burns
|
|
117
117
|
context every cache miss. Two ways to drive the wait:
|
|
118
118
|
|
|
119
119
|
- **Synchronous** — `workflow.sh await <PR>` after `gh pr create` /
|
|
120
120
|
`workflow.sh open`. Fine when readiness is expected within ~5
|
|
121
121
|
minutes.
|
|
122
|
-
- **Asynchronous** — for longer waits, run `
|
|
122
|
+
- **Asynchronous** — for longer waits, run `devex pr read --wait NNN`
|
|
123
123
|
inside a background subagent (Agent tool, `run_in_background: true`)
|
|
124
124
|
so the main session only pays the cache cost when readiness fires.
|
|
125
|
-
The subagent's only job is to invoke `
|
|
125
|
+
The subagent's only job is to invoke `devex pr read --wait` and echo
|
|
126
126
|
its headline back. The parent triages with `workflow.sh await`
|
|
127
127
|
when the notification arrives. The user can interrupt with
|
|
128
128
|
TaskStop.
|
|
@@ -130,20 +130,20 @@ context every cache miss. Two ways to drive the wait:
|
|
|
130
130
|
This pattern was originally borrowed from sibling repo
|
|
131
131
|
[`agentculture/cfafi`](https://github.com/agentculture/cfafi)'s `poll`
|
|
132
132
|
skill. The async guidance is also filed upstream
|
|
133
|
-
([
|
|
133
|
+
([devex#41](https://github.com/agentculture/devex/issues/41)).
|
|
134
134
|
|
|
135
135
|
## Conventions
|
|
136
136
|
|
|
137
|
-
`
|
|
138
|
-
that names the right next verb (the same chain `
|
|
137
|
+
`devex pr` emits a **"Next step:"** footer at the end of every command
|
|
138
|
+
that names the right next verb (the same chain `devex learn cicd`
|
|
139
139
|
documents) — follow that rather than memorizing an order. `workflow.sh
|
|
140
140
|
help` mirrors the verb table when you need the steward-flavored
|
|
141
141
|
extensions (`status`, `await`) on top.
|
|
142
142
|
|
|
143
143
|
Branch naming: `fix/<desc>`, `feat/<desc>`, `docs/<desc>`,
|
|
144
144
|
`skill/<name>`. PR / comment signature: `- <nick> (Claude)`, where
|
|
145
|
-
`<nick>` is resolved by `
|
|
146
|
-
(first agent's `suffix`), falling back to the git-repo basename.
|
|
145
|
+
`<nick>` is resolved by `devex` from the agent's own `culture.yaml`
|
|
146
|
+
(first agent's `suffix`), falling back to the git-repo basename. devex
|
|
147
147
|
auto-appends the signature on `pr open` and `pr reply` only when the
|
|
148
148
|
body isn't already signed.
|
|
149
149
|
|
|
@@ -191,17 +191,17 @@ are conditional and currently no-op (greenfield repo):
|
|
|
191
191
|
|
|
192
192
|
Revisit each line as the corresponding stack element actually lands.
|
|
193
193
|
A `pr lint --extra=tests,version,markdown` ask is filed upstream
|
|
194
|
-
([
|
|
194
|
+
([devex#41](https://github.com/agentculture/devex/issues/41)).
|
|
195
195
|
|
|
196
196
|
## Reply etiquette
|
|
197
197
|
|
|
198
|
-
Every comment must get a reply — no silent fixes. `
|
|
198
|
+
Every comment must get a reply — no silent fixes. `devex pr reply`
|
|
199
199
|
includes thread-resolve by default. Reference the review-comment IDs
|
|
200
200
|
in the fix-up commit message.
|
|
201
201
|
|
|
202
202
|
The `status` extension queries SonarCloud directly (it predates the
|
|
203
|
-
upstream Sonar integration in `
|
|
204
|
-
trustworthy — `
|
|
203
|
+
upstream Sonar integration in `devex pr read`). Both surfaces are
|
|
204
|
+
trustworthy — `devex pr read` for display in the briefing, `status` for
|
|
205
205
|
the gate. Steward isn't yet a registered mesh agent, so the
|
|
206
206
|
post-merge IRC ping that Culture's `pr-review` includes is still
|
|
207
207
|
skipped — that returns when Steward joins the mesh.
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
|
|
4
|
-
# Steward cicd workflow — thin layer over `
|
|
4
|
+
# Steward cicd workflow — thin layer over `devex pr` plus two steward
|
|
5
5
|
# extensions (`status`, `await`) for SonarCloud gating and triage flow.
|
|
6
6
|
#
|
|
7
7
|
# Subcommands:
|
|
8
|
-
# lint `
|
|
8
|
+
# lint `devex pr lint --exit-on-violation`. Same rules
|
|
9
9
|
# steward used to vendor in portability-lint.sh
|
|
10
10
|
# (which still ships for `steward doctor`).
|
|
11
|
-
# open [gh-pr flags] `
|
|
11
|
+
# open [gh-pr flags] `devex pr open --delayed-read "$@"`. Creates the
|
|
12
12
|
# PR, then polls 180s for an initial briefing.
|
|
13
13
|
# Body via --body-file PATH or stdin; --title is
|
|
14
14
|
# required.
|
|
15
|
-
# read [PR] [--wait N] `
|
|
15
|
+
# read [PR] [--wait N] `devex pr read "$@"`. One-shot briefing today;
|
|
16
16
|
# pass --wait N to poll for reviewer readiness.
|
|
17
17
|
# Covers what create-pr-and-wait / pr-comments /
|
|
18
18
|
# wait-and-check / poll-readiness used to do.
|
|
19
|
-
# reply <PR> `
|
|
19
|
+
# reply <PR> `devex pr reply <PR>` (JSONL on stdin). devex
|
|
20
20
|
# auto-signs from culture.yaml; same JSONL
|
|
21
21
|
# shape as the old pr-batch.sh.
|
|
22
|
-
# delta `
|
|
22
|
+
# delta `devex pr delta`. Sibling alignment dump.
|
|
23
23
|
#
|
|
24
24
|
# status <PR> Steward extension: pr-status.sh — SonarCloud
|
|
25
25
|
# gate, OPEN issues, hotspots, unresolved
|
|
@@ -38,16 +38,16 @@ set -euo pipefail
|
|
|
38
38
|
|
|
39
39
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
40
40
|
|
|
41
|
-
#
|
|
41
|
+
# devex's `--agent` flag accepts only claude-code|codex|copilot|acp. The
|
|
42
42
|
# workspace culture.yaml convention is `backend: claude`, so we always
|
|
43
43
|
# pass --agent explicitly to insulate steward from that naming gap.
|
|
44
|
-
# Override via
|
|
45
|
-
|
|
44
|
+
# Override via STEWARD_DEVEX_AGENT if you're running under codex/copilot/acp.
|
|
45
|
+
DEVEX_AGENT="${STEWARD_DEVEX_AGENT:-claude-code}"
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
if ! command -v
|
|
49
|
-
echo "✗
|
|
50
|
-
echo " uv tool install
|
|
47
|
+
require_devex() {
|
|
48
|
+
if ! command -v devex >/dev/null 2>&1; then
|
|
49
|
+
echo "✗ devex not on PATH. Install devex (>=0.21)." >&2
|
|
50
|
+
echo " uv tool install devex # or pip install devex" >&2
|
|
51
51
|
exit 2
|
|
52
52
|
fi
|
|
53
53
|
}
|
|
@@ -57,38 +57,38 @@ shift || true
|
|
|
57
57
|
|
|
58
58
|
case "$cmd" in
|
|
59
59
|
lint)
|
|
60
|
-
|
|
61
|
-
exec
|
|
60
|
+
require_devex
|
|
61
|
+
exec devex pr lint --agent "$DEVEX_AGENT" --exit-on-violation "$@"
|
|
62
62
|
;;
|
|
63
63
|
open)
|
|
64
|
-
|
|
65
|
-
exec
|
|
64
|
+
require_devex
|
|
65
|
+
exec devex pr open --agent "$DEVEX_AGENT" --delayed-read "$@"
|
|
66
66
|
;;
|
|
67
67
|
read)
|
|
68
|
-
|
|
69
|
-
exec
|
|
68
|
+
require_devex
|
|
69
|
+
exec devex pr read --agent "$DEVEX_AGENT" "$@"
|
|
70
70
|
;;
|
|
71
71
|
reply)
|
|
72
|
-
|
|
72
|
+
require_devex
|
|
73
73
|
PR="${1:?Usage: workflow.sh reply <PR> (JSONL on stdin)}"
|
|
74
|
-
exec
|
|
74
|
+
exec devex pr reply --agent "$DEVEX_AGENT" "$PR"
|
|
75
75
|
;;
|
|
76
76
|
delta)
|
|
77
|
-
|
|
78
|
-
exec
|
|
77
|
+
require_devex
|
|
78
|
+
exec devex pr delta --agent "$DEVEX_AGENT" "$@"
|
|
79
79
|
;;
|
|
80
80
|
status)
|
|
81
81
|
PR="${1:?Usage: workflow.sh status <PR>}"
|
|
82
82
|
exec bash "$SCRIPT_DIR/pr-status.sh" "$PR"
|
|
83
83
|
;;
|
|
84
84
|
await)
|
|
85
|
-
|
|
85
|
+
require_devex
|
|
86
86
|
PR="${1:?Usage: workflow.sh await <PR>}"
|
|
87
87
|
|
|
88
88
|
# Legacy fixed-sleep escape hatch.
|
|
89
89
|
if [ -n "${STEWARD_PR_AWAIT_SECONDS:-}" ]; then
|
|
90
90
|
echo "warning: STEWARD_PR_AWAIT_SECONDS is deprecated; prefer STEWARD_PR_AWAIT_WAIT." >&2
|
|
91
|
-
echo "→ sleeping ${STEWARD_PR_AWAIT_SECONDS}s (legacy fixed-sleep) before
|
|
91
|
+
echo "→ sleeping ${STEWARD_PR_AWAIT_SECONDS}s (legacy fixed-sleep) before devex pr read …" >&2
|
|
92
92
|
sleep "$STEWARD_PR_AWAIT_SECONDS"
|
|
93
93
|
WAIT_ARGS=()
|
|
94
94
|
else
|
|
@@ -96,18 +96,18 @@ case "$cmd" in
|
|
|
96
96
|
WAIT_ARGS=(--wait "$WAIT")
|
|
97
97
|
fi
|
|
98
98
|
|
|
99
|
-
# 1.
|
|
99
|
+
# 1. devex pr read --wait — readiness loop + briefing.
|
|
100
100
|
# Capture rc from the command itself (not from the negated test —
|
|
101
101
|
# `if ! cmd; then rc=$?` would store the if-test status, always 0
|
|
102
102
|
# in the failure branch, masking the real exit code).
|
|
103
|
-
echo "──
|
|
104
|
-
if
|
|
103
|
+
echo "── devex pr read ──────────────────────────────────────────────────────" >&2
|
|
104
|
+
if devex pr read --agent "$DEVEX_AGENT" "$PR" "${WAIT_ARGS[@]}"; then
|
|
105
105
|
READ_RC=0
|
|
106
106
|
else
|
|
107
107
|
READ_RC=$?
|
|
108
108
|
fi
|
|
109
109
|
if [ "$READ_RC" -ne 0 ]; then
|
|
110
|
-
echo "✗
|
|
110
|
+
echo "✗ devex pr read failed (exit $READ_RC)" >&2
|
|
111
111
|
exit "$READ_RC"
|
|
112
112
|
fi
|
|
113
113
|
|
{guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/communicate/scripts/templates/skill-new-brief.md
RENAMED
|
@@ -61,7 +61,7 @@ chmod +x .claude/skills/{{SKILL}}/scripts/*.sh 2>/dev/null || true
|
|
|
61
61
|
## Acceptance criteria
|
|
62
62
|
|
|
63
63
|
- `.claude/skills/{{SKILL}}/SKILL.md` is present with frontmatter
|
|
64
|
-
`name: {{SKILL}}`. **On the culture/
|
|
64
|
+
`name: {{SKILL}}`. **On the culture/devex backend, also add
|
|
65
65
|
`type: command`** — `core.skill_loader` requires all of `name`,
|
|
66
66
|
`description`, and `type:`, and a SKILL.md lacking `type:` is silently
|
|
67
67
|
skipped by `backends/claude_code/probe.py`.
|
|
@@ -5,6 +5,29 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
Format follows [Keep a Changelog](https://keepachangelog.com/). This project
|
|
6
6
|
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.8.4] - 2026-05-30
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **Rename the PR-lifecycle CLI `agex` / `agex-cli` → `devex`** (same tool, new
|
|
13
|
+
name; `agentculture/agex-cli` → `agentculture/devex`) across the canonical
|
|
14
|
+
skills and docs guildmaster owns: `CLAUDE.md`, the vendored `cicd`
|
|
15
|
+
(`SKILL.md`, `workflow.sh`, `pr-status.sh`), `communicate`
|
|
16
|
+
(`skill-new-brief.md` template) and `assign-to-workforce` skills,
|
|
17
|
+
`docs/skill-sources.md`, `docs/cutover.md`, and `.gitignore` (now ignores
|
|
18
|
+
both `.devex/` and the still-used `.agex/` — `devex` 0.28.0 still writes its
|
|
19
|
+
per-checkout working dir to `.agex/`). The `cicd` scripts now invoke `devex
|
|
20
|
+
pr` and the internal
|
|
21
|
+
identifiers became `DEVEX_AGENT` / `STEWARD_DEVEX_AGENT` / `require_devex`.
|
|
22
|
+
guildmaster is the canonical owner of `cicd` / `communicate` and the sole
|
|
23
|
+
broadcaster, so the rename originates here; the consumer-side rename already
|
|
24
|
+
landed in `culture-agent-template`. Tracks
|
|
25
|
+
[#48](https://github.com/agentculture/guildmaster/issues/48).
|
|
26
|
+
- Align the documented `devex` version floor to `>=0.21` in the `cicd`
|
|
27
|
+
`SKILL.md` and `workflow.sh` install hint (were `>=0.1`) — the `await`-era
|
|
28
|
+
features need `>=0.21` (installed `devex` is 0.25.0). The `agtag` `>=0.1` floor
|
|
29
|
+
is unrelated and unchanged.
|
|
30
|
+
|
|
8
31
|
## [0.8.3] - 2026-05-30
|
|
9
32
|
|
|
10
33
|
### Added
|
|
@@ -117,7 +140,7 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
117
140
|
redirects. Updated `docs/skill-sources.md` to record `grant` as the live
|
|
118
141
|
downstream consumer: renamed `shushu` → `grant` in the `run-tests` and
|
|
119
142
|
`version-bump` Downstream columns, added `grant` to the `cicd` column with a
|
|
120
|
-
"still named `pr-review`" caveat (its copy is the pre-
|
|
143
|
+
"still named `pr-review`" caveat (its copy is the pre-devex `cicd`), and
|
|
121
144
|
refreshed the maintenance notes (old-skill-dir-name class, the
|
|
122
145
|
no-`culture.yaml` class — `grant`'s repo has no committed `culture.yaml` yet —
|
|
123
146
|
and a `shushu` → `grant` rename note mirroring `agentpypi` → `auntiepypi`).
|
|
@@ -430,7 +453,7 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
430
453
|
### Changed
|
|
431
454
|
|
|
432
455
|
- The three vendored SKILL.md files carry a `type: command` frontmatter
|
|
433
|
-
divergence from their verbatim devague upstream: culture/
|
|
456
|
+
divergence from their verbatim devague upstream: culture/devex's
|
|
434
457
|
`core.skill_loader` requires `name` + `description` + `type:`, and a type-less
|
|
435
458
|
SKILL.md is silently skipped by `backends/claude_code/probe.py`. guildmaster
|
|
436
459
|
declares an agent in `culture.yaml`, so the addition is load-bearing on the
|
|
@@ -157,7 +157,7 @@ locally-hosted model via `acp`, the runtime prompt is `AGENTS.md` and
|
|
|
157
157
|
## Finishing a branch: default to a PR
|
|
158
158
|
|
|
159
159
|
When work on a branch is complete and tests pass, **push the branch and open a
|
|
160
|
-
Pull Request** via the `cicd` skill (`workflow.sh open` / `
|
|
160
|
+
Pull Request** via the `cicd` skill (`workflow.sh open` / `devex pr open`) — do
|
|
161
161
|
not pause on an interactive "what next?" menu. This is the integration point for
|
|
162
162
|
the whole `branch → implement → bump version → PR` workflow, and it overrides
|
|
163
163
|
the Superpowers `finishing-a-development-branch` skill's default pause.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: guild-cli
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.4
|
|
4
4
|
Summary: guildmaster — an agent and CLI that manages skills for the AgentCulture mesh.
|
|
5
5
|
Project-URL: Homepage, https://github.com/agentculture/guildmaster
|
|
6
6
|
Project-URL: Issues, https://github.com/agentculture/guildmaster/issues
|
|
@@ -15,7 +15,7 @@ confirmed steward has stopped firing `announce-skill-update` and accepts
|
|
|
15
15
|
`teach` / `onboard` as the broadcast role. guildmaster is now the **sole
|
|
16
16
|
broadcaster**; `--apply` is **live**. First post-cutover broadcast: the
|
|
17
17
|
2026-05-24 `guild teach` resync to 7 agents (katvan, antoine, appsec, culture,
|
|
18
|
-
auntiepypi,
|
|
18
|
+
auntiepypi, devex, devague).
|
|
19
19
|
|
|
20
20
|
> **Records reconciliation (steward side).** steward's [PR #62](https://github.com/agentculture/steward/pull/62)
|
|
21
21
|
> recorded only a *partial* handoff (devague-trio downstream tracking) and its
|
|
@@ -33,8 +33,8 @@ current by `guild overview --scope mesh`.
|
|
|
33
33
|
| Skill | Upstream | Downstream copies (known) | Notes |
|
|
34
34
|
|-------|----------|---------------------------|-------|
|
|
35
35
|
| `agent-config` | `guildmaster` (`.claude/skills/agent-config/`) | `agenda`, `dominion-breaker`, `convertible`, `jetson`, `reachy-mini-cli`, `jetson-ai-lab-cli`, `dgx-spark-cli` | Inventory variant backing `guild show` ([#12](https://github.com/agentculture/guildmaster/issues/12)); `show.sh` + `data/backend-fingerprints.yaml` vendored verbatim from steward, SKILL.md reframed from alignment-judgment to inventory + `type: command` added. **Forked from steward:** steward retains its own alignment-focused `agent-config` variant; the inventory variant is guildmaster's to supply. |
|
|
36
|
-
| `cicd` | `guildmaster` (`.claude/skills/cicd/`) — layered on `
|
|
37
|
-
| `communicate` | `guildmaster` (`.claude/skills/communicate/`) | `afi-cli`, `
|
|
36
|
+
| `cicd` | `guildmaster` (`.claude/skills/cicd/`) — layered on `devex pr` (in `agentculture/devex`) | `afi-cli`, `devex` (adapted-thin delegate — owns `devex pr`; see [devex#53](https://github.com/agentculture/devex/pull/53)), `agtag`, `antoine`, `appsec`, `auntiepypi`, `cfafi` (still named `pr-review`), `code-lens-cli`, `culture` (still named `pr-review`), `devague`, `katvan`, `lecodeur`, `lepenseur`, `seer-cli`, `telek`, `agenda`, `dominion-breaker`, `convertible`, `jetson`, `grant` (still named `pr-review`), `reachy-mini-cli`, `jetson-ai-lab-cli`, `dgx-spark-cli` | Thin delegate to `devex pr` for lint / open / read / reply / delta, plus guildmaster's `status` (SonarCloud quality gate + hotspots + unresolved-thread tally) and `await` (composes `devex pr read --wait` with `status`, non-zero exit on Sonar ERROR / unresolved threads) extensions. **Inverted case:** devex, as the `devex pr` upstream, vendors the skill adapted-thin — a `workflow.sh`-only pure delegate ([devex#53](https://github.com/agentculture/devex/pull/53)). Renamed from `pr-review` in steward 0.7.0; downstream copies may keep the old name on their own cadence. |
|
|
37
|
+
| `communicate` | `guildmaster` (`.claude/skills/communicate/`) | `afi-cli`, `devex` (identifier-only — vendored steward 0.11.0; scripts current as of 0.18.0), `agtag`, `antoine`, `appsec`, `auntiepypi`, `code-lens-cli`, `culture` (still named `coordinate`), `devague`, `katvan`, `lecodeur`, `lepenseur`, `seer-cli`, `telek`, `agenda`, `dominion-breaker`, `convertible`, `jetson`, `reachy-mini-cli`, `jetson-ai-lab-cli`, `dgx-spark-cli` | Cross-repo + mesh communication: file issues / hand off briefs to sibling-repo agents (auto-signed), comment on existing issues, fetch issues to inline state into briefs, and send live messages to Culture mesh channels (unsigned — nick is the speaker). Renamed from `coordinate` in steward 0.8.0; absorbed `gh-issues` (as `fetch-issues.sh`) in 0.9.1. Issue I/O backed by `agtag` (>=0.1) since steward 0.11.0 — signature resolves from local `culture.yaml` (override via `--as`). |
|
|
38
38
|
| `doc-test-alignment` | `guildmaster` (`.claude/skills/doc-test-alignment/`) | `devague`, `lecodeur`, `lepenseur`, `agenda`, `dominion-breaker`, `convertible`, `jetson`, `reachy-mini-cli`, `jetson-ai-lab-cli`, `dgx-spark-cli` | Stub; real implementation TBD. `scripts/check.sh` exits not-yet-implemented today. |
|
|
39
39
|
| `pypi-maintainer` | `guildmaster` (`.claude/skills/pypi-maintainer/`) | `agtag`, `agenda`, `dominion-breaker`, `convertible`, `jetson`, `reachy-mini-cli`, `jetson-ai-lab-cli`, `dgx-spark-cli` | Switches a PyPI package install between pypi / test-pypi / local. Generalised from the original culture-specific `change-package`. |
|
|
40
40
|
| `run-tests` | `guildmaster` (`.claude/skills/run-tests/`) | `agtag`, `antoine`, `appsec`, `code-lens-cli`, `culture`, `culture-sonar-cli`, `devague`, `lecodeur`, `lepenseur`, `seer-cli`, `grant`, `telek`, `agenda`, `dominion-breaker`, `convertible`, `jetson`, `reachy-mini-cli`, `jetson-ai-lab-cli`, `dgx-spark-cli` | Coverage source resolves from `[tool.coverage.run]` in `pyproject.toml`, so the script is portable across siblings without modification. |
|
|
@@ -78,7 +78,7 @@ They are the `idea → spec → plan → implement` workflow operators that driv
|
|
|
78
78
|
|
|
79
79
|
**Divergence from verbatim — `type: command` frontmatter.** devague's upstream
|
|
80
80
|
SKILL.md files carry only `name` + `description`. The copies here **add
|
|
81
|
-
`type: command`**: culture/
|
|
81
|
+
`type: command`**: culture/devex's `core.skill_loader` requires `name`,
|
|
82
82
|
`description`, **and** `type:`, and a SKILL.md lacking `type:` is *silently
|
|
83
83
|
skipped* by `backends/claude_code/probe.py`. guildmaster declares an agent in
|
|
84
84
|
`culture.yaml`, so the addition is load-bearing on the culture backend and
|
|
@@ -88,7 +88,7 @@ harmless on `claude-code`. This is the only divergence from upstream.
|
|
|
88
88
|
|-------|--------|---------------------------|-------|
|
|
89
89
|
| `think` | `devague` (`agentculture/devague`, `../devague/.claude/skills/think/`) | — (broadcast pending), `agenda`, `dominion-breaker`, `convertible`, `jetson`, `reachy-mini-cli`, `jetson-ai-lab-cli`, `dgx-spark-cli` | Operator for the **idea→spec** leg (announcement frame → capture/classify claims → interrogate with honesty conditions → park open vagueness → `export` once the frame converges). Renamed from `devague` in devague 0.4.0. **Divergence:** `type: command` added. Runtime dep: `uv tool install devague`. |
|
|
90
90
|
| `spec-to-plan` | `devague` (`agentculture/devague`, `../devague/.claude/skills/spec-to-plan/`) | — (broadcast pending), `agenda`, `dominion-breaker`, `convertible`, `jetson`, `reachy-mini-cli`, `jetson-ai-lab-cli`, `dgx-spark-cli` | Operator for the **spec→plan** leg (`devague plan ...`): seed from a converged frame, cover every coverage target with acceptance-gated, acyclically-ordered tasks, park unknowns as risks, `export` once the plan converges. New in devague 0.4.0. **Divergence:** `type: command` added. Runtime dep: `uv tool install devague`. |
|
|
91
|
-
| `assign-to-workforce` | `devague` (`agentculture/devague`, `../devague/.claude/skills/assign-to-workforce/`) | — (broadcast pending), `agenda`, `dominion-breaker`, `convertible`, `jetson`, `reachy-mini-cli`, `jetson-ai-lab-cli`, `dgx-spark-cli` | Operator for the **implementation** leg: reads `devague plan waves` (read-only) and fans out independent tasks to one agent per task per wave in isolated git worktrees, with main-agent TDD-gated merges. Three human gates: spec / split plan / final PR. The CLI stays non-orchestrating ([devague#20](https://github.com/agentculture/devague/issues/20)). New in devague 0.10.0. **Divergence:** `type: command` added. Runtime deps: `uv tool install devague`, `git worktree`, the vendored `cicd` skill (for gate-3 `
|
|
91
|
+
| `assign-to-workforce` | `devague` (`agentculture/devague`, `../devague/.claude/skills/assign-to-workforce/`) | — (broadcast pending), `agenda`, `dominion-breaker`, `convertible`, `jetson`, `reachy-mini-cli`, `jetson-ai-lab-cli`, `dgx-spark-cli` | Operator for the **implementation** leg: reads `devague plan waves` (read-only) and fans out independent tasks to one agent per task per wave in isolated git worktrees, with main-agent TDD-gated merges. Three human gates: spec / split plan / final PR. The CLI stays non-orchestrating ([devague#20](https://github.com/agentculture/devague/issues/20)). New in devague 0.10.0. **Divergence:** `type: command` added. Runtime deps: `uv tool install devague`, `git worktree`, the vendored `cicd` skill (for gate-3 `devex pr open`). |
|
|
92
92
|
|
|
93
93
|
Downstream is empty by design: these are still being introduced to the mesh.
|
|
94
94
|
`guild teach --new --skill <name> --to <repos>` frames them as *new* skills to
|
|
File without changes
|
{guild_cli-0.8.3 → guild_cli-0.8.4}/.claude/skills/agent-config/data/backend-fingerprints.yaml
RENAMED
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|