mirror of
https://github.com/github/spec-kit.git
synced 2026-03-17 19:03:08 +00:00
* fix: wire after_tasks and after_implement hook events into command templates (#1701) The HookExecutor backend in extensions.py was fully implemented but check_hooks_for_event() was never called by anything — the core command templates had no instructions to check .specify/extensions.yml. Add a final step to templates/commands/tasks.md (step 6, after_tasks) and templates/commands/implement.md (step 10, after_implement) that instructs the AI agent to: - Read .specify/extensions.yml if it exists - Filter hooks.{event} to enabled: true entries - Evaluate any condition fields and skip non-matching hooks - Output the RFC-specified hook message format, including EXECUTE_COMMAND: markers for mandatory (optional: false) hooks Bumps version to 0.1.7. * fix: clarify hook condition handling and add YAML error guidance in templates - Replace ambiguous "evaluate any condition value" instruction with explicit guidance to skip hooks with non-empty conditions, deferring evaluation to HookExecutor - Add instruction to skip hook checking silently if extensions.yml cannot be parsed or is invalid * Fix/extension hooks not triggered (#1) * feat(templates): implement before-hooks check as pre-execution phase * test(hooks): create scenario for LLMs/Agents on hooks --------- Co-authored-by: Dhilip <s.dhilipkumar@gmail.com>
1.8 KiB
1.8 KiB
Testing Extension Hooks
This directory contains a mock project to verify that LLM agents correctly identify and execute hook commands defined in .specify/extensions.yml.
Test 1: Testing before_tasks and after_tasks
- Open a chat with an LLM (like GitHub Copilot) in this project.
- Ask it to generate tasks for the current directory:
"Please follow
/speckit.tasksfor the./tests/hooksdirectory." - Expected Behavior:
- Before doing any generation, the LLM should notice the
AUTOMATIC Pre-Hookin.specify/extensions.ymlunderbefore_tasks. - It should state it is executing
EXECUTE_COMMAND: pre_tasks_test. - It should then proceed to read the
.mddocs and produce atasks.md. - After generation, it should output the optional
after_taskshook (post_tasks_test) block, asking if you want to run it.
- Before doing any generation, the LLM should notice the
Test 2: Testing before_implement and after_implement
(Requires tasks.md from Test 1 to exist)
- In the same (or new) chat, ask the LLM to implement the tasks:
"Please follow
/speckit.implementfor the./tests/hooksdirectory." - Expected Behavior:
- The LLM should first check for
before_implementhooks. - It should state it is executing
EXECUTE_COMMAND: pre_implement_testBEFORE doing any actual task execution. - It should evaluate the checklists and execute the code writing tasks.
- Upon completion, it should output the optional
after_implementhook (post_implement_test) block.
- The LLM should first check for
How it works
The templates for these commands in templates/commands/tasks.md and templates/commands/implement.md contains strict ordered lists. The new before_* hooks are explicitly formulated in a Pre-Execution Checks section prior to the outline to ensure they're evaluated first without breaking template step numbers.