github-agent-cli 1.2.2__tar.gz → 1.3.0__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 (124) hide show
  1. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.ghagent.json +2 -0
  2. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.github/workflows/ci.yml +85 -0
  3. github_agent_cli-1.3.0/.github/workflows/codeql.yml +32 -0
  4. github_agent_cli-1.3.0/.github/workflows/docs.yml +65 -0
  5. github_agent_cli-1.3.0/.github/workflows/release-draft.yml +81 -0
  6. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.gitignore +5 -0
  7. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/AGENTS.md +3 -1
  8. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/AGENTS.ru.md +3 -1
  9. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/CHANGELOG.md +67 -1
  10. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/CHANGELOG.ru.md +25 -1
  11. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/CITATION.cff +2 -2
  12. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/CONTRIBUTING.md +1 -1
  13. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/CONTRIBUTING.ru.md +1 -1
  14. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/PKG-INFO +62 -17
  15. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/README.de.md +51 -15
  16. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/README.es.md +52 -16
  17. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/README.hi.md +50 -15
  18. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/README.md +61 -16
  19. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/README.ru.md +57 -15
  20. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/README.zh.md +46 -15
  21. github_agent_cli-1.3.0/assets/demo.gif +0 -0
  22. github_agent_cli-1.3.0/docs/FIELD-NOTES.md +150 -0
  23. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/docs/PACKAGING.md +68 -46
  24. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/docs/RULES.md +67 -7
  25. github_agent_cli-1.3.0/docs/index.md +52 -0
  26. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/examples/ci-usage.md +5 -5
  27. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/examples/docker.md +1 -1
  28. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/examples/pre-commit-config.yaml +1 -1
  29. github_agent_cli-1.3.0/hooks/repo_links.py +41 -0
  30. github_agent_cli-1.3.0/mkdocs.yml +77 -0
  31. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/pyproject.toml +34 -3
  32. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/tests/run_tests.py +183 -10
  33. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/tools/ghagent.py +66 -31
  34. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/tools/ghalib/assets.py +46 -16
  35. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/tools/ghalib/audit.py +7 -2
  36. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/tools/ghalib/changelog.py +53 -8
  37. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/tools/ghalib/config.py +7 -0
  38. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/tools/ghalib/mdcheck.py +67 -12
  39. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/tools/ghalib/meta.py +0 -1
  40. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/tools/ghalib/report.py +1 -1
  41. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/tools/ghalib/util.py +28 -3
  42. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/tools/ghalib/wiki.py +38 -3
  43. github_agent_cli-1.3.0/tools/make_demo.py +145 -0
  44. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/04-Wiki-Workflow.md +3 -1
  45. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/04-Wiki-Workflow.ru.md +3 -1
  46. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/06-Traps.md +17 -0
  47. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/06-Traps.ru.md +16 -0
  48. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.dockerignore +0 -0
  49. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.editorconfig +0 -0
  50. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.gitattributes +0 -0
  51. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.github/CODEOWNERS +0 -0
  52. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  53. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  54. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  55. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.github/ISSUE_TEMPLATE/repository-audit.yml +0 -0
  56. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  57. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.github/dependabot.yml +0 -0
  58. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.github/release.yml +0 -0
  59. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.github/workflows/publish.yml +0 -0
  60. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/.pre-commit-hooks.yaml +0 -0
  61. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/CODE_OF_CONDUCT.md +0 -0
  62. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/CODE_OF_CONDUCT.ru.md +0 -0
  63. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/Dockerfile +0 -0
  64. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/GOVERNANCE.md +0 -0
  65. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/GOVERNANCE.ru.md +0 -0
  66. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/LICENSE +0 -0
  67. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/SECURITY.md +0 -0
  68. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/SECURITY.ru.md +0 -0
  69. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/SUPPORT.md +0 -0
  70. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/SUPPORT.ru.md +0 -0
  71. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/action.yml +0 -0
  72. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/assets/social-preview.png +0 -0
  73. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/assets/social-preview.svg +0 -0
  74. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/docs/ARCHITECTURE.md +0 -0
  75. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/docs/IMPORT.md +0 -0
  76. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/docs/IMPORT.ru.md +0 -0
  77. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/docs/PROCEDURES.md +0 -0
  78. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/docs/PROCEDURES.ru.md +0 -0
  79. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/docs/WIKI.md +0 -0
  80. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/agents-template.md +0 -0
  81. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/agents-template.ru.md +0 -0
  82. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/changelog-template.md +0 -0
  83. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/changelog-template.ru.md +0 -0
  84. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/checklists.md +0 -0
  85. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/checklists.ru.md +0 -0
  86. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/contributing-template.md +0 -0
  87. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/contributing-template.ru.md +0 -0
  88. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/issue-form-template.yml +0 -0
  89. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/readme-template.md +0 -0
  90. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/readme-template.ru.md +0 -0
  91. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/style-guide.md +0 -0
  92. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/style-guide.ru.md +0 -0
  93. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/wiki-home-template.md +0 -0
  94. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/wiki-home-template.ru.md +0 -0
  95. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/reference/wiki-manifest-template.json +0 -0
  96. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/scripts/build_and_check.ps1 +0 -0
  97. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/scripts/build_and_check.sh +0 -0
  98. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/skills/changelog-release/SKILL.md +0 -0
  99. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/skills/changelog-release/SKILL.ru.md +0 -0
  100. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/skills/contributing-and-community/SKILL.md +0 -0
  101. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/skills/contributing-and-community/SKILL.ru.md +0 -0
  102. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/skills/github-repo/SKILL.md +0 -0
  103. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/skills/github-repo/SKILL.ru.md +0 -0
  104. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/skills/github-wiki/SKILL.md +0 -0
  105. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/skills/github-wiki/SKILL.ru.md +0 -0
  106. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/skills/import-to-agents/SKILL.md +0 -0
  107. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/skills/import-to-agents/SKILL.ru.md +0 -0
  108. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/skills/repo-images/SKILL.md +0 -0
  109. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/skills/repo-images/SKILL.ru.md +0 -0
  110. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/tools/ghalib/__init__.py +0 -0
  111. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/tools/ghalib/install.py +0 -0
  112. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/01-Why.md +0 -0
  113. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/01-Why.ru.md +0 -0
  114. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/02-Install.md +0 -0
  115. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/02-Install.ru.md +0 -0
  116. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/03-Repository-Contract.md +0 -0
  117. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/03-Repository-Contract.ru.md +0 -0
  118. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/05-Release.md +0 -0
  119. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/05-Release.ru.md +0 -0
  120. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/07-Import.md +0 -0
  121. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/07-Import.ru.md +0 -0
  122. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/Home.md +0 -0
  123. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/Home.ru.md +0 -0
  124. {github_agent_cli-1.2.2 → github_agent_cli-1.3.0}/wiki/wiki.json +0 -0
@@ -10,6 +10,8 @@
10
10
  "wiki_manifest": "wiki/wiki.json",
11
11
  "ci_workflow": ".github/workflows/ci.yml",
12
12
  "require_files": ["AGENTS.md", "LICENSE", "pyproject.toml", "tests/run_tests.py", "tools/ghagent.py"],
13
+ "exclude_dirs": ["site"],
14
+ "safe_email_domains": [],
13
15
  "ignore_rules": [],
14
16
  "topic_min": 8,
15
17
  "topic_max": 20,
@@ -30,6 +30,25 @@ jobs:
30
30
  - name: The CLI answers
31
31
  run: python tools/ghagent.py --version
32
32
 
33
+ lint:
34
+ name: Static analysis (ruff, mypy)
35
+ runs-on: ubuntu-latest
36
+ steps:
37
+ - uses: actions/checkout@v7
38
+
39
+ - uses: actions/setup-python@v7
40
+ with:
41
+ python-version: '3.13'
42
+
43
+ - name: Install the analysers (development only)
44
+ run: python -m pip install --disable-pip-version-check ruff mypy
45
+
46
+ - name: ruff
47
+ run: python -m ruff check .
48
+
49
+ - name: mypy
50
+ run: python -m mypy
51
+
33
52
  documents:
34
53
  name: Documents and repository contracts
35
54
  runs-on: ubuntu-latest
@@ -170,3 +189,69 @@ jobs:
170
189
 
171
190
  - name: The image lints the documents
172
191
  run: docker run --rm --volume "$PWD:/repo" ghagent:ci doc --root .
192
+ manifests:
193
+ name: Package-manager manifests
194
+ runs-on: ubuntu-latest
195
+ steps:
196
+ - uses: actions/checkout@v7
197
+
198
+ - uses: actions/setup-python@v7
199
+ with:
200
+ python-version: '3.13'
201
+
202
+ - name: Homebrew formula syntax
203
+ run: ruby -c packaging/homebrew/github-agent-cli.rb
204
+
205
+ - name: Homebrew formula downloads and verifies
206
+ run: |
207
+ set -euo pipefail
208
+ python - <<'PY'
209
+ import hashlib
210
+ import json
211
+ import pathlib
212
+ import re
213
+ import urllib.request
214
+
215
+ text = pathlib.Path("packaging/homebrew/github-agent-cli.rb").read_text(encoding="utf-8")
216
+ url = re.search(r'^\s*url "([^"]+)"', text, re.M).group(1)
217
+ expected = re.search(r'^\s*sha256 "([0-9a-f]{64})"', text, re.M).group(1)
218
+ with urllib.request.urlopen(url, timeout=60) as response:
219
+ data = response.read()
220
+ actual = hashlib.sha256(data).hexdigest()
221
+ print(f"downloaded {url} ({len(data)} bytes), sha256 {actual}")
222
+ if actual != expected:
223
+ raise SystemExit("formula sha256 does not match the downloaded sdist")
224
+ version = re.search(r"github_agent_cli-([0-9.]+)\.tar\.gz", url).group(1)
225
+ pypi = json.load(urllib.request.urlopen("https://pypi.org/pypi/github-agent-cli/json", timeout=60))
226
+ if pypi["info"]["version"] != version:
227
+ raise SystemExit(f"formula pins {version}, PyPI serves {pypi['info']['version']}")
228
+ print(f"formula pins the current PyPI version {version}")
229
+ PY
230
+
231
+ - name: Scoop manifest downloads and verifies
232
+ run: |
233
+ set -euo pipefail
234
+ python - <<'PY'
235
+ import hashlib
236
+ import io
237
+ import json
238
+ import pathlib
239
+ import urllib.request
240
+ import zipfile
241
+
242
+ manifest = json.loads(pathlib.Path("packaging/scoop/github-agent-cli.json").read_text(encoding="utf-8"))
243
+ with urllib.request.urlopen(manifest["url"], timeout=60) as response:
244
+ data = response.read()
245
+ actual = hashlib.sha256(data).hexdigest()
246
+ print(f"downloaded {manifest['url']} ({len(data)} bytes), sha256 {actual}")
247
+ if actual != manifest["hash"]:
248
+ raise SystemExit("scoop hash does not match the downloaded bundle")
249
+ with zipfile.ZipFile(io.BytesIO(data)) as archive:
250
+ names = archive.namelist()
251
+ required = f"{manifest['extract_dir']}/{manifest['bin']}"
252
+ if required not in names:
253
+ raise SystemExit(f"the bundle has no {required}")
254
+ if not any(name.startswith(f"{manifest['extract_dir']}/lib/ghagent.py") for name in names):
255
+ raise SystemExit("the bundle has no lib/ghagent.py")
256
+ print(f"bundle layout is valid, {len(names)} entries")
257
+ PY
@@ -0,0 +1,32 @@
1
+ name: CodeQL
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+ schedule:
9
+ - cron: "23 4 * * 1"
10
+
11
+ permissions:
12
+ contents: read
13
+
14
+ jobs:
15
+ analyze:
16
+ name: CodeQL (python)
17
+ runs-on: ubuntu-latest
18
+ permissions:
19
+ actions: read
20
+ contents: read
21
+ security-events: write
22
+ steps:
23
+ - uses: actions/checkout@v7
24
+
25
+ - name: Initialize CodeQL
26
+ uses: github/codeql-action/init@v4
27
+ with:
28
+ languages: python
29
+ queries: security-and-quality
30
+
31
+ - name: Analyze
32
+ uses: github/codeql-action/analyze@v4
@@ -0,0 +1,65 @@
1
+ name: Docs
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths:
7
+ - "docs/**"
8
+ - "mkdocs.yml"
9
+ - ".github/workflows/docs.yml"
10
+ - "README.md"
11
+ pull_request:
12
+ paths:
13
+ - "docs/**"
14
+ - "mkdocs.yml"
15
+ - ".github/workflows/docs.yml"
16
+ workflow_dispatch:
17
+
18
+ permissions:
19
+ contents: read
20
+
21
+ concurrency:
22
+ group: docs-${{ github.ref }}
23
+ cancel-in-progress: true
24
+
25
+ jobs:
26
+ build:
27
+ name: Build the site
28
+ runs-on: ubuntu-latest
29
+ steps:
30
+ - uses: actions/checkout@v7
31
+
32
+ - uses: actions/setup-python@v7
33
+ with:
34
+ python-version: "3.13"
35
+
36
+ - name: Install MkDocs Material
37
+ run: python -m pip install --disable-pip-version-check "mkdocs-material>=9.6,<10"
38
+
39
+ - name: Build
40
+ run: python -m mkdocs build --verbose
41
+
42
+ - name: Upload the artifact
43
+ uses: actions/upload-pages-artifact@v5
44
+ with:
45
+ path: site
46
+
47
+ deploy:
48
+ name: Deploy to GitHub Pages
49
+ # A pull request must build the site but never publish it.
50
+ if: github.event_name != 'pull_request'
51
+ needs: build
52
+ runs-on: ubuntu-latest
53
+ permissions:
54
+ pages: write
55
+ id-token: write
56
+ environment:
57
+ name: github-pages
58
+ url: ${{ steps.deployment.outputs.page_url }}
59
+ steps:
60
+ - name: Configure Pages
61
+ uses: actions/configure-pages@v6
62
+
63
+ - name: Deploy
64
+ id: deployment
65
+ uses: actions/deploy-pages@v5
@@ -0,0 +1,81 @@
1
+ name: Release draft
2
+
3
+ # The recommendation was "automate releases with release-please or semantic-release". This
4
+ # project cannot take either: the CHANGELOG is hand-written and machine-verified (Keep a
5
+ # Changelog 2.0.0 with `[Unreleased]`), and release-please would own the file and rewrite the
6
+ # history of the entries. What is left is the mechanical part — the release body — and that is
7
+ # what this workflow automates, as a DRAFT release:
8
+ #
9
+ # * a draft is not published, so `publish.yml` (triggered by `release: published`) does not
10
+ # fire and nothing reaches PyPI by accident;
11
+ # * the body is generated by `ghagent changelog notes <version>` from the CHANGELOG, so it
12
+ # cannot drift from the file;
13
+ # * a human reads the draft and presses Publish, which is the irreversible step.
14
+ #
15
+ # Signed commits are a repository setting (`git commit -S` + a key); automation cannot grant it,
16
+ # so it stays a documented requirement in docs/PACKAGING.md rather than a workflow step.
17
+
18
+ on:
19
+ workflow_dispatch:
20
+ inputs:
21
+ tag:
22
+ description: "Existing tag to build the draft for (for example v1.3.0)"
23
+ required: true
24
+ prerelease:
25
+ description: "Mark as a pre-release"
26
+ type: boolean
27
+ default: false
28
+
29
+ permissions:
30
+ contents: write
31
+
32
+ jobs:
33
+ draft:
34
+ name: Draft the release notes from CHANGELOG
35
+ runs-on: ubuntu-latest
36
+ steps:
37
+ - uses: actions/checkout@v7
38
+ with:
39
+ fetch-depth: 0
40
+
41
+ - uses: actions/setup-python@v7
42
+ with:
43
+ python-version: "3.13"
44
+
45
+ - name: Check out the tag
46
+ run: git checkout "${{ inputs.tag }}"
47
+
48
+ - name: The CHANGELOG knows this version
49
+ run: python tools/ghagent.py changelog check
50
+
51
+ - name: Render the body
52
+ run: |
53
+ set -euo pipefail
54
+ VERSION="${TAG#v}"
55
+ python tools/ghagent.py changelog notes "$VERSION" > release-notes.md
56
+ test -s release-notes.md
57
+ {
58
+ echo "## What changed"
59
+ echo
60
+ cat release-notes.md
61
+ echo
62
+ echo "## Verification"
63
+ echo
64
+ echo '```bash'
65
+ echo "ghagent --version # github-agent $VERSION"
66
+ echo "python tests/run_tests.py"
67
+ echo '```'
68
+ } > body.md
69
+ env:
70
+ TAG: ${{ inputs.tag }}
71
+
72
+ - name: Create the draft release
73
+ env:
74
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
75
+ run: |
76
+ set -euo pipefail
77
+ FLAGS=""
78
+ if [ "${{ inputs.prerelease }}" = "true" ]; then FLAGS="--prerelease"; fi
79
+ gh release create "${{ inputs.tag }}" --draft $FLAGS \
80
+ --title "${{ inputs.tag }}" --notes-file body.md
81
+ echo "::notice::Draft created. Read it, then press Publish to start publish.yml (PyPI)."
@@ -1,6 +1,7 @@
1
1
  # agent work directories
2
2
  .ghagent/
3
3
  .install.json
4
+ .ragraf/
4
5
 
5
6
  # python
6
7
  __pycache__/
@@ -14,6 +15,10 @@ build/
14
15
  .venv/
15
16
  .venv-*/
16
17
 
18
+ # documentation site (mkdocs build)
19
+ site/
20
+ .cache/
21
+
17
22
  # editors and OS
18
23
  .vscode/
19
24
  .idea/
@@ -23,7 +23,9 @@ uv tool install github-agent-cli # recommended: isolated CLI
23
23
  pipx install github-agent-cli # alternative
24
24
  pip install github-agent-cli # Python 3.11+
25
25
  pip install "github-agent-cli[png]" # optional Pillow: PNG banner output only
26
- ghagent --version # github-agent 1.2.2
26
+ brew install paulmann/homebrew-github-agent-cli/github-agent-cli
27
+ scoop bucket add github-agent-cli https://github.com/paulmann/scoop-github-agent-cli && scoop install github-agent-cli
28
+ ghagent --version # github-agent 1.3.0
27
29
  ```
28
30
 
29
31
  The wheel ships the CLI only. The pack — `skills/`, `tools/`, `tests/`, `reference/`, `wiki/`,
@@ -26,7 +26,9 @@ uv tool install github-agent-cli # рекомендуется: изо
26
26
  pipx install github-agent-cli # альтернатива
27
27
  pip install github-agent-cli # Python 3.11+
28
28
  pip install "github-agent-cli[png]" # необязательный Pillow: только PNG
29
- ghagent --version # github-agent 1.2.2
29
+ brew install paulmann/homebrew-github-agent-cli/github-agent-cli
30
+ scoop bucket add github-agent-cli https://github.com/paulmann/scoop-github-agent-cli && scoop install github-agent-cli
31
+ ghagent --version # github-agent 1.3.0
30
32
  ```
31
33
 
32
34
  Wheel содержит только CLI. Пакет — `skills/`, `tools/`, `tests/`, `reference/`, `wiki/`,
@@ -6,6 +6,71 @@ All notable changes to this project are documented here. The format is
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.3.0] - 2026-11-01
10
+
11
+ ### Added
12
+
13
+ - `docs/FIELD-NOTES.md`: ten defects that real repositories found, anonymised — the symptom, the
14
+ cause, the rule that changed and the fixture that now holds it. Published as a page of the
15
+ documentation site.
16
+ - A documentation site on GitHub Pages: `mkdocs.yml` (Material), `docs/index.md`,
17
+ `.github/workflows/docs.yml` (build on every pull request, deploy from `main`) and
18
+ `hooks/repo_links.py`, which points a link that leaves `docs/` at the repository instead of at a
19
+ page that does not exist.
20
+ - `.github/workflows/codeql.yml` (CodeQL, security-and-quality queries) and a `lint` job in CI:
21
+ `ruff` and `mypy` with their configuration in `pyproject.toml`. Both are development tools — the
22
+ runtime dependency count stays zero.
23
+ - `.github/workflows/release-draft.yml`: a manual workflow that renders the release body from the
24
+ CHANGELOG (`changelog notes`) and creates a **draft** release. A draft does not trigger
25
+ `publish.yml`, so nothing reaches PyPI before a human presses Publish.
26
+ - `tools/make_demo.py` and `assets/demo.gif`: the README animation is rendered from the real
27
+ output of three commands, so it cannot show anything the tool did not print.
28
+ - README sections **Why this exists** and **How it compares** (with `markdownlint`, `vale`,
29
+ `action-gh-release`, pre-commit, `release-please` and the community-health files) in all six
30
+ languages.
31
+ - `.ghagent.json` keys `exclude_dirs` (build output whose name the pack cannot know, e.g. `site`)
32
+ and `safe_email_domains` (role domains of this repository).
33
+ - `packaging/homebrew/github-agent-cli.rb`: a Homebrew formula that installs the PyPI sdist
34
+ `github_agent_cli-1.2.2.tar.gz` (sha256 `f60d17b1…e14ae`) into a virtualenv with `python@3.13`,
35
+ with `livecheck` reading the PyPI JSON API. Canonical copy: `paulmann/homebrew-github-agent-cli`.
36
+ - `packaging/scoop/github-agent-cli.json`: a Scoop manifest for the Windows bundle
37
+ `github-agent-cli-1.2.2-windows-x64.zip` (sha256 `2676f33b…c85a4`), `depends: python`,
38
+ `checkver`/`autoupdate` from the PyPI JSON API and the release `SHA256SUMS.txt`. Canonical copy:
39
+ `paulmann/scoop-github-agent-cli`.
40
+ - A Windows bundle in the release assets: `ghagent.cmd` plus the wheel contents under `lib/`. It was
41
+ executed on Windows before upload (`--version`, `audit . --min-score 90`).
42
+ - CI job `manifests`: `ruby -c` for the formula, a real download of both URLs with the SHA-256
43
+ compared against the manifest, and a layout check of the bundle. A wrong hash or a stale version
44
+ fails the pull request.
45
+ - `packaging/README.md`: what each manifest installs, where the canonical copy lives and the bump
46
+ procedure for both.
47
+
48
+ ### Changed
49
+
50
+ - `md.link-local`: inside a wiki checkout — detected from `_Sidebar.md` or `_Footer.md` — a page
51
+ name resolves to `Page.md`, including names with dots (`Migration-3.x-to-4.0`). In an ordinary
52
+ repository the same link stays an error, because there it is a 404.
53
+ - `md.h1`: `_Sidebar.md`, `_Footer.md` and `_Header.md` are wiki furniture and are reported as a
54
+ note, not as a document without a title.
55
+ - `doc` and `privacy` share one walker, which skips every dot-directory except `.github/` and
56
+ `.well-known/`; `doc` also honours `ignore_rules` from `.ghagent.json`, which only `audit` read
57
+ before.
58
+ - `changelog.link-refs`: missing link references are a warning, not an error — Keep a Changelog
59
+ makes them optional. `changelog.types`: a grouping subtitle is dropped before the lookup, so
60
+ `### Added — template language` is `Added`.
61
+ - `assets render`: chips come from the declared keywords (languages are the fallback), emoji are
62
+ stripped from the title, and a title or tagline that would be cut is a warning that names the
63
+ limit.
64
+ - `meta check --repo <slug>` reads the repository through `gh api` instead of validating the empty
65
+ arguments it was given.
66
+ - `audit`: `wiki-source` is skipped, not failed, when the tree has no `wiki/` directory.
67
+ - `wiki verify`: the target is an explicit `--out`, then a `--wiki-dir` that already looks like a
68
+ wiki checkout, then the build; the header names the directory that was read, and a repository
69
+ with neither sources nor a build gets one note instead of an error.
70
+ - `docs/PACKAGING.md`: the Homebrew and Scoop section is no longer "deferred" — it lists both
71
+ manifests, the measured hashes and how the CI job verifies them.
72
+ - The six READMEs and `AGENTS.md` gained the `brew` and `scoop` install commands.
73
+
9
74
  ## [1.2.2] - 2026-10-30
10
75
 
11
76
  ### Changed
@@ -135,7 +200,8 @@ All notable changes to this project are documented here. The format is
135
200
 
136
201
  - The pack ships without tokens, absolute machine paths or personal addresses; the privacy rule fails the build if one appears, and a self-test enforces it on the pack itself.
137
202
 
138
- [Unreleased]: https://github.com/paulmann/github-agent/compare/v1.2.2...HEAD
203
+ [Unreleased]: https://github.com/paulmann/github-agent/compare/v1.3.0...HEAD
204
+ [1.3.0]: https://github.com/paulmann/github-agent/compare/v1.2.2...v1.3.0
139
205
  [1.2.2]: https://github.com/paulmann/github-agent/compare/v1.2.1...v1.2.2
140
206
  [1.2.1]: https://github.com/paulmann/github-agent/compare/v1.2.0...v1.2.1
141
207
  [1.2.0]: https://github.com/paulmann/github-agent/compare/v1.1.0...v1.2.0
@@ -6,6 +6,29 @@
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.3.0] - 2026-11-01
10
+
11
+ ### Добавлено
12
+
13
+ - `packaging/homebrew/github-agent-cli.rb`: формула Homebrew, которая ставит sdist с PyPI
14
+ `github_agent_cli-1.2.2.tar.gz` (sha256 `f60d17b1…e14ae`) в virtualenv с `python@3.13`,
15
+ `livecheck` читает JSON API PyPI. Каноническая копия: `paulmann/homebrew-github-agent-cli`.
16
+ - `packaging/scoop/github-agent-cli.json`: манифест Scoop для Windows-бандла
17
+ `github-agent-cli-1.2.2-windows-x64.zip` (sha256 `2676f33b…c85a4`), `depends: python`,
18
+ `checkver`/`autoupdate` из JSON API PyPI и `SHA256SUMS.txt` релиза. Каноническая копия:
19
+ `paulmann/scoop-github-agent-cli`.
20
+ - Windows-бандл в ассетах релиза: `ghagent.cmd` плюс содержимое колеса в `lib/`. Перед загрузкой
21
+ он был запущен на Windows (`--version`, `audit . --min-score 90`).
22
+ - CI-job `manifests`: `ruby -c` для формулы, реальная загрузка обоих URL со сверкой SHA-256 и
23
+ проверка раскладки бандла. Неверный хэш или устаревшая версия валят pull request.
24
+ - `packaging/README.md`: что ставит каждый манифест, где каноническая копия и как обновлять.
25
+
26
+ ### Изменено
27
+
28
+ - `docs/PACKAGING.md`: раздел про Homebrew и Scoop больше не «отложенный» — там оба манифеста,
29
+ измеренные хэши и проверка в CI.
30
+ - В шесть README и `AGENTS.md` добавлены команды установки через `brew` и `scoop`.
31
+
9
32
  ## [1.2.2] - 2026-10-30
10
33
 
11
34
  ### Изменено
@@ -135,7 +158,8 @@
135
158
 
136
159
  - Пакет поставляется без токенов, абсолютных путей машины и личных адресов; правило приватности роняет сборку, если такое появится, а самопроверка следит за самим пакетом.
137
160
 
138
- [Unreleased]: https://github.com/paulmann/github-agent/compare/v1.2.2...HEAD
161
+ [Unreleased]: https://github.com/paulmann/github-agent/compare/v1.3.0...HEAD
162
+ [1.3.0]: https://github.com/paulmann/github-agent/compare/v1.2.2...v1.3.0
139
163
  [1.2.2]: https://github.com/paulmann/github-agent/compare/v1.2.1...v1.2.2
140
164
  [1.2.1]: https://github.com/paulmann/github-agent/compare/v1.2.0...v1.2.1
141
165
  [1.2.0]: https://github.com/paulmann/github-agent/compare/v1.1.0...v1.2.0
@@ -5,8 +5,8 @@ abstract: "Repository and wiki steward for AI agents: audits README, CHANGELOG a
5
5
  type: software
6
6
  authors:
7
7
  - name: "github-agent contributors"
8
- version: 1.2.2
9
- date-released: 2026-10-30
8
+ version: 1.3.0
9
+ date-released: 2026-11-01
10
10
  license: MIT
11
11
  repository-code: "https://github.com/paulmann/github-agent"
12
12
  keywords:
@@ -27,7 +27,7 @@ for the map, [docs/RULES.md](docs/RULES.md) for the rule catalogue and
27
27
  git clone https://github.com/paulmann/github-agent.git
28
28
  cd github-agent
29
29
  pip install -e .
30
- ghagent --version # github-agent 1.2.2
30
+ ghagent --version # github-agent 1.3.0
31
31
  ghagent selftest # must print PASS
32
32
  python tests/run_tests.py # the same suite, full output
33
33
  ```
@@ -27,7 +27,7 @@
27
27
  git clone https://github.com/paulmann/github-agent.git
28
28
  cd github-agent
29
29
  pip install -e .
30
- ghagent --version # github-agent 1.2.2
30
+ ghagent --version # github-agent 1.3.0
31
31
  ghagent selftest # должно напечатать PASS
32
32
  python tests/run_tests.py # тот же набор тестов, полный вывод
33
33
  ```