capt-hook 3.18.0__tar.gz → 3.19.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 (104) hide show
  1. {capt_hook-3.18.0 → capt_hook-3.19.0}/PKG-INFO +2 -2
  2. {capt_hook-3.18.0 → capt_hook-3.19.0}/README.md +1 -1
  3. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/cli.py +3 -1
  4. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/repo.py +2 -4
  5. {capt_hook-3.18.0 → capt_hook-3.19.0}/pyproject.toml +1 -1
  6. {capt_hook-3.18.0 → capt_hook-3.19.0}/LICENSE +0 -0
  7. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/.claude-plugin/plugin.json +0 -0
  8. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/__init__.py +0 -0
  9. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/__main__.py +0 -0
  10. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/app.py +0 -0
  11. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/ast_grep.py +0 -0
  12. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/classifiers/__init__.py +0 -0
  13. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/classifiers/conductor.py +0 -0
  14. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/classifiers/droid.py +0 -0
  15. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/classifiers/native.py +0 -0
  16. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/cli.py +0 -0
  17. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/command.py +0 -0
  18. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/conditions.py +0 -0
  19. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/context.py +0 -0
  20. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/decisions.py +0 -0
  21. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/dispatch.py +0 -0
  22. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/events.py +0 -0
  23. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/file.py +0 -0
  24. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/llm/__init__.py +0 -0
  25. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/loader.py +0 -0
  26. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/log.py +0 -0
  27. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/__init__.py +0 -0
  28. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/__init__.py +0 -0
  29. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/capt-hook.toml +0 -0
  30. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/commands.py +0 -0
  31. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/docs.py +0 -0
  32. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/plans.py +0 -0
  33. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/prompts.py +0 -0
  34. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/review.py +0 -0
  35. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/tasks.py +0 -0
  36. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/go/__init__.py +0 -0
  37. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/go/capt-hook.toml +0 -0
  38. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/go/testing.py +0 -0
  39. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/go/toolchain.py +0 -0
  40. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/manager.py +0 -0
  41. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/python/__init__.py +0 -0
  42. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/python/capt-hook.toml +0 -0
  43. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/python/style.py +0 -0
  44. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/python/testing.py +0 -0
  45. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/python/toolchain.py +0 -0
  46. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/steering/__init__.py +0 -0
  47. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/steering/capt-hook.toml +0 -0
  48. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/steering/lib.py +0 -0
  49. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/steering/steering.py +0 -0
  50. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/__init__.py +0 -0
  51. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/commands.py +0 -0
  52. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/lint.py +0 -0
  53. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/llm.py +0 -0
  54. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/nudge.py +0 -0
  55. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/rewrite.py +0 -0
  56. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/workflow.py +0 -0
  57. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/prompt.py +0 -0
  58. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/py.typed +0 -0
  59. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/__init__.py +0 -0
  60. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/dashboard.py +0 -0
  61. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/fix.py +0 -0
  62. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/formats.py +0 -0
  63. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/judge.py +0 -0
  64. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/pipeline.py +0 -0
  65. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/scan.py +0 -0
  66. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/settings.py +0 -0
  67. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/store.py +0 -0
  68. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/sync.py +0 -0
  69. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/session.py +0 -0
  70. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/settings.py +0 -0
  71. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/signals/__init__.py +0 -0
  72. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/signals/nlp.py +0 -0
  73. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/authoring-hooks/SKILL.md +0 -0
  74. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/authoring-hooks/references/capt-hook-api.md +0 -0
  75. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/authoring-hooks/references/pattern-catalog.md +0 -0
  76. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/authoring-hooks/references/pitfalls.md +0 -0
  77. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/authoring-hooks/references/testing-hooks.md +0 -0
  78. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/bootstrapping-hooks/SKILL.md +0 -0
  79. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/scanning-sessions/SKILL.md +0 -0
  80. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/scanning-sessions/references/pr-workflow.md +0 -0
  81. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/scanning-sessions/references/review-cli.md +0 -0
  82. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/translating-styleguides/SKILL.md +0 -0
  83. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/translating-styleguides/references/llm-rule-patterns.md +0 -0
  84. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/translating-styleguides/references/matcher-reference.md +0 -0
  85. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/translating-styleguides/references/tier-rubric.md +0 -0
  86. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/state.py +0 -0
  87. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/style/__init__.py +0 -0
  88. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/style/ast_grep.py +0 -0
  89. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/style/matchers.py +0 -0
  90. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/style/scope.py +0 -0
  91. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/style/types.py +0 -0
  92. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/tasks.py +0 -0
  93. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/templates/example_hook.py.tmpl +0 -0
  94. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/testing/__init__.py +0 -0
  95. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/testing/helpers.py +0 -0
  96. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/testing/session_cache.py +0 -0
  97. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/testing/types.py +0 -0
  98. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/tests/__init__.py +0 -0
  99. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/tests/helpers.py +0 -0
  100. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/types.py +0 -0
  101. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/util/__init__.py +0 -0
  102. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/util/http.py +0 -0
  103. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/util/model_cache.py +0 -0
  104. {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: capt-hook
3
- Version: 3.18.0
3
+ Version: 3.19.0
4
4
  Summary: Declarative hook framework for Claude Code
5
5
  Keywords: claude,claude-code,hooks,llm,agents,guardrails,cli
6
6
  Author: Yasyf Mohamedali
@@ -53,7 +53,7 @@ Description-Content-Type: text/markdown
53
53
  [![PyPI](https://img.shields.io/pypi/v/capt-hook.svg)](https://pypi.org/project/capt-hook/)
54
54
  [![Python](https://img.shields.io/pypi/pyversions/capt-hook.svg)](https://pypi.org/project/capt-hook/)
55
55
  [![Docs](https://github.com/yasyf/captain-hook/actions/workflows/docs.yml/badge.svg)](https://yasyf.github.io/captain-hook/)
56
- [![License: PolyForm Noncommercial](https://img.shields.io/badge/License-PolyForm_Noncommercial_1.0.0-blue.svg)](https://github.com/yasyf/captain-hook/blob/main/LICENSE)
56
+ [![License: PolyForm-Noncommercial-1.0.0](https://img.shields.io/badge/License-PolyForm--Noncommercial--1.0.0-blue.svg)](https://github.com/yasyf/captain-hook/blob/main/LICENSE)
57
57
 
58
58
  Guardrails for Claude Code, written as typed, testable data — and learned from the corrections you give Claude.
59
59
 
@@ -5,7 +5,7 @@
5
5
  [![PyPI](https://img.shields.io/pypi/v/capt-hook.svg)](https://pypi.org/project/capt-hook/)
6
6
  [![Python](https://img.shields.io/pypi/pyversions/capt-hook.svg)](https://pypi.org/project/capt-hook/)
7
7
  [![Docs](https://github.com/yasyf/captain-hook/actions/workflows/docs.yml/badge.svg)](https://yasyf.github.io/captain-hook/)
8
- [![License: PolyForm Noncommercial](https://img.shields.io/badge/License-PolyForm_Noncommercial_1.0.0-blue.svg)](https://github.com/yasyf/captain-hook/blob/main/LICENSE)
8
+ [![License: PolyForm-Noncommercial-1.0.0](https://img.shields.io/badge/License-PolyForm--Noncommercial--1.0.0-blue.svg)](https://github.com/yasyf/captain-hook/blob/main/LICENSE)
9
9
 
10
10
  Guardrails for Claude Code, written as typed, testable data — and learned from the corrections you give Claude.
11
11
 
@@ -38,7 +38,9 @@ def current_repo(root: Path) -> RepoKey:
38
38
  from captain_hook.review.repo import repo_key
39
39
 
40
40
  if (repo := repo_key(root)) is None:
41
- raise click.ClickException(f"{root} is not inside a git repository")
41
+ raise click.ClickException(
42
+ f"{root} is not a git repo with an 'origin' remote (the session reviewer opens PRs against origin)"
43
+ )
42
44
  return repo
43
45
 
44
46
 
@@ -1,4 +1,4 @@
1
- """Worktree-safe repository identity: a normalized git origin shared across a repo's worktrees."""
1
+ """Worktree-safe repository identity: the normalized git ``origin`` remote, shared across a repo's worktrees."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
@@ -30,11 +30,9 @@ def normalize_origin(url: str) -> str:
30
30
  def resolve_repo_key(cwd: str) -> RepoKey | None:
31
31
  if origin := git_output(cwd, "remote", "get-url", "origin"):
32
32
  return RepoKey(normalize_origin(origin))
33
- if common := git_output(cwd, "rev-parse", "--git-common-dir"):
34
- return RepoKey(str((p if (p := Path(common)).is_absolute() else Path(cwd) / p).resolve()))
35
33
  return None
36
34
 
37
35
 
38
36
  def repo_key(start: Path | None = None) -> RepoKey | None:
39
- """Return the worktree-safe key for the repo at ``start`` (defaults to cwd), or ``None`` outside a repo."""
37
+ """Worktree-safe key for the repo at ``start`` (cwd default); ``None`` without a git repo or ``origin`` remote."""
40
38
  return resolve_repo_key(str((start or Path.cwd()).resolve()))
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "capt-hook"
3
- version = "3.18.0"
3
+ version = "3.19.0"
4
4
  description = "Declarative hook framework for Claude Code"
5
5
  readme = "README.md"
6
6
  license = "PolyForm-Noncommercial-1.0.0"
File without changes