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.
- {capt_hook-3.18.0 → capt_hook-3.19.0}/PKG-INFO +2 -2
- {capt_hook-3.18.0 → capt_hook-3.19.0}/README.md +1 -1
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/cli.py +3 -1
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/repo.py +2 -4
- {capt_hook-3.18.0 → capt_hook-3.19.0}/pyproject.toml +1 -1
- {capt_hook-3.18.0 → capt_hook-3.19.0}/LICENSE +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/.claude-plugin/plugin.json +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/__main__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/app.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/ast_grep.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/classifiers/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/classifiers/conductor.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/classifiers/droid.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/classifiers/native.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/cli.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/command.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/conditions.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/context.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/decisions.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/dispatch.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/events.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/file.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/llm/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/loader.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/log.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/capt-hook.toml +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/commands.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/docs.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/plans.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/prompts.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/review.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/general/tasks.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/go/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/go/capt-hook.toml +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/go/testing.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/go/toolchain.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/manager.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/python/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/python/capt-hook.toml +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/python/style.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/python/testing.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/python/toolchain.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/steering/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/steering/capt-hook.toml +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/steering/lib.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/packs/steering/steering.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/commands.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/lint.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/llm.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/nudge.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/rewrite.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/primitives/workflow.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/prompt.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/py.typed +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/dashboard.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/fix.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/formats.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/judge.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/pipeline.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/scan.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/settings.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/store.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/review/sync.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/session.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/settings.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/signals/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/signals/nlp.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/authoring-hooks/SKILL.md +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/authoring-hooks/references/capt-hook-api.md +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/authoring-hooks/references/pattern-catalog.md +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/authoring-hooks/references/pitfalls.md +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/authoring-hooks/references/testing-hooks.md +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/bootstrapping-hooks/SKILL.md +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/scanning-sessions/SKILL.md +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/scanning-sessions/references/pr-workflow.md +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/scanning-sessions/references/review-cli.md +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/translating-styleguides/SKILL.md +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/translating-styleguides/references/llm-rule-patterns.md +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/translating-styleguides/references/matcher-reference.md +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/translating-styleguides/references/tier-rubric.md +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/state.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/style/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/style/ast_grep.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/style/matchers.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/style/scope.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/style/types.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/tasks.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/templates/example_hook.py.tmpl +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/testing/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/testing/helpers.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/testing/session_cache.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/testing/types.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/tests/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/tests/helpers.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/types.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/util/__init__.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/util/http.py +0 -0
- {capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/util/model_cache.py +0 -0
- {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.
|
|
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
|
[](https://pypi.org/project/capt-hook/)
|
|
54
54
|
[](https://pypi.org/project/capt-hook/)
|
|
55
55
|
[](https://yasyf.github.io/captain-hook/)
|
|
56
|
-
[](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
|
[](https://pypi.org/project/capt-hook/)
|
|
6
6
|
[](https://pypi.org/project/capt-hook/)
|
|
7
7
|
[](https://yasyf.github.io/captain-hook/)
|
|
8
|
-
[](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(
|
|
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:
|
|
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
|
-
"""
|
|
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()))
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
{capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/authoring-hooks/references/pitfalls.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{capt_hook-3.18.0 → capt_hook-3.19.0}/captain_hook/skills/scanning-sessions/references/review-cli.md
RENAMED
|
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
|
|
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
|