guild-cli 0.7.0__tar.gz → 0.7.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 (103) hide show
  1. {guild_cli-0.7.0 → guild_cli-0.7.2}/.github/workflows/tests.yml +5 -6
  2. {guild_cli-0.7.0 → guild_cli-0.7.2}/CHANGELOG.md +44 -0
  3. {guild_cli-0.7.0 → guild_cli-0.7.2}/PKG-INFO +1 -1
  4. {guild_cli-0.7.0 → guild_cli-0.7.2}/docs/skill-sources.md +14 -8
  5. {guild_cli-0.7.0 → guild_cli-0.7.2}/pyproject.toml +1 -1
  6. guild_cli-0.7.2/sonar-project.properties +24 -0
  7. {guild_cli-0.7.0 → guild_cli-0.7.2}/uv.lock +1 -1
  8. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/agent-config/SKILL.md +0 -0
  9. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
  10. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/agent-config/scripts/show.sh +0 -0
  11. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
  12. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
  13. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/cicd/SKILL.md +0 -0
  14. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
  15. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
  16. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
  17. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
  18. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/cicd/scripts/workflow.sh +0 -0
  19. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/communicate/SKILL.md +0 -0
  20. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
  21. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
  22. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
  23. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
  24. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +0 -0
  25. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
  26. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
  27. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
  28. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/guild/SKILL.md +0 -0
  29. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/guild/scripts/configure-repo.sh +0 -0
  30. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/guild/scripts/create.sh +0 -0
  31. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/guild/scripts/overview.sh +0 -0
  32. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/onboard/SKILL.md +0 -0
  33. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/onboard/scripts/onboard.sh +0 -0
  34. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
  35. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
  36. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/run-tests/SKILL.md +0 -0
  37. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/run-tests/scripts/test.sh +0 -0
  38. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/sonarclaude/SKILL.md +0 -0
  39. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
  40. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/spec-to-plan/SKILL.md +0 -0
  41. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
  42. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/teach/SKILL.md +0 -0
  43. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/teach/scripts/teach.sh +0 -0
  44. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/think/SKILL.md +0 -0
  45. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/think/scripts/think.sh +0 -0
  46. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/version-bump/SKILL.md +0 -0
  47. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills/version-bump/scripts/bump.py +0 -0
  48. {guild_cli-0.7.0 → guild_cli-0.7.2}/.claude/skills.local.yaml.example +0 -0
  49. {guild_cli-0.7.0 → guild_cli-0.7.2}/.devague/frames/guildmaster-ships-teach-and-onboard-two-agent-firs.json +0 -0
  50. {guild_cli-0.7.0 → guild_cli-0.7.2}/.devague/plans/guildmaster-ships-teach-and-onboard-two-agent-firs.json +0 -0
  51. {guild_cli-0.7.0 → guild_cli-0.7.2}/.flake8 +0 -0
  52. {guild_cli-0.7.0 → guild_cli-0.7.2}/.github/workflows/publish.yml +0 -0
  53. {guild_cli-0.7.0 → guild_cli-0.7.2}/.gitignore +0 -0
  54. {guild_cli-0.7.0 → guild_cli-0.7.2}/.markdownlint-cli2.yaml +0 -0
  55. {guild_cli-0.7.0 → guild_cli-0.7.2}/CLAUDE.md +0 -0
  56. {guild_cli-0.7.0 → guild_cli-0.7.2}/LICENSE +0 -0
  57. {guild_cli-0.7.0 → guild_cli-0.7.2}/README.md +0 -0
  58. {guild_cli-0.7.0 → guild_cli-0.7.2}/culture.yaml +0 -0
  59. {guild_cli-0.7.0 → guild_cli-0.7.2}/docs/cutover.md +0 -0
  60. {guild_cli-0.7.0 → guild_cli-0.7.2}/docs/plans/2026-05-24-guildmaster-ships-teach-and-onboard-two-agent-firs.md +0 -0
  61. {guild_cli-0.7.0 → guild_cli-0.7.2}/docs/specs/2026-05-24-guildmaster-ships-teach-and-onboard-two-agent-firs.md +0 -0
  62. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/__init__.py +0 -0
  63. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/__main__.py +0 -0
  64. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/__init__.py +0 -0
  65. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_commands/__init__.py +0 -0
  66. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_commands/_broadcast.py +0 -0
  67. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_commands/_provision_template.py +0 -0
  68. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_commands/create.py +0 -0
  69. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_commands/explain.py +0 -0
  70. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_commands/learn.py +0 -0
  71. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_commands/onboard.py +0 -0
  72. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_commands/overview.py +0 -0
  73. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_commands/show.py +0 -0
  74. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_commands/teach.py +0 -0
  75. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_commands/whoami.py +0 -0
  76. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_errors.py +0 -0
  77. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_output.py +0 -0
  78. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/cli/_repo.py +0 -0
  79. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/scaffold/__init__.py +0 -0
  80. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/scaffold/instantiate.py +0 -0
  81. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/skills/__init__.py +0 -0
  82. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/skills/identity.py +0 -0
  83. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/skills/ledger.py +0 -0
  84. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/skills/render.py +0 -0
  85. {guild_cli-0.7.0 → guild_cli-0.7.2}/guild/skills/sources.py +0 -0
  86. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/__init__.py +0 -0
  87. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_broadcast_post.py +0 -0
  88. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_cli.py +0 -0
  89. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_cli_create.py +0 -0
  90. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_cli_explain.py +0 -0
  91. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_cli_learn.py +0 -0
  92. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_cli_onboard.py +0 -0
  93. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_cli_overview.py +0 -0
  94. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_cli_show.py +0 -0
  95. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_cli_teach.py +0 -0
  96. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_cli_whoami.py +0 -0
  97. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_scaffold_instantiate.py +0 -0
  98. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_skills_convention.py +0 -0
  99. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_skills_identity.py +0 -0
  100. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_skills_ledger.py +0 -0
  101. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_skills_render.py +0 -0
  102. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_skills_sources.py +0 -0
  103. {guild_cli-0.7.0 → guild_cli-0.7.2}/tests/test_version_fallback.py +0 -0
@@ -33,12 +33,11 @@ jobs:
33
33
  - run: uv run pytest -n auto --cov=guild --cov-report=xml:coverage.xml --cov-report=term -v
34
34
 
35
35
  - name: SonarCloud Scan
36
- # Require BOTH the token and a committed sonar config. The org-level
37
- # SONAR_TOKEN is inherited even though guildmaster isn't provisioned on
38
- # SonarCloud yet; without a sonar.projectKey/organization the scanner
39
- # fails (exit 3). Commit a sonar-project.properties when the project is
40
- # created to activate the scan.
41
- if: env.SONAR_TOKEN != '' && hashFiles('sonar-project.properties') != ''
36
+ # Reads sonar-project.properties (projectKey agentculture_guildmaster,
37
+ # coverage.xml path, qualitygate.wait). Gated only on the token so fork
38
+ # PRs and token-less repos skip the scan and stay green — `secrets.*`
39
+ # isn't allowed in `if:`, hence the job-level env promotion above.
40
+ if: env.SONAR_TOKEN != ''
42
41
  uses: SonarSource/sonarqube-scan-action@fd88b7d7ccbaefd23d8f36f73b59db7a3d246602 # v6
43
42
  env:
44
43
  SONAR_HOST_URL: https://sonarcloud.io
@@ -5,6 +5,50 @@ 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.7.2] - 2026-05-29
9
+
10
+ ### Added
11
+
12
+ ### Changed
13
+
14
+ - **Ledger: `shushu` → `grant` rename.** `agentculture/shushu` was renamed to
15
+ `agentculture/grant` ("agent-first secrets manager") on GitHub; the old name
16
+ redirects. Updated `docs/skill-sources.md` to record `grant` as the live
17
+ downstream consumer: renamed `shushu` → `grant` in the `run-tests` and
18
+ `version-bump` Downstream columns, added `grant` to the `cicd` column with a
19
+ "still named `pr-review`" caveat (its copy is the pre-agex `cicd`), and
20
+ refreshed the maintenance notes (old-skill-dir-name class, the
21
+ no-`culture.yaml` class — `grant`'s repo has no committed `culture.yaml` yet —
22
+ and a `shushu` → `grant` rename note mirroring `agentpypi` → `auntiepypi`).
23
+ Brings `guild teach`/`overview` framing onto the current name. Pairs with
24
+ [grant#18](https://github.com/agentculture/grant/issues/18), the
25
+ `guild teach --all --to grant` issue that brings `grant` to the full canonical
26
+ kit (3 resyncs — `cicd`/`run-tests`/`version-bump` — plus 8 new skills); the
27
+ remaining 8 register as downstream once `grant` applies the resync.
28
+
29
+ ### Fixed
30
+
31
+ ## [0.7.1] - 2026-05-29
32
+
33
+ ### Added
34
+
35
+ - **SonarCloud coverage wiring** — committed `sonar-project.properties`
36
+ (`agentculture_guildmaster`, `sonar.python.coverage.reportPaths=coverage.xml`,
37
+ `sonar.qualitygate.wait=true`). CI already produced `coverage.xml`
38
+ (`--cov=guild --cov-report=xml:coverage.xml`) but the SonarCloud scan was
39
+ gated off because the config file was absent — guildmaster was the only repo
40
+ in the fleet without it. The project is already provisioned on SonarCloud, so
41
+ this activates the scan and feeds coverage to the quality gate.
42
+
43
+ ### Changed
44
+
45
+ - **`tests.yml` SonarCloud Scan gate** — dropped the now-redundant
46
+ `hashFiles('sonar-project.properties')` clause (the file is committed) so the
47
+ step gates only on `env.SONAR_TOKEN != ''`, matching steward and the
48
+ `culture-agent-template`. Refreshed the stale "not provisioned yet" comment.
49
+
50
+ ### Fixed
51
+
8
52
  ## [0.7.0] - 2026-05-28
9
53
 
10
54
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: guild-cli
3
- Version: 0.7.0
3
+ Version: 0.7.2
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
@@ -33,13 +33,13 @@ 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` | 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`, `agenda`, `dominion-breaker`, `convertible`, `jetson` | 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. |
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`, `agenda`, `dominion-breaker`, `convertible`, `jetson`, `grant` (still named `pr-review`) | 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
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`, `agenda`, `dominion-breaker`, `convertible`, `jetson` | 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` | 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` | 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`, `agenda`, `dominion-breaker`, `convertible`, `jetson` | Coverage source resolves from `[tool.coverage.run]` in `pyproject.toml`, so the script is portable across siblings without modification. |
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` | Coverage source resolves from `[tool.coverage.run]` in `pyproject.toml`, so the script is portable across siblings without modification. |
41
41
  | `sonarclaude` | `guildmaster` (`.claude/skills/sonarclaude/`) | `antoine`, `appsec`, `code-lens-cli`, `devague`, `lecodeur`, `lepenseur`, `seer-cli`, `telek`, `agenda`, `dominion-breaker`, `convertible`, `jetson` | 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`, `agenda`, `dominion-breaker`, `convertible`, `jetson` | Pure Python, prepends a Keep-a-Changelog entry; no per-repo customization needed. |
42
+ | `version-bump` | `guildmaster` (`.claude/skills/version-bump/`) | `afi-cli`, `agtag`, `antoine`, `appsec`, `auntiepypi`, `cfafi`, `code-lens-cli`, `culture`, `devague`, `lecodeur`, `lepenseur`, `seer-cli`, `grant`, `telek`, `agenda`, `dominion-breaker`, `convertible`, `jetson` | Pure Python, prepends a Keep-a-Changelog entry; no per-repo customization needed. |
43
43
 
44
44
  > **How the downstream column is maintained.** The "Downstream copies (known)"
45
45
  > entries are kept in sync with guildmaster's own drift detector:
@@ -49,14 +49,20 @@ current by `guild overview --scope mesh`.
49
49
  > (deliberate follow-up, not oversight):
50
50
  >
51
51
  > - **No `culture.yaml`** (invisible to the detector): `tipalti`,
52
- > `cultureagent`, `cultureflare`, `irc-lens`, `agentirc`, `zehut`.
52
+ > `cultureagent`, `cultureflare`, `irc-lens`, `agentirc`, `zehut`, `grant`
53
+ > (renamed from `shushu`; the repo has no committed `culture.yaml` yet, so
54
+ > `--scope mesh` cannot see it until one is added).
53
55
  > - **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.
56
+ > doesn't canonicalize): `daria`, `culture-sonar-cli` vendor `cicd`
57
+ > under `pr-review`. `cfafi` / `culture` / `grant` are already listed with a
58
+ > "still named `pr-review`/`coordinate`" note.
57
59
  >
58
60
  > `agentpypi` was **renamed to `auntiepypi`** on GitHub (the old name redirects);
59
- > `auntiepypi` is the live consumer recorded above.
61
+ > `auntiepypi` is the live consumer recorded above. Likewise `shushu` was
62
+ > **renamed to `grant`** on GitHub (the old name redirects); `grant` is the live
63
+ > consumer recorded above. guildmaster is bringing `grant` to the full canonical
64
+ > kit (`guild teach --all --to grant`); the remaining canonical skills register
65
+ > as downstream once `grant` applies the resync issue.
60
66
 
61
67
  ## Inbound workflow skills (origin = `devague`, re-broadcast by `guildmaster`)
62
68
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "guild-cli"
3
- version = "0.7.0"
3
+ version = "0.7.2"
4
4
  description = "guildmaster — an agent and CLI that manages skills for the AgentCulture mesh."
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -0,0 +1,24 @@
1
+ # SonarCloud project identity. Matches the project key registered on
2
+ # SonarCloud and used by the cicd skill's Sonar status queries
3
+ # (`agentculture_guildmaster`).
4
+ sonar.projectKey=agentculture_guildmaster
5
+ sonar.organization=agentculture
6
+
7
+ # Source layout — package lives at the top level (no src/ wrapper).
8
+ sonar.sources=guild
9
+ sonar.tests=tests
10
+
11
+ # Coverage report produced in CI by `uv run pytest --cov-report=xml:coverage.xml`
12
+ # (see .github/workflows/tests.yml). Path is relative to the repo root.
13
+ sonar.python.coverage.reportPaths=coverage.xml
14
+ sonar.python.version=3.12
15
+
16
+ # Don't analyze noise (vendored skills are cite-don't-import copies, not source).
17
+ sonar.exclusions=**/__pycache__/**,**/.venv/**,uv.lock,.claude/skills/**
18
+
19
+ # Block CI on a failing quality gate. The scanner polls SonarCloud and exits
20
+ # non-zero on a red gate (coverage regression, new bugs/vulnerabilities). Only
21
+ # takes effect when the SonarCloud Scan step runs — that step is guarded by
22
+ # `if: env.SONAR_TOKEN != ''` in .github/workflows/tests.yml, so token-less
23
+ # repos and fork PRs (no injected secret) skip the scan and stay green.
24
+ sonar.qualitygate.wait=true
@@ -179,7 +179,7 @@ wheels = [
179
179
 
180
180
  [[package]]
181
181
  name = "guild-cli"
182
- version = "0.7.0"
182
+ version = "0.7.2"
183
183
  source = { editable = "." }
184
184
  dependencies = [
185
185
  { name = "pyyaml" },
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