guild-cli 0.4.2__tar.gz → 0.5.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 (96) hide show
  1. {guild_cli-0.4.2 → guild_cli-0.5.1}/CHANGELOG.md +32 -0
  2. {guild_cli-0.4.2 → guild_cli-0.5.1}/PKG-INFO +1 -1
  3. guild_cli-0.5.1/docs/cutover.md +58 -0
  4. guild_cli-0.5.1/docs/skill-sources.md +144 -0
  5. {guild_cli-0.4.2 → guild_cli-0.5.1}/pyproject.toml +1 -1
  6. {guild_cli-0.4.2 → guild_cli-0.5.1}/uv.lock +1 -1
  7. guild_cli-0.4.2/docs/cutover.md +0 -43
  8. guild_cli-0.4.2/docs/skill-sources.md +0 -90
  9. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/agent-config/SKILL.md +0 -0
  10. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
  11. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/agent-config/scripts/show.sh +0 -0
  12. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
  13. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
  14. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/cicd/SKILL.md +0 -0
  15. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
  16. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
  17. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
  18. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
  19. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/cicd/scripts/workflow.sh +0 -0
  20. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/communicate/SKILL.md +0 -0
  21. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
  22. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
  23. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
  24. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
  25. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +0 -0
  26. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
  27. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
  28. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
  29. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/guild/SKILL.md +0 -0
  30. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/guild/scripts/overview.sh +0 -0
  31. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/onboard/SKILL.md +0 -0
  32. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/onboard/scripts/onboard.sh +0 -0
  33. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
  34. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
  35. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/run-tests/SKILL.md +0 -0
  36. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/run-tests/scripts/test.sh +0 -0
  37. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/sonarclaude/SKILL.md +0 -0
  38. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
  39. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/spec-to-plan/SKILL.md +0 -0
  40. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
  41. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/teach/SKILL.md +0 -0
  42. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/teach/scripts/teach.sh +0 -0
  43. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/think/SKILL.md +0 -0
  44. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/think/scripts/think.sh +0 -0
  45. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/version-bump/SKILL.md +0 -0
  46. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills/version-bump/scripts/bump.py +0 -0
  47. {guild_cli-0.4.2 → guild_cli-0.5.1}/.claude/skills.local.yaml.example +0 -0
  48. {guild_cli-0.4.2 → guild_cli-0.5.1}/.devague/frames/guildmaster-ships-teach-and-onboard-two-agent-firs.json +0 -0
  49. {guild_cli-0.4.2 → guild_cli-0.5.1}/.devague/plans/guildmaster-ships-teach-and-onboard-two-agent-firs.json +0 -0
  50. {guild_cli-0.4.2 → guild_cli-0.5.1}/.flake8 +0 -0
  51. {guild_cli-0.4.2 → guild_cli-0.5.1}/.github/workflows/publish.yml +0 -0
  52. {guild_cli-0.4.2 → guild_cli-0.5.1}/.github/workflows/tests.yml +0 -0
  53. {guild_cli-0.4.2 → guild_cli-0.5.1}/.gitignore +0 -0
  54. {guild_cli-0.4.2 → guild_cli-0.5.1}/.markdownlint-cli2.yaml +0 -0
  55. {guild_cli-0.4.2 → guild_cli-0.5.1}/CLAUDE.md +0 -0
  56. {guild_cli-0.4.2 → guild_cli-0.5.1}/LICENSE +0 -0
  57. {guild_cli-0.4.2 → guild_cli-0.5.1}/README.md +0 -0
  58. {guild_cli-0.4.2 → guild_cli-0.5.1}/culture.yaml +0 -0
  59. {guild_cli-0.4.2 → guild_cli-0.5.1}/docs/plans/2026-05-24-guildmaster-ships-teach-and-onboard-two-agent-firs.md +0 -0
  60. {guild_cli-0.4.2 → guild_cli-0.5.1}/docs/specs/2026-05-24-guildmaster-ships-teach-and-onboard-two-agent-firs.md +0 -0
  61. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/__init__.py +0 -0
  62. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/__main__.py +0 -0
  63. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/cli/__init__.py +0 -0
  64. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/cli/_commands/__init__.py +0 -0
  65. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/cli/_commands/_broadcast.py +0 -0
  66. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/cli/_commands/explain.py +0 -0
  67. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/cli/_commands/learn.py +0 -0
  68. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/cli/_commands/onboard.py +0 -0
  69. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/cli/_commands/overview.py +0 -0
  70. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/cli/_commands/show.py +0 -0
  71. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/cli/_commands/teach.py +0 -0
  72. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/cli/_commands/whoami.py +0 -0
  73. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/cli/_errors.py +0 -0
  74. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/cli/_output.py +0 -0
  75. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/cli/_repo.py +0 -0
  76. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/skills/__init__.py +0 -0
  77. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/skills/identity.py +0 -0
  78. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/skills/ledger.py +0 -0
  79. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/skills/render.py +0 -0
  80. {guild_cli-0.4.2 → guild_cli-0.5.1}/guild/skills/sources.py +0 -0
  81. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/__init__.py +0 -0
  82. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_broadcast_post.py +0 -0
  83. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_cli.py +0 -0
  84. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_cli_explain.py +0 -0
  85. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_cli_learn.py +0 -0
  86. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_cli_onboard.py +0 -0
  87. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_cli_overview.py +0 -0
  88. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_cli_show.py +0 -0
  89. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_cli_teach.py +0 -0
  90. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_cli_whoami.py +0 -0
  91. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_skills_convention.py +0 -0
  92. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_skills_identity.py +0 -0
  93. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_skills_ledger.py +0 -0
  94. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_skills_render.py +0 -0
  95. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_skills_sources.py +0 -0
  96. {guild_cli-0.4.2 → guild_cli-0.5.1}/tests/test_version_fallback.py +0 -0
@@ -5,6 +5,38 @@ 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.5.1] - 2026-05-24
9
+
10
+ ### Changed
11
+
12
+ - **`docs/cutover.md` → complete.** The steward → guildmaster broadcaster cutover
13
+ is done: guildmaster owns the supplier ledger and is the sole broadcaster;
14
+ `--apply` is live. First post-cutover broadcast was the 2026-05-24 `guild teach`
15
+ resync to 7 agents. Notes that steward's written records ([PR #62](https://github.com/agentculture/steward/pull/62),
16
+ [#10](https://github.com/agentculture/guildmaster/issues/10)) still describe a
17
+ partial handoff and are to be reconciled on steward's side.
18
+
19
+ ## [0.5.0] - 2026-05-24
20
+
21
+ ### Changed
22
+
23
+ - **steward → guildmaster cutover (guildmaster's side).** Migrated
24
+ `docs/skill-sources.md` from the consumer-side "Upstream / Notes" view to the
25
+ **supplier shape**: a canonical-set table with a "Downstream copies (known)"
26
+ column (upstream reassigned `steward` → `guildmaster`), the devague-origin
27
+ re-broadcast table, and a "Retained by steward" section recording the
28
+ steward-specific skills (`org-overview`, steward's alignment `agent-config`
29
+ variant, `discord-notify`, `jekyll-test`, `notebooklm`) that stay with steward.
30
+ The downstream consumer lists were carried over verbatim from steward's ledger
31
+ at cutover. This activates resync-detection in `teach` / `onboard` and
32
+ skills-scoped drift in `guild overview --scope all` / `--scope self`
33
+ ([issue #1 §1](https://github.com/agentculture/guildmaster/issues/1),
34
+ `docs/cutover.md`).
35
+ - **`docs/cutover.md`** updated to the in-progress state: guildmaster's side is
36
+ done and the handshake ping sent; the one remaining gate before `--apply` goes
37
+ live is steward's ack that it has stopped broadcasting (no two live
38
+ broadcasters, per [#10](https://github.com/agentculture/guildmaster/issues/10)).
39
+
8
40
  ## [0.4.2] - 2026-05-24
9
41
 
10
42
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: guild-cli
3
- Version: 0.4.2
3
+ Version: 0.5.1
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
@@ -0,0 +1,58 @@
1
+ # Broadcaster cutover — steward → guildmaster
2
+
3
+ guildmaster's `teach` / `onboard` verbs are the mesh's skill-broadcast surface
4
+ (see the README "Supplier verbs" section and
5
+ [issue #1 §1](https://github.com/agentculture/guildmaster/issues/1)). Standing
6
+ them up does **not** make guildmaster the live broadcaster the moment the code
7
+ merges. There is a hard precondition.
8
+
9
+ ## Status: complete (2026-05-24)
10
+
11
+ The steward → guildmaster broadcaster cutover is **done**. guildmaster owns the
12
+ supplier ledger (`docs/skill-sources.md`, migrated to supplier shape in
13
+ [#16](https://github.com/agentculture/guildmaster/pull/16)), and the operator
14
+ confirmed steward has stopped firing `announce-skill-update` and accepts
15
+ `teach` / `onboard` as the broadcast role. guildmaster is now the **sole
16
+ broadcaster**; `--apply` is **live**. First post-cutover broadcast: the
17
+ 2026-05-24 `guild teach` resync to 7 agents (katvan, antoine, appsec, culture,
18
+ auntiepypi, agex-cli, devague).
19
+
20
+ > **Records reconciliation (steward side).** steward's [PR #62](https://github.com/agentculture/steward/pull/62)
21
+ > recorded only a *partial* handoff (devague-trio downstream tracking) and its
22
+ > ledger/[#10](https://github.com/agentculture/guildmaster/issues/10) prose still
23
+ > describe steward as the live broadcaster "until `guild announce-skill-update`
24
+ > ships". That verb is intentionally **not** shipping — `teach` / `onboard`
25
+ > supersede it. The operational handover is confirmed; steward's written records
26
+ > are to be reconciled to match (steward's lane / #10).
27
+
28
+ ## Precondition (historical — now satisfied)
29
+
30
+ > **`teach` / `onboard` must not broadcast in production (`--apply`) until
31
+ > `steward` has confirmed it stopped broadcasting.** Running both broadcasters
32
+ > at once would mean **two live broadcasters** and double-posted briefs — exactly
33
+ > what [issue #10](https://github.com/agentculture/guildmaster/issues/10) forbids.
34
+
35
+ This precondition is **satisfied** as of 2026-05-24. `--dry-run` (the default)
36
+ remains the safe rendering mode; `--apply` is now sanctioned.
37
+
38
+ ## The cutover, step by step
39
+
40
+ 1. **[done]** guildmaster's `teach` / `onboard` are green and reviewed.
41
+ 2. **[done]** guildmaster migrated `docs/skill-sources.md` to the supplier shape
42
+ and took ownership of the ledger + broadcast role + skill-version tracking
43
+ ([#16](https://github.com/agentculture/guildmaster/pull/16)).
44
+ 3. **[done]** guildmaster pinged `steward` that the broadcast surface is ready
45
+ ([steward#61](https://github.com/agentculture/steward/issues/61)).
46
+ 4. **[done]** steward stopped broadcasting and the operator confirmed the
47
+ handover (records reconciliation pending on steward's side — see note above).
48
+ 5. **[done]** guildmaster is the sole broadcaster; `--apply` is live.
49
+
50
+ ## Why no separate `announce-skill-update` verb
51
+
52
+ Issue #10 asked guildmaster to stand up its own `announce-skill-update`
53
+ subcommand (steward's skill-major, one-skill-→-N-consumers verb). guildmaster
54
+ fulfills the same broadcast **role** through `teach` / `onboard` instead — which
55
+ are **agent-major** (one issue per agent, bundling per-skill sections). `teach`
56
+ with one skill to one agent covers the single-skill case, so a separate verb
57
+ would be redundant. The reconciliation is tracked on issue #10; see
58
+ `docs/specs/` and `docs/plans/` for the converged design.
@@ -0,0 +1,144 @@
1
+ # Skill supplier — guildmaster's canonical skills
2
+
3
+ guildmaster is the AgentCulture mesh's **skill supplier/manager**. Per the
4
+ settled division of labor ([issue #1 §1](https://github.com/agentculture/guildmaster/issues/1))
5
+ and the completed steward → guildmaster cutover (`docs/cutover.md`), guildmaster
6
+ owns the canonical upstream copies of the cross-sibling skill set, this
7
+ upstream/downstream ledger, the broadcast verbs (`teach` / `onboard`), and skill
8
+ version tracking. `steward` has retreated to agent-alignment (`steward doctor` /
9
+ `steward overview`) and is no longer the live broadcaster.
10
+
11
+ This file is the deterministic upstream/downstream map handed over from
12
+ steward's `docs/skill-sources.md` at cutover. Each skill has exactly one
13
+ canonical source repo (the **upstream/origin** column); other repos hold
14
+ downstream copies that may lag and should periodically re-sync from upstream.
15
+ `guild teach` / `guild onboard` read the **Downstream** column to auto-frame each
16
+ `(skill, agent)` as *new* vs *resync*, and `guild overview` reads it for
17
+ skills-scoped drift.
18
+
19
+ Everything here follows **cite, don't import**: each skill is *copied* into
20
+ `.claude/skills/<name>/`, not symlinked or installed as a cross-repo dependency.
21
+ Each consumer owns its copy and may diverge; nothing reaches across skill
22
+ boundaries at runtime. When upstream changes, downstream copies do **not**
23
+ auto-update — re-sync explicitly from the cited source.
24
+
25
+ ## Canonical supplied skills (upstream = `guildmaster`)
26
+
27
+ These are the cross-sibling skills guildmaster owns and broadcasts. Source of
28
+ truth is guildmaster's own copy under `.claude/skills/<name>/`; downstream
29
+ consumers re-sync from there. Ownership transferred from `steward` at cutover;
30
+ the downstream lists below were carried over from steward's ledger and are kept
31
+ current by `guild overview --scope mesh`.
32
+
33
+ | Skill | Upstream | Downstream copies (known) | Notes |
34
+ |-------|----------|---------------------------|-------|
35
+ | `agent-config` | `guildmaster` (`.claude/skills/agent-config/`) | — | 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 `agex pr` (in `agentculture/agex-cli`) | `afi-cli`, `agex-cli` (adapted-thin delegate — owns `agex pr`; see [agex-cli#53](https://github.com/agentculture/agex-cli/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` | Thin delegate to `agex pr` for lint / open / read / reply / delta, plus guildmaster's `status` (SonarCloud quality gate + hotspots + unresolved-thread tally) and `await` (composes `agex pr read --wait` with `status`, non-zero exit on Sonar ERROR / unresolved threads) extensions. **Inverted case:** agex-cli, as the `agex pr` upstream, vendors the skill adapted-thin — a `workflow.sh`-only pure delegate ([agex-cli#53](https://github.com/agentculture/agex-cli/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`, `agex-cli` (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` | 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
+ | `doc-test-alignment` | `guildmaster` (`.claude/skills/doc-test-alignment/`) | `devague`, `lecodeur`, `lepenseur` | Stub; real implementation TBD. `scripts/check.sh` exits not-yet-implemented today. |
39
+ | `pypi-maintainer` | `guildmaster` (`.claude/skills/pypi-maintainer/`) | `agtag` | Switches a PyPI package install between pypi / test-pypi / local. Generalised from the original culture-specific `change-package`. |
40
+ | `run-tests` | `guildmaster` (`.claude/skills/run-tests/`) | `agtag`, `antoine`, `appsec`, `code-lens-cli`, `culture`, `culture-sonar-cli`, `devague`, `lecodeur`, `lepenseur`, `seer-cli`, `shushu`, `telek` | Coverage source resolves from `[tool.coverage.run]` in `pyproject.toml`, so the script is portable across siblings without modification. |
41
+ | `sonarclaude` | `guildmaster` (`.claude/skills/sonarclaude/`) | `antoine`, `appsec`, `code-lens-cli`, `devague`, `lecodeur`, `lepenseur`, `seer-cli`, `telek` | SonarCloud API client. Project key resolves from `$SONAR_PROJECT` or `--project KEY`. |
42
+ | `version-bump` | `guildmaster` (`.claude/skills/version-bump/`) | `afi-cli`, `agtag`, `antoine`, `appsec`, `auntiepypi`, `cfafi`, `code-lens-cli`, `culture`, `devague`, `lecodeur`, `lepenseur`, `seer-cli`, `shushu`, `telek` | Pure Python, prepends a Keep-a-Changelog entry; no per-repo customization needed. |
43
+
44
+ > **How the downstream column is maintained.** The "Downstream copies (known)"
45
+ > entries are kept in sync with guildmaster's own drift detector:
46
+ > `guild overview --scope mesh` walks every workspace repo that declares an agent
47
+ > (`culture.yaml`) and reports, per agent, each canonical skill as current /
48
+ > stale / missing. Two classes carried over from steward are **not** yet captured
49
+ > (deliberate follow-up, not oversight):
50
+ >
51
+ > - **No `culture.yaml`** (invisible to the detector): `tipalti`,
52
+ > `cultureagent`, `cultureflare`, `irc-lens`, `agentirc`, `zehut`.
53
+ > - **Old skill-dir name** (`pr-review` / `coordinate`, which the detector
54
+ > doesn't canonicalize): `daria`, `shushu`, `culture-sonar-cli` vendor `cicd`
55
+ > under `pr-review`. `cfafi` / `culture` are already listed with a "still
56
+ > named `pr-review`/`coordinate`" note.
57
+ >
58
+ > `agentpypi` was **renamed to `auntiepypi`** on GitHub (the old name redirects);
59
+ > `auntiepypi` is the live consumer recorded above.
60
+
61
+ ## Inbound workflow skills (origin = `devague`, re-broadcast by `guildmaster`)
62
+
63
+ These three flow the **opposite** direction of guildmaster's supplier role: a
64
+ sibling, [`devague`](https://github.com/agentculture/devague), is their
65
+ author/upstream; guildmaster pulls them from devague (formerly via steward) and
66
+ re-broadcasts them to the mesh. The `cite, don't import` rule still applies.
67
+ They are the `idea → spec → plan → implement` workflow operators that drive the
68
+ **deterministic** `devague` CLI (no LLM inside the CLI). Vendored at devague
69
+ `0.11.1` ([`c04b595`](https://github.com/agentculture/devague/commit/c04b595)),
70
+ **MIT**-licensed. Re-sync, when these later change upstream, from
71
+ `../devague/.claude/skills/<name>/`.
72
+
73
+ **Divergence from verbatim — `type: command` frontmatter.** devague's upstream
74
+ SKILL.md files carry only `name` + `description`. The copies here **add
75
+ `type: command`**: culture/agex's `core.skill_loader` requires `name`,
76
+ `description`, **and** `type:`, and a SKILL.md lacking `type:` is *silently
77
+ skipped* by `backends/claude_code/probe.py`. guildmaster declares an agent in
78
+ `culture.yaml`, so the addition is load-bearing on the culture backend and
79
+ harmless on `claude-code`. This is the only divergence from upstream.
80
+
81
+ | Skill | Origin | Downstream copies (known) | Notes |
82
+ |-------|--------|---------------------------|-------|
83
+ | `think` | `devague` (`agentculture/devague`, `../devague/.claude/skills/think/`) | — (broadcast pending) | 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`. |
84
+ | `spec-to-plan` | `devague` (`agentculture/devague`, `../devague/.claude/skills/spec-to-plan/`) | — (broadcast pending) | 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`. |
85
+ | `assign-to-workforce` | `devague` (`agentculture/devague`, `../devague/.claude/skills/assign-to-workforce/`) | — (broadcast pending) | 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 `agex pr open`). |
86
+
87
+ Downstream is empty by design: these are still being introduced to the mesh.
88
+ `guild teach --new --skill <name> --to <repos>` frames them as *new* skills to
89
+ add fresh (not stale copies to resync).
90
+
91
+ ## guildmaster-origin skills (origin = `guildmaster`)
92
+
93
+ These are guildmaster's **own** operator skills — not vendored from anyone and
94
+ **not** part of the canonical set it supplies to siblings (so this table has no
95
+ Downstream column and the supplier surface does not track them). They are the
96
+ affordance + narration layer for guildmaster's own CLI surfaces.
97
+
98
+ | Skill | Origin | Notes |
99
+ |-------|--------|-------|
100
+ | `guild` | `guildmaster` (this repo) | Houses guildmaster's own read-only supplier surfaces. Today: `scripts/overview.sh`, the wrapper backing the pure-Python `guild overview` verb ([#12](https://github.com/agentculture/guildmaster/issues/12)) — the skills-supplier half of the inventory split, sibling to the vendored `agent-config` skill that backs `guild show`. Its `SKILL.md` is the skills-scoped excerpt of steward's `org-overview` narration contract (three layers: facts / inferred / suggestions; reflect-only). Surfaces skills/version drift that feeds `teach` / `onboard`; does NOT narrate steward's relationship graph or judge alignment. |
101
+ | `teach` | `guildmaster` (this repo) | Supplier broadcast verb: propagate a set of skills to a set of agents, one agent-major issue per target. Dry-run by default. |
102
+ | `onboard` | `guildmaster` (this repo) | Supplier ceremony verb: onboard a new sibling with the full canonical kit + identity + ledger registration. Dry-run by default. |
103
+
104
+ ## Retained by `steward` (not guildmaster's to supply)
105
+
106
+ The cutover transferred only the **cross-sibling canonical set** above. These
107
+ steward skills stay with steward — they are steward-specific or otherwise not
108
+ part of guildmaster's supplied kit, and guildmaster does not broadcast them:
109
+
110
+ - `agent-config` (steward's **alignment-judgment** variant — distinct from
111
+ guildmaster's inventory fork above; resolves Culture agent suffixes).
112
+ - `org-overview` — steward's reflect-only narration layer over `steward overview`;
113
+ not portable without steward installed.
114
+ - `discord-notify` — generic webhook notifier; optional in the sibling baseline.
115
+ - `jekyll-test` — conditional; only meaningful for siblings shipping a Jekyll /
116
+ Pages site.
117
+ - `notebooklm` — generates GitHub blob URLs for repo docs.
118
+
119
+ `cfafi`-origin skills (`cfafi`, `cfafi-write`, `poll`) remain with `cfafi`.
120
+
121
+ ## Vendoring policy
122
+
123
+ - **Cite, don't import.** Skills are copied into the consuming repo, not
124
+ symlinked or installed as a dependency. Each consumer owns and may modify
125
+ their copy.
126
+ - **Re-sync explicitly.** When upstream changes, downstream copies do not
127
+ auto-update; re-sync from the cited source and record the new pin here.
128
+ `guild teach` / `guild onboard` are the broadcast paths that notify consumers.
129
+ - **Diverge intentionally.** A copy may diverge for repo-specific reasons
130
+ (e.g. the `type: command` addition above, or `cfafi`'s CloudFlare-API
131
+ reviewers in its `cicd`). Record the divergence here and in the skill's
132
+ `SKILL.md` frontmatter `description`.
133
+
134
+ ## When a skill should be promoted upstream
135
+
136
+ A skill currently owned downstream (e.g. `poll` in `cfafi`) should be promoted
137
+ to `guildmaster` when:
138
+
139
+ 1. At least one other sibling has copy-pasted it, OR
140
+ 2. Its scripts have no repo-specific assumptions (no hard-coded API credentials,
141
+ no per-product paths), AND
142
+ 3. Its `SKILL.md` describes a pattern (not a single product's workflow).
143
+
144
+ Promotion is a manual decision.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "guild-cli"
3
- version = "0.4.2"
3
+ version = "0.5.1"
4
4
  description = "guildmaster — an agent and CLI that manages skills for the AgentCulture mesh."
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -179,7 +179,7 @@ wheels = [
179
179
 
180
180
  [[package]]
181
181
  name = "guild-cli"
182
- version = "0.4.2"
182
+ version = "0.5.1"
183
183
  source = { editable = "." }
184
184
  dependencies = [
185
185
  { name = "pyyaml" },
@@ -1,43 +0,0 @@
1
- # Broadcaster cutover — steward → guildmaster
2
-
3
- guildmaster's `teach` / `onboard` verbs are the mesh's skill-broadcast surface
4
- (see the README "Supplier verbs" section and
5
- [issue #1 §1](https://github.com/agentculture/guildmaster/issues/1)). Standing
6
- them up does **not** make guildmaster the live broadcaster the moment the code
7
- merges. There is a hard precondition.
8
-
9
- ## Precondition (load-bearing)
10
-
11
- > **`teach` / `onboard` must not broadcast in production (`--apply`) until the
12
- > staged steward → guildmaster cutover has happened.** Until then, `steward`
13
- > holds the live ledger and fires drift broadcasts. Running guildmaster's
14
- > verbs with `--apply` before cutover would mean **two live broadcasters** and
15
- > double-posted briefs — exactly what
16
- > [issue #10](https://github.com/agentculture/guildmaster/issues/10) forbids.
17
-
18
- `--dry-run` (the default) is always safe: it renders briefs and ledger /
19
- verification diffs without posting. Only `--apply` is gated.
20
-
21
- ## The cutover, in one step
22
-
23
- When guildmaster's `teach` / `onboard` are green and reviewed:
24
-
25
- 1. guildmaster pings `steward` that the broadcast surface is ready.
26
- 2. In a single coordinated step: **steward stops broadcasting** and hands over
27
- the canonical `docs/skill-sources.md` ledger; **guildmaster takes ownership**
28
- of the ledger + the broadcast role + skill-version tracking.
29
- 3. From then on, guildmaster is the sole broadcaster. No overlap, no two
30
- competing ledgers.
31
-
32
- Until step 2 completes, treat any guildmaster `--apply` broadcast as **off** —
33
- operate in dry-run only.
34
-
35
- ## Why no separate `announce-skill-update` verb
36
-
37
- Issue #10 asked guildmaster to stand up its own `announce-skill-update`
38
- subcommand (steward's skill-major, one-skill-→-N-consumers verb). guildmaster
39
- fulfills the same broadcast **role** through `teach` / `onboard` instead — which
40
- are **agent-major** (one issue per agent, bundling per-skill sections). `teach`
41
- with one skill to one agent covers the single-skill case, so a separate verb
42
- would be redundant. The reconciliation is tracked on issue #10; see
43
- `docs/specs/` and `docs/plans/` for the converged design.
@@ -1,90 +0,0 @@
1
- # Skill sources — guildmaster's vendored skills
2
-
3
- guildmaster currently vendors skills as a **consumer**. Per the settled
4
- division of labor ([issue #1](https://github.com/agentculture/guildmaster/issues/1)),
5
- guildmaster becomes the skills **supplier/manager** for the AgentCulture mesh —
6
- but it onboards as a consumer first, vendoring the canonical skill set like every
7
- other sibling before taking over the upstream ledger, the
8
- `announce-skill-update` broadcast, and skill-version tracking. Until that
9
- ownership transfers, `steward` holds the live supplier ledger
10
- (`../steward/docs/skill-sources.md`) and this file records the skills guildmaster
11
- vendors plus the few it originates itself.
12
-
13
- Everything here follows **cite, don't import**: each skill is *copied* into
14
- `.claude/skills/<name>/`, not symlinked or installed as a cross-repo dependency.
15
- guildmaster owns its copy and may diverge from upstream; nothing reaches across
16
- skill boundaries at runtime. When upstream changes, downstream copies do **not**
17
- auto-update — re-sync explicitly from the cited source.
18
-
19
- ## Consumed canonical skills (upstream = `steward`)
20
-
21
- These flow from `steward`, the mesh's current skill supplier. guildmaster
22
- vendored them during its initial scaffold
23
- ([issue #1](https://github.com/agentculture/guildmaster/issues/1)). Re-sync from
24
- `../steward/.claude/skills/<name>/`.
25
-
26
- | Skill | Upstream | Notes |
27
- |-------|----------|-------|
28
- | `cicd` | `steward` (`../steward/.claude/skills/cicd/`) | PR lifecycle; thin delegate layered on `agex pr` with guildmaster's `status` / `await` extensions. |
29
- | `communicate` | `steward` (`../steward/.claude/skills/communicate/`) | Cross-repo issue I/O + mesh messaging. Broadcast templates repointed from steward to guildmaster as the future supplier. |
30
- | `version-bump` | `steward` (`../steward/.claude/skills/version-bump/`) | Pure-Python semver bump + Keep-a-Changelog entry; no per-repo customization. |
31
- | `run-tests` | `steward` (`../steward/.claude/skills/run-tests/`) | pytest with parallelism + coverage; coverage source resolves from `pyproject.toml`. |
32
- | `sonarclaude` | `steward` (`../steward/.claude/skills/sonarclaude/`) | SonarCloud API client; project key from `$SONAR_PROJECT` or `--project`. |
33
- | `doc-test-alignment` | `steward` (`../steward/.claude/skills/doc-test-alignment/`) | Stub today; real implementation TBD upstream. |
34
- | `pypi-maintainer` | `steward` (`../steward/.claude/skills/pypi-maintainer/`) | Switches a PyPI install between pypi / test-pypi / local. |
35
- | `agent-config` | `steward` (`../steward/.claude/skills/agent-config/`) | Per-agent config view backing `guild show` ([#12](https://github.com/agentculture/guildmaster/issues/12)); `show.sh` + `data/backend-fingerprints.yaml` are vendored verbatim. **Divergence:** SKILL.md reframed from steward's alignment-judgment framing to guildmaster's inventory role and adds `type: command` for the culture backend's skill loader. |
36
-
37
- ## Inbound workflow skills (origin = `devague`, re-broadcast via `steward`)
38
-
39
- These three flow the **opposite** direction of guildmaster's supplier role: a
40
- sibling, [`devague`](https://github.com/agentculture/devague), is their
41
- author/upstream; `steward` pulls them from devague and re-broadcasts them to the
42
- mesh; guildmaster vendors its copy from steward's. They are the
43
- `idea → spec → plan → implement` workflow operators that drive the
44
- **deterministic** `devague` CLI (no LLM inside the CLI). Vendored from steward's
45
- copy at commit
46
- [`914d5ca`](https://github.com/agentculture/steward/commit/914d5ca), which
47
- tracks devague `0.11.1`
48
- ([`c04b595`](https://github.com/agentculture/devague/commit/c04b595)),
49
- **MIT**-licensed. Resolves guildmaster issues
50
- [#5](https://github.com/agentculture/guildmaster/issues/5),
51
- [#6](https://github.com/agentculture/guildmaster/issues/6), and
52
- [#7](https://github.com/agentculture/guildmaster/issues/7). Re-sync, when these
53
- later change upstream, from `../steward/.claude/skills/<name>/` (which tracks
54
- `../devague/.claude/skills/<name>/`).
55
-
56
- **Divergence from verbatim — `type: command` frontmatter.** devague's upstream
57
- SKILL.md files carry only `name` + `description`. The copies here (taken from
58
- steward) **add `type: command`**: culture/agex's `core.skill_loader` requires
59
- `name`, `description`, **and** `type:`, and a SKILL.md lacking `type:` is
60
- *silently skipped* by `backends/claude_code/probe.py`. guildmaster declares an
61
- agent in `culture.yaml`, so the addition is load-bearing on the culture backend
62
- and harmless on `claude-code`. This is the only divergence from upstream.
63
-
64
- | Skill | Origin | Notes |
65
- |-------|--------|-------|
66
- | `think` | `devague` (`agentculture/devague`, `../devague/.claude/skills/think/`) | Operator for the **idea→spec** leg (working backwards: 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`. |
67
- | `spec-to-plan` | `devague` (`agentculture/devague`, `../devague/.claude/skills/spec-to-plan/`) | 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`. |
68
- | `assign-to-workforce` | `devague` (`agentculture/devague`, `../devague/.claude/skills/assign-to-workforce/`) | 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 the gate-3 `agex pr open`). |
69
-
70
- ## guildmaster-origin skills (origin = `guildmaster`)
71
-
72
- These are guildmaster's **own** skills — not vendored from anyone, so there is
73
- no upstream to re-sync from. They are the affordance + narration layer for
74
- guildmaster's own CLI surfaces: the CLI verb is the implementation, and the
75
- skill is how the resident agent knows when to reach for it and how to narrate
76
- the result.
77
-
78
- | Skill | Origin | Notes |
79
- |-------|--------|-------|
80
- | `guild` | `guildmaster` (this repo) | Houses guildmaster's own read-only supplier surfaces. Today: `scripts/overview.sh`, the wrapper backing the pure-Python `guild overview` verb ([#12](https://github.com/agentculture/guildmaster/issues/12)) — the skills-supplier half of the inventory split, sibling to the vendored `agent-config` skill that backs `guild show`. Its `SKILL.md` is the skills-scoped excerpt of steward's `org-overview` narration contract (three layers: facts / inferred / suggestions; reflect-only). Surfaces skills/version drift that feeds `teach` / `onboard`; does NOT narrate steward's relationship graph or judge alignment. |
81
-
82
- ## Vendoring policy
83
-
84
- - **Cite, don't import.** Skills are copied into this repo, not symlinked or
85
- installed as a dependency. guildmaster owns and may modify each copy.
86
- - **Re-sync explicitly.** When upstream changes, this copy does not auto-update;
87
- re-sync from the cited source and record the new pin here.
88
- - **Diverge intentionally.** A copy may diverge for repo-specific reasons
89
- (e.g. the `type: command` addition above). Record the divergence here and in
90
- the skill's `SKILL.md` frontmatter `description`.
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