Skip to content

Commit a725006

Browse files
committed
merge: integrate upstream v0.1.13 and bump version to 0.0.89
Merged upstream changes from github/spec-kit: - Added extension hook support (before/after tasks and implement) - Updated Antigravity link and added initialization examples - Made C ignore patterns consistent with C++ Preserved fork-specific features: - Mode detection (Build/Spec modes) - Dual execution loop with SYNC/ASYNC classification - TDD workflow integration - Risk-based test generation - Issue tracker integration Version bump: 0.0.88 → 0.0.89
2 parents 37d71a7 + 13dec1d commit a725006

File tree

10 files changed

+314
-86
lines changed

10 files changed

+314
-86
lines changed

CHANGELOG.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,55 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
## [Unreleased]
1111

12+
## [0.0.89] - 2026-03-04
13+
14+
### Merged from Upstream (spec-kit 0.1.13)
15+
16+
This release merges upstream changes from github/spec-kit while preserving all custom features.
17+
18+
#### New Features from Upstream
19+
20+
- **Extension Hook Support**: Added before/after hooks for tasks and implement commands
21+
- `before_tasks` hook: Execute extensions before task generation
22+
- `after_tasks` hook: Execute extensions after task generation
23+
- `before_implement` hook: Execute extensions before implementation
24+
- `after_implement` hook: Execute extensions after implementation
25+
- Supports both optional and mandatory hooks
26+
- Condition evaluation deferred to HookExecutor implementation
27+
28+
#### Template Improvements from Upstream
29+
30+
- **implement.md**: Added Pre-Execution Checks section for extension hooks
31+
- **tasks.md**: Added Pre-Execution Checks section for extension hooks
32+
- **C ignore patterns**: Made consistent with C++ patterns
33+
34+
#### Documentation Updates from Upstream
35+
36+
- **README.md**: Updated Antigravity link to correct URL (antigravity.google)
37+
- **README.md**: Added Antigravity initialization example
38+
- **README.md**: Added generic agent initialization example
39+
40+
#### Conflict Resolution
41+
42+
Integrated upstream changes while preserving fork-specific features:
43+
44+
- **Mode Detection**: Retained Build Mode and Spec Mode workflow detection
45+
- **Dual Execution Loop**: Preserved SYNC/ASYNC task classification system
46+
- **TDD Support**: Maintained TDD mode option integration
47+
- **Risk-Based Testing**: Kept risk test generation capabilities
48+
- **Issue Tracker Integration**: Retained ASYNC task labeling and tracking
49+
50+
### Added
51+
52+
- **Hook Test Infrastructure**: New test files for validating extension hooks
53+
- `tests/hooks/.specify/extensions.yml`: Test extension configuration
54+
- `tests/hooks/TESTING.md`: Hook testing documentation
55+
- `tests/hooks/plan.md`, `spec.md`, `tasks.md`: Test scenario files
56+
57+
### Changed
58+
59+
- **Agent References**: Kept `spec.*` agent references (not changed to `speckit.*`)
60+
1261
## [0.0.88] - 2026-03-04
1362

1463
### Fixed

README.md

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,8 @@ For detailed step-by-step instructions, see our [comprehensive guide](./spec-dri
524524
| [Roo Code](https://roocode.com/) || |
525525
| [SHAI (OVHcloud)](https://github.com/ovh/shai) || |
526526
| [Windsurf](https://windsurf.com/) || |
527-
| [Antigravity (agy)](https://agy.ai/) || |
527+
| [Antigravity (agy)](https://antigravity.google/) || |
528+
| Generic || Bring your own agent — use `--ai generic --ai-commands-dir <path>` for unsupported agents |
528529

529530
## 📦 Skills Package Manager
530531

@@ -648,32 +649,8 @@ Skills configuration is stored in `~/.config/specify/config.json`:
648649

649650
### Integration Points
650651

651-
- **`specify init`** - Auto-installs team required skills during project setup
652-
- **`/spec.specify`** - Auto-discovers and injects relevant skills per feature
653-
- **`/spec.plan`** - References activated skills in planning
654-
- **`/spec.implement`** - Agent applies skill guidance during implementation
655-
- **`team-ai-directives/skills.json`** - Central skill registry alongside MCP configuration
656-
657-
### Benefits
658-
659-
1. **Consistency** - All team members follow same practices and patterns
660-
2. **Quality** - Skills embed best practices and quality standards
661-
3. **Speed** - Auto-discovery eliminates manual guidance searching
662-
4. **Learning** - Skills capture team knowledge for reuse and growth
663-
5. **Governance** - Team policies enforce standards while allowing overrides
664-
665-
### Learning More
666-
667-
- **[Skills Registry](https://skills.sh)** - Discover public skills from the community
668-
- **[Agent Skills Format](https://agentskills.io/)** - Standard format for creating skills
669-
- **[Roadmap Details](./roadmap.md#-skills-package-manager--100-complete---completed---extends-factor-xi-directives-as-code)** - Technical implementation details
670-
671-
---
672-
673652
## 🔧 Specify CLI Reference
674653

675-
The `specify` command supports the following options:
676-
677654
### Commands
678655

679656
| Command | Description |
@@ -799,6 +776,13 @@ specify init my-project --ai shai
799776
# Initialize with IBM Bob support
800777
specify init my-project --ai bob
801778
779+
780+
# Initialize with Antigravity support
781+
specify init my-project --ai agy
782+
783+
# Initialize with an unsupported agent (generic / bring your own agent)
784+
specify init my-project --ai generic --ai-commands-dir .myagent/commands/
785+
802786
# Initialize with PowerShell scripts (Windows/cross-platform)
803787
specify init my-project --ai copilot --script ps
804788

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "agentic-sdlc-specify-cli"
3-
version = "0.0.88"
3+
version = "0.0.89"
44
description = "Specify CLI, part of GitHub Spec Kit. A tool to bootstrap your projects for Spec-Driven Development (SDD)."
55
requires-python = ">=3.11"
66
dependencies = [

templates/commands/implement.md

Lines changed: 123 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,40 @@ $ARGUMENTS
4141

4242
You **MUST** consider the user input before proceeding (if not empty).
4343

44+
## Pre-Execution Checks
45+
46+
**Check for extension hooks (before implementation)**:
47+
- Check if `.specify/extensions.yml` exists in the project root.
48+
- If it exists, read it and look for entries under the `hooks.before_implement` key
49+
- If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally
50+
- Filter to only hooks where `enabled: true`
51+
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
52+
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
53+
- If the hook defines a non-empty `condition`, skip the hook and leave condition evaluation to the HookExecutor implementation
54+
- For each executable hook, output the following based on its `optional` flag:
55+
- **Optional hook** (`optional: true`):
56+
```
57+
## Extension Hooks
58+
59+
**Optional Pre-Hook**: {extension}
60+
Command: `/{command}`
61+
Description: {description}
62+
63+
Prompt: {prompt}
64+
To execute: `/{command}`
65+
```
66+
- **Mandatory hook** (`optional: false`):
67+
```
68+
## Extension Hooks
69+
70+
**Automatic Pre-Hook**: {extension}
71+
Executing: `/{command}`
72+
EXECUTE_COMMAND: {command}
73+
74+
Wait for the result of the hook command before proceeding to the Outline.
75+
```
76+
- If no hooks are registered or `.specify/extensions.yml` does not exist, skip silently
77+
4478
## Outline (Mode-Aware)
4579
4680
### Build Mode Execution Flow
@@ -127,8 +161,8 @@ You **MUST** consider the user input before proceeding (if not empty).
127161
- Check if terraform files (*.tf) exist → create/verify .terraformignore
128162
- Check if .helmignore needed (helm charts present) → create/verify .helmignore
129163
130-
**If ignore file already exists**: Verify it contains essential patterns, append missing critical patterns only
131-
**If ignore file missing**: Create with full pattern set for detected technology
164+
**If ignore file already exists**: Verify it contains essential patterns, append missing critical patterns only
165+
**If ignore file missing**: Create with full pattern set for detected technology
132166
133167
**Common Patterns by Technology** (from plan.md tech stack if available, otherwise detect from project files):
134168
- **Node.js/JavaScript/TypeScript**: `node_modules/`, `dist/`, `build/`, `*.log`, `.env*`
@@ -141,7 +175,7 @@ You **MUST** consider the user input before proceeding (if not empty).
141175
- **Rust**: `target/`, `debug/`, `release/`, `*.rs.bk`, `*.rlib`, `*.prof*`, `.idea/`, `*.log`, `.env*`
142176
- **Kotlin**: `build/`, `out/`, `.gradle/`, `.idea/`, `*.class`, `*.jar`, `*.iml`, `*.log`, `.env*`
143177
- **C++**: `build/`, `bin/`, `obj/`, `out/`, `*.o`, `*.so`, `*.a`, `*.exe`, `*.dll`, `.idea/`, `*.log`, `.env*`
144-
- **C**: `build/`, `bin/`, `obj/`, `out/`, `*.o`, `*.a`, `*.so`, `*.exe`, `autom4te.cache/`, `config.status`, `config.log`, `.idea/`, `*.log`, `.env*`
178+
- **C**: `build/`, `bin/`, `obj/`, `out/`, `*.o`, `*.a`, `*.so`, `*.exe`, `*.dll`, `autom4te.cache/`, `config.status`, `config.log`, `.idea/`, `*.log`, `.env*`
145179
- **Swift**: `.build/`, `DerivedData/`, `*.swiftpm/`, `Packages/`
146180
- **R**: `.Rproj.user/`, `.Rhistory`, `.RData`, `.Ruserdata`, `*.Rproj`, `packrat/`, `renv/`
147181
- **Universal**: `.DS_Store`, `Thumbs.db`, `*.tmp`, `*.swp`, `.vscode/`, `.idea/`
@@ -153,63 +187,63 @@ You **MUST** consider the user input before proceeding (if not empty).
153187
- **Terraform**: `.terraform/`, `*.tfstate*`, `*.tfvars`, `.terraform.lock.hcl`
154188
- **Kubernetes/k8s**: `*.secret.yaml`, `secrets/`, `.kube/`, `kubeconfig*`, `*.key`, `*.crt`
155189
156-
1. Parse tasks.md structure and extract (mode-aware):
157-
- **Task phases**: Setup, Tests, Core, Integration, Polish
158-
- **Task dependencies**: Sequential vs parallel execution rules
159-
- **Task details**: ID, description, file paths, parallel markers [P]
160-
- **Execution flow**: Order and dependency requirements
161-
- **Load tasks_meta.json**: Read execution modes, delegation status, and review requirements
162-
- Record assigned agents and job IDs for ASYNC tasks
163-
164-
2. Execute implementation following execution approach (mode-aware):
165-
166-
**Build Mode Execution:**
167-
- **Simplified flow**: Focus on core tasks for primary functionality
168-
- **Basic coordination**: Run essential tasks sequentially, skip complex parallel execution
169-
- **Lightweight validation**: Basic checks for core functionality
170-
- **Fast iteration**: Prioritize working code over comprehensive testing
171-
172-
**Spec Mode Execution (Dual Execution Loop):**
173-
- **Phase-by-phase execution**: Complete each phase before moving to the next
174-
- **Respect dependencies**: Run sequential tasks in order, parallel tasks [P] can run together
175-
- **Follow TDD approach** (if enabled): Check current mode opinion settings - if TDD enabled, execute test tasks before implementation tasks
176-
- **File-based coordination**: Tasks affecting the same files must run sequentially
177-
- **Dual execution mode handling**:
178-
- **SYNC tasks**: Execute immediately with human oversight, require micro-review via `scripts/bash/tasks-meta-utils.sh review-micro "$FEATURE_DIR/tasks_meta.json" "$task_id"`
179-
- **ASYNC tasks**: Generate delegation prompts via `scripts/bash/tasks-meta-utils.sh dispatch_async_task "$task_id" "$agent_type" "$description" ...`, send to LLM agents, monitor completion, apply macro-review after completion
180-
- **Quality gates**: Apply differentiated validation based on execution mode via `scripts/bash/tasks-meta-utils.sh quality-gate "$FEATURE_DIR/tasks_meta.json" "$task_id"`
181-
- **Validation checkpoints**: Verify each phase completion before proceeding
182-
183-
5. Implementation execution rules (mode-aware):
184-
185-
**Build Mode Rules:**
186-
- **Core first**: Focus on primary user journey implementation
187-
- **Basic setup**: Essential project structure and dependencies only
188-
- **Working functionality**: Prioritize demonstrable features over comprehensive coverage
189-
- **Iterative approach**: Get something working, then refine
190-
191-
**Spec Mode Rules:**
192-
- **Setup first**: Initialize project structure, dependencies, configuration
193-
- **Tests before code** (if TDD enabled): If TDD is enabled in current mode settings and you need to write tests for contracts, entities, and integration scenarios
194-
- **Core development**: Implement models, services, CLI commands, endpoints
195-
- **Integration work**: Database connections, middleware, logging, external services
196-
- **Polish and validation**: Unit tests, performance optimization, documentation
197-
198-
6. Progress tracking and error handling (mode-aware):
199-
- Report progress after each completed task
200-
- **Build Mode**: Continue on minor errors, focus on core functionality
201-
- **Spec Mode**: Halt execution if any non-parallel task fails
202-
- For parallel tasks [P], continue with successful tasks, report failed ones
203-
- Provide clear error messages with context for debugging
204-
- Suggest next steps if implementation cannot proceed
205-
- **IMPORTANT** For completed tasks, make sure to mark the task off as [X] in the tasks file.
206-
207-
7. Issue Tracker Integration (Spec Mode only):
208-
- If ASYNC tasks were dispatched, update issue tracker with progress
209-
- Apply completion labels when ASYNC tasks finish
210-
- Provide traceability links between tasks and issue tracker items
211-
212-
8. Completion validation (mode-aware):
190+
1. Parse tasks.md structure and extract (mode-aware):
191+
- **Task phases**: Setup, Tests, Core, Integration, Polish
192+
- **Task dependencies**: Sequential vs parallel execution rules
193+
- **Task details**: ID, description, file paths, parallel markers [P]
194+
- **Execution flow**: Order and dependency requirements
195+
- **Load tasks_meta.json**: Read execution modes, delegation status, and review requirements
196+
- Record assigned agents and job IDs for ASYNC tasks
197+
198+
2. Execute implementation following execution approach (mode-aware):
199+
200+
**Build Mode Execution:**
201+
- **Simplified flow**: Focus on core tasks for primary functionality
202+
- **Basic coordination**: Run essential tasks sequentially, skip complex parallel execution
203+
- **Lightweight validation**: Basic checks for core functionality
204+
- **Fast iteration**: Prioritize working code over comprehensive testing
205+
206+
**Spec Mode Execution (Dual Execution Loop):**
207+
- **Phase-by-phase execution**: Complete each phase before moving to the next
208+
- **Respect dependencies**: Run sequential tasks in order, parallel tasks [P] can run together
209+
- **Follow TDD approach** (if enabled): Check current mode opinion settings - if TDD enabled, execute test tasks before implementation tasks
210+
- **File-based coordination**: Tasks affecting the same files must run sequentially
211+
- **Dual execution mode handling**:
212+
- **SYNC tasks**: Execute immediately with human oversight, require micro-review via `scripts/bash/tasks-meta-utils.sh review-micro "$FEATURE_DIR/tasks_meta.json" "$task_id"`
213+
- **ASYNC tasks**: Generate delegation prompts via `scripts/bash/tasks-meta-utils.sh dispatch_async_task "$task_id" "$agent_type" "$description" ...`, send to LLM agents, monitor completion, apply macro-review after completion
214+
- **Quality gates**: Apply differentiated validation based on execution mode via `scripts/bash/tasks-meta-utils.sh quality-gate "$FEATURE_DIR/tasks_meta.json" "$task_id"`
215+
- **Validation checkpoints**: Verify each phase completion before proceeding
216+
217+
5. Implementation execution rules (mode-aware):
218+
219+
**Build Mode Rules:**
220+
- **Core first**: Focus on primary user journey implementation
221+
- **Basic setup**: Essential project structure and dependencies only
222+
- **Working functionality**: Prioritize demonstrable features over comprehensive coverage
223+
- **Iterative approach**: Get something working, then refine
224+
225+
**Spec Mode Rules:**
226+
- **Setup first**: Initialize project structure, dependencies, configuration
227+
- **Tests before code** (if TDD enabled): If TDD is enabled in current mode settings and you need to write tests for contracts, entities, and integration scenarios
228+
- **Core development**: Implement models, services, CLI commands, endpoints
229+
- **Integration work**: Database connections, middleware, logging, external services
230+
- **Polish and validation**: Unit tests, performance optimization, documentation
231+
232+
6. Progress tracking and error handling (mode-aware):
233+
- Report progress after each completed task
234+
- **Build Mode**: Continue on minor errors, focus on core functionality
235+
- **Spec Mode**: Halt execution if any non-parallel task fails
236+
- For parallel tasks [P], continue with successful tasks, report failed ones
237+
- Provide clear error messages with context for debugging
238+
- Suggest next steps if implementation cannot proceed
239+
- **IMPORTANT** For completed tasks, make sure to mark the task off as [X] in the tasks file.
240+
241+
7. Issue Tracker Integration (Spec Mode only):
242+
- If ASYNC tasks were dispatched, update issue tracker with progress
243+
- Apply completion labels when ASYNC tasks finish
244+
- Provide traceability links between tasks and issue tracker items
245+
246+
8. Completion validation (mode-aware):
213247
214248
**Build Mode Validation:**
215249
- Verify core user journey works end-to-end
@@ -224,6 +258,35 @@ You **MUST** consider the user input before proceeding (if not empty).
224258
- Confirm the implementation follows the technical plan
225259
- Report final status with comprehensive summary of completed work
226260
261+
9. **Check for extension hooks**: After completion validation, check if `.specify/extensions.yml` exists in the project root.
262+
- If it exists, read it and look for entries under the `hooks.after_implement` key
263+
- If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally
264+
- Filter to only hooks where `enabled: true`
265+
- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
266+
- If the hook has no `condition` field, or it is null/empty, treat the hook as executable
267+
- If the hook defines a non-empty `condition`, skip the hook and leave condition evaluation to the HookExecutor implementation
268+
- For each executable hook, output the following based on its `optional` flag:
269+
- **Optional hook** (`optional: true`):
270+
```
271+
## Extension Hooks
272+
273+
**Optional Hook**: {extension}
274+
Command: `/{command}`
275+
Description: {description}
276+
277+
Prompt: {prompt}
278+
To execute: `/{command}`
279+
```
280+
- **Mandatory hook** (`optional: false`):
281+
```
282+
## Extension Hooks
283+
284+
**Automatic Hook**: {extension}
285+
Executing: `/{command}`
286+
EXECUTE_COMMAND: {command}
287+
```
288+
- If no hooks are registered or `.specify/extensions.yml` does not exist, skip silently
289+
227290
Note: This command assumes a complete task breakdown exists in tasks.md. If tasks are incomplete or missing, suggest running `/spec.tasks` first to regenerate the task list.
228291
229292
**Mode-Specific Notes:**

0 commit comments

Comments
 (0)