diff --git a/extensions/assess/README.md b/extensions/assess/README.md index e103e8bf9..7aae736ce 100644 --- a/extensions/assess/README.md +++ b/extensions/assess/README.md @@ -85,11 +85,9 @@ specify extension enable assess # → on "go", hand the decision.md handoff summary to /speckit.specify ``` -## Hooks +## Handoff -Registers one **optional** hook: - -- `before_specify` → prompts `speckit.assess.intake` — a nudge to assess an idea before committing it to a specification. It never runs automatically; the user chooses. +`assess` is a **standalone pipeline you enter deliberately** — it registers no lifecycle hooks and never inserts itself into `/speckit.specify`. The only coupling runs forward and by choice: a `go` verdict from `/speckit.assess.decide` hands its `decision.md` summary to `/speckit.specify`. Discovery and specification stay separate processes. ## Guardrails diff --git a/extensions/assess/extension.yml b/extensions/assess/extension.yml index 012b96fb4..897d52998 100644 --- a/extensions/assess/extension.yml +++ b/extensions/assess/extension.yml @@ -32,13 +32,6 @@ provides: file: commands/speckit.assess.decide.md description: "Apply a go / needs-clarification / kill gate and hand survivors off to /speckit.specify" -hooks: - before_specify: - command: speckit.assess.intake - optional: true - prompt: "Assess this idea before specifying?" - description: "Nudge to assess an idea before committing it to a specification" - tags: - "assessment" - "discovery" diff --git a/tests/extensions/assess/test_assess_extension.py b/tests/extensions/assess/test_assess_extension.py index 554a97113..138652b81 100644 --- a/tests/extensions/assess/test_assess_extension.py +++ b/tests/extensions/assess/test_assess_extension.py @@ -48,13 +48,15 @@ class TestExtensionLayout: commands = {c["name"] for c in manifest["provides"]["commands"]} assert commands == EXPECTED_COMMANDS - def test_before_specify_hook_is_optional(self): + def test_declares_no_hooks(self): + """assess is a standalone pipeline: it must not register lifecycle + hooks (e.g. before_specify). Discovery and specification stay + separate processes; the only coupling is the forward decide -> + /speckit.specify handoff described in the commands.""" manifest = yaml.safe_load( (EXT_DIR / "extension.yml").read_text(encoding="utf-8") ) - hook = manifest["hooks"]["before_specify"] - assert hook["optional"] is True - assert hook["command"] == "speckit.assess.intake" + assert "hooks" not in manifest or not manifest["hooks"] def test_readme_exists(self): readme = EXT_DIR / "README.md"