Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/reference/extensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ Spec Kit stores project-level extension registration and hook configuration in:
```text
.specify/extensions.yml
```

The file contains installed extensions, global settings, and hooks that are surfaced before or after Spec Kit commands.

```yaml
Expand Down Expand Up @@ -225,6 +226,7 @@ Each hook entry supports the following fields:
| `prompt` | Message shown when asking whether to run an optional hook. |
| `description` | Human-readable explanation of what the hook does. |
| `condition` | Optional expression evaluated by `HookExecutor` (using `config.<path>` or `env.<VAR>` with `is set`, `==`, or `!=`). Current command templates do not evaluate conditions and skip hooks with a non-empty condition. |

Hook event names identify when a hook is invoked. They generally use `before_<command>` or `after_<command>`, such as `before_implement`, `after_implement`, `before_tasks`, and `after_tasks`.

`HookExecutor.get_hooks_for_event()` returns hooks ordered by `priority`, with lower values first. However, current command templates read hook lists directly and surface them in their configured YAML order rather than using priority ordering.
Expand Down
2 changes: 1 addition & 1 deletion src/specify_cli/commands/bundle/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -826,7 +826,7 @@ def _require_https(label: str, url: str) -> None:
raise BundlerError(
f"Refusing to download {label} over non-HTTPS URL: {url}"
)
if not parsed.hostname:
if not hostname:
raise BundlerError(f"Refusing to download {label} from URL with no host: {url}")


Expand Down
Loading