feat!: rename to gitculture-cli (command gitculture, ghafi kept as alias + PyPI shim)#14
Conversation
… kept as alias + PyPI shim
Renames the project ghafi -> gitculture-cli. The import package ghafi/ becomes
gitculture/ and the CLI command is now `gitculture`. The old `ghafi` command is
kept as a backward-compatible alias (second console-script entry point), and
`ghafi` remains a PyPI distribution as a thin compatibility shim that depends on
gitculture-cli. The GitHub repo stays agentculture/ghafi (unchanged deployment
target), so repo URLs, the User-Agent, and the eidetic --scope ghafi are kept.
- pyproject: name=gitculture-cli; scripts gitculture + ghafi -> gitculture.cli:main;
wheel/coverage/isort targets -> gitculture; __version__ from metadata("gitculture-cli")
- internal GhafiError -> GitcultureError, _GhafiArgumentParser -> _GitcultureArgumentParser
- packaging/ghafi/: compat shim metapackage (Requires-Dist: gitculture-cli==<ver>)
- publish.yml: dual-publish both distributions via Trusted Publishing (per-project
token via filename-scoped uv publish); dev/test job stamps the shim version+pin
- tests.yml + skills + docs updated to gitculture
- version bump 0.4.0 -> 0.5.0
Manual follow-up: register a Trusted Publisher for the new gitculture-cli project
on pypi.org and test.pypi.org (owner agentculture, repo ghafi, workflow
publish.yml, env pypi/testpypi) before the next publish, or the first publish 403s.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UnHGFcsv5bHFqBfPh7vpDE
PR Summary by QodoRename ghafi to gitculture-cli with gitculture command and ghafi shim Description
Diagram
High-Level Assessment
Files changed (49)
|
Code Review by Qodo
1.
|
… repo-rename slug updates Addresses Qodo review on PR #14: - Version 0.4.0 -> 1.0.0 (major bump for the breaking rename, per policy); classifier Alpha -> Beta. - Replace the `ghafi` shim metapackage with a full dual-publish: build the same zero-dependency code twice with the distribution name overridden to `ghafi` at build time, so `pip install ghafi` installs the real tool and the `ghafi` distribution carries NO runtime dependencies (removes packaging/ghafi/). Resolves the "ghafi has no non-stdlib runtime dependencies" rule. - __init__.py now resolves __version__ from whichever distribution is installed (gitculture-cli or ghafi) — fixes `0.0.0+local` when installed via `pip install ghafi`. - GitHub repo was renamed agentculture/ghafi -> agentculture/gitculture-cli: update Homepage/Issues URLs, the User-Agent header, the bug-report link, the pr-review skill, the workspace path, and the Trusted-Publishing instructions. - CHANGELOG/README/CLAUDE.md rewritten to describe the full dual-publish (both names are full zero-dep distributions, not a shim). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UnHGFcsv5bHFqBfPh7vpDE
Summary
Renames the project ghafi → gitculture-cli. The CLI command is now
gitculture; the oldghaficommand is kept as a backward-compatible alias, andghafistays on PyPI as a thin compatibility shim that depends ongitculture-cli. The GitHub repo staysagentculture/ghafi(unchanged deployment target).What changed
ghafi/→gitculture/(git rename, history preserved); all imports updated;GhafiError→GitcultureError,_GhafiArgumentParser→_GitcultureArgumentParser.name = "gitculture-cli"; two console scripts (gitcultureprimary +ghafialias) →gitculture.cli:main; wheel/coverage/isort targets →gitculture;__version__frommetadata("gitculture-cli").packaging/ghafi/compat shim metapackage (Requires-Dist: gitculture-cli==<ver>, hatchlingbypass-selection);publish.ymlbuilds both and publishes each with a filename-scopeduv publishso Trusted Publishing mints the correct per-project token; the dev/test job stamps the shim version + dependency pin in lockstep.ghafi(deployment target unchanged): repo URLsagentculture/ghafi, theUser-Agenttool string's repo URL, the bug-report link, and the eidetic--scope ghafi.SKILL.md+ skill scripts, andtests.ymlupdated togitculture.Verification
gitcultureandghafiboth run;pip install ghafipulls ingitculture-cli; the no-token path exits 2 cleanly (no traceback).Trusted Publishing is keyed on
(repo, workflow, environment), not artifact name. Register a Trusted Publisher for the newgitculture-cliproject on pypi.org and test.pypi.org (owneragentculture, repoghafi, workflowpublish.yml, envpypi/testpypi) before merging to main, or the first publish step 403s. The existingghafipublisher entry keeps working for the shim.Out of scope (flagged, not changed here)
A pre-existing inconsistency where
_env.py/learn.py/catalog.pylistadmin:repo_hookas a required scope while CLAUDE.md says it isn't needed. Unrelated to the rename; can be reconciled separately.— ghafi (Claude)
🤖 Generated with Claude Code
https://claude.ai/code/session_01UnHGFcsv5bHFqBfPh7vpDE