|
2 | 2 |
|
3 | 3 | All notable changes to the Specify CLI and templates are documented here. |
4 | 4 |
|
| 5 | +## [0.3.48] - 2026-04-13 |
| 6 | + |
| 7 | +### Added |
| 8 | + |
| 9 | +- **TDD extension hooks**: Added `after_plan` hook for `tdd.plan` command (optional) |
| 10 | +- **TDD extension hooks**: Added `after_implement` hook for `tdd.validate` command (optional) |
| 11 | + |
| 12 | +### Changed |
| 13 | + |
| 14 | +- **TDD extension hooks**: `tdd.implement` now triggers on `before_implement` instead of `after_implement` - ensures TDD cycle runs BEFORE implementation (RED→GREEN→REFACTOR) |
| 15 | +- **Hook re-registration fix**: Fixed bug where hooks weren't updated when extension.yml was modified |
| 16 | + - Now compares both version AND manifest hash to trigger re-registration |
| 17 | + - This ensures hooks get updated when extension.yml changes, even if version wasn't bumped |
| 18 | + |
| 19 | +## [0.3.47] - 2026-04-13 |
| 20 | + |
| 21 | +### Fixed |
| 22 | + |
| 23 | +- **Extension script path bug**: Fixed session execution failure caused by incorrect path rewriting |
| 24 | + - Extension command files used relative paths like `scripts/bash/setup-architect.sh` |
| 25 | + - The `rewrite_project_relative_paths()` function rewrites `scripts/` to `.specify/scripts/` |
| 26 | + - But extension scripts are actually at `.specify/extensions/<ext>/scripts/` |
| 27 | + - Changed 22 extension command files across 4 extensions to use fully-qualified paths |
| 28 | + - Affected extensions: architect (5 files), product (7 files), levelup (7 files), tdd (3 files) |
| 29 | + - Fix uses `.specify/extensions/<ext>/scripts/...` paths which bypass the rewriting bug |
| 30 | + |
| 31 | +## [0.3.46] - 2026-04-13 |
| 32 | + |
| 33 | +### Changed |
| 34 | + |
| 35 | +- **Removed issue tracker integration**: Cleaned up `@issue-tracker` references and traceability features |
| 36 | + - Removed Smart Trace Validation section from `/spec.analyze` command |
| 37 | + - Removed issue tracker references from docs/quickstart.md examples |
| 38 | + - Removed issue tracker integration from levelup trace scripts and templates |
| 39 | + - Removed issue tracker integration from implement command |
| 40 | + |
| 41 | +### Fixed |
| 42 | + |
| 43 | +- **RELEASE.md**: Trimmed to release instructions only (removed Lessons Learned historical debug notes) |
| 44 | + |
| 45 | +## [0.3.45] - 2026-04-13 |
| 46 | + |
| 47 | +### Fixed |
| 48 | + |
| 49 | +- **check-prerequisites.sh/ps1**: Fixed undefined `$ARCHITECTURE` variable bug |
| 50 | + - `common.sh` was refactored to export `AD` (path to `AD.md`) but `check-prerequisites.sh` still referenced undefined `$ARCHITECTURE` |
| 51 | + - Renamed JSON output fields: `ARCHITECTURE_*` → `AD_*` (`AD_EXISTS`, `AD_VIEWS`, `AD_DIAGRAMS`) |
| 52 | + - Updated PowerShell `common.ps1` to remove legacy `ARCHITECTURE` export |
| 53 | + - Updated `adlc.spec.clarify.md` command to parse new field names |
| 54 | + - Architecture Alignment pillar in `/spec.clarify` now correctly detects `AD.md` when architect extension is activated |
| 55 | + |
| 56 | +## [0.3.44] - 2026-04-13 |
| 57 | + |
| 58 | +### Changed |
| 59 | + |
| 60 | +- **Product extension before_specify hook**: Replaced noisy `adlc.product.specify` with lightweight `adlc.product.link` |
| 61 | + - New command silently exits if no PDRs exist (eliminates "No PDR file found" AI output) |
| 62 | + - If PDRs exist, presents selection table to link feature to Feature PDR |
| 63 | + - Reduces spurious output for users not using product extension workflow |
| 64 | + |
| 65 | +### Added |
| 66 | + |
| 67 | +- **New command `adlc.product.link`**: Lightweight PDR linking command designed for hook use |
| 68 | + - Checks team-directives, memory, and drafts locations for PDRs |
| 69 | + - Silent exit if no PDRs found |
| 70 | + - Full selection flow if PDRs exist |
| 71 | + |
| 72 | +## [0.3.43] - 2026-04-13 |
| 73 | + |
| 74 | +### Fixed |
| 75 | + |
| 76 | +- **Claude Code slash commands**: Fixed preset and extension command naming for slash command invocation |
| 77 | + - Added `compute_skill_output_name()` function in `cli_customization.py` with fork-specific namespace handling |
| 78 | + - Preset commands with `adlc.spec.*` prefix now generate `/adlc-spec-*` instead of `/speckit-adlc-spec-*` |
| 79 | + - Preset alias commands with `spec.*` prefix now generate `/spec-*` instead of `/speckit-spec-*` |
| 80 | + - Extension commands (e.g., `adlc.architect.init`) similarly now generate `/adlc-architect-init` instead of `/speckit-adlc-architect-init` |
| 81 | + - Root cause: `_compute_output_name()` in `agents.py` always prepended `speckit-` regardless of command namespace |
| 82 | + |
| 83 | +## [0.3.42] - 2026-04-13 |
| 84 | + |
| 85 | +### Fixed |
| 86 | + |
| 87 | +- **Bundled extension hooks**: Register hooks during `specify init` |
| 88 | + - Added `hook_executor.register_hooks(manifest)` in `_install_bundled_extensions()` |
| 89 | + - Creates `.specify/extensions.yml` when bundled extensions (architect, product, tdd) have hooks |
| 90 | + - Aligns fork behavior with upstream `install_from_directory()` method |
| 91 | + - Root cause: Custom bundled extension installation path was missing hook registration step |
| 92 | + |
| 93 | +## [0.3.41] - 2026-04-13 |
| 94 | + |
| 95 | +### Fixed |
| 96 | + |
| 97 | +- **adlc.spec.plan**: Plan command now creates all required artifacts |
| 98 | + - Added imperative Outline section with explicit "CREATE" instructions for each artifact |
| 99 | + - Fixed bug where agent only wrote plan.md but didn't generate research.md, data-model.md, contracts/, or quickstart.md |
| 100 | + - Removed ~150 lines of legacy feature architecture content (moved to architect extension hooks) |
| 101 | + - Consolidated duplicate phase numbering (removed "Core Workflow" Phase 1-2, kept "Phases" Phase 0-1) |
| 102 | + - Trimmed Triage Framework section from 70 lines to 20 essential criteria |
| 103 | + - File size reduced from 421 lines to 296 lines (30% reduction) |
| 104 | + - Root cause: Missing clear execution instructions; agent interpreted phases as documentation rather than actionable steps |
| 105 | + |
| 106 | +## [0.3.40] - 2026-04-13 |
| 107 | + |
| 108 | +### Fixed |
| 109 | + |
| 110 | +- **spec.specify hooks**: Align hook event names with upstream template convention |
| 111 | + - Changed product extension hooks from `before_spec`/`after_spec` to `before_specify`/`after_specify` |
| 112 | + - Matches `templates/commands/specify.md` and `EXTENSION-API-REFERENCE.md` naming |
| 113 | + - Fixes hooks not triggering due to naming mismatch |
| 114 | + |
| 115 | +- **adlc.spec.specify**: Remove inline Phase 2 PDR selection (now hook-only) |
| 116 | + - Removed "Phase 2: PDR Reference Selection" from preset command |
| 117 | + - PDR selection now exclusively handled by `before_specify` hook (`adlc.product.specify`) |
| 118 | + - Added Pre-Execution Checks and Post-Execution Hooks sections |
| 119 | + - Eliminates spurious "No PDR file found - skipping Phase 2" AI output |
| 120 | + - Mission Brief workflow preserved (agentic-sdlc enhancement) |
| 121 | + |
| 122 | +## [0.3.39] - 2026-04-13 |
| 123 | + |
| 124 | +### Fixed |
| 125 | + |
| 126 | +- **Preset commands for markdown agents**: Resolve `{SCRIPT}` placeholders correctly |
| 127 | + - Preset commands registered for markdown-based agents (opencode, claude, windsurf, etc.) now properly replace `{SCRIPT}` with actual script paths |
| 128 | + - Previously, `{SCRIPT}` was only resolved for skill-based agents (codex, kimi) |
| 129 | + - Root cause: `register_commands()` in `agents.py` didn't call `resolve_skill_placeholders()` for non-skill agents |
| 130 | + |
| 131 | +## [0.3.38] - 2026-04-13 |
| 132 | + |
| 133 | +### Fixed |
| 134 | + |
| 135 | +- **adlc.spec.constitution**: Simplified command from 199 to 88 lines |
| 136 | + - Removed `validation_scripts:` section (wasn't being path-rewritten by CLI) |
| 137 | + - Replaced complex 4-phase "Constitution Architect" workflow with 9 clear steps |
| 138 | + - Aligned structure with upstream `templates/commands/constitution.md` |
| 139 | + - Preserved team constitution inheritance feature |
| 140 | + - Root cause: Complex multi-phase instructions caused models to skip script execution and write to wrong file paths |
| 141 | + |
5 | 142 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
6 | | -and this project adheres to to [Semantic Versioning](https://semver.org/spec/v2.0.0/). |
| 143 | +and this project adheres to to [Semantic Versioning](https://semver.spec/v2.0.0/). |
| 144 | + |
| 145 | +## [0.3.36] - 2026-04-12 |
| 146 | + |
| 147 | +### Fixed |
| 148 | + |
| 149 | +- **--team-ai-directives**: Persist to init-options.json (upstream standard) + read from all scripts |
| 150 | + - pre_init() saves team_ai_directives to .specify/init-options.json (not config.json) |
| 151 | + - bash scripts: load_team_directives_config() in common.sh reads from init-options.json |
| 152 | + - PowerShell scripts: Load-TeamDirectivesConfig() in common.ps1 reads from init-options.json |
| 153 | + - Extension scripts (both bash/PS) use centralized functions |
| 154 | + - Falls back to memory location if not in init-options.json |
| 155 | + |
| 156 | + Scripts fixed: |
| 157 | + - src/specify_cli/cli_customization.py - save to init-options.json |
| 158 | + - scripts/bash/common.sh - load_team_directives_config() |
| 159 | + - scripts/bash/create-new-feature.sh |
| 160 | + - scripts/bash/setup-plan.sh |
| 161 | + - scripts/powershell/common.ps1 - Load-TeamDirectivesConfig() |
| 162 | + - scripts/powershell/create-new-feature.ps1 |
| 163 | + - scripts/powershell/setup-plan.ps1 |
| 164 | + - scripts/powershell/setup-constitution.ps1 |
| 165 | + - extensions/*/scripts/bash/setup-*.sh |
| 166 | + - extensions/*/scripts/powershell/setup-*.ps1 |
| 167 | + |
| 168 | +## [0.3.31] - 2026-04-10 |
| 169 | + |
| 170 | +### Fixed |
| 171 | + |
| 172 | +- **scaffold extensions**: Always overwrite existing files on re-init |
| 173 | + - Previously skipped scaffold if extension.yml existed |
| 174 | + - Now copies all files from source, overwriting existing |
| 175 | + - Fixes v1.1.4 extensions not updating over v1.1.3 |
| 176 | + |
| 177 | +## [0.3.30] - 2026-04-10 |
| 178 | + |
| 179 | +### Fixed |
| 180 | + |
| 181 | +- **bundled extensions**: Version comparison during init/re-init |
| 182 | + - Compare installed vs bundled version when scaffolding extensions |
| 183 | + - Update to newer version if bundled is higher |
| 184 | + - Previously skipped all existing extensions preventing updates |
| 185 | + - Fixes workflow where implement skipped all ADRs due to wrong status |
| 186 | + |
| 187 | +## [0.3.28] - 2026-04-10 |
| 188 | + |
| 189 | +### Fixed |
| 190 | + |
| 191 | +- **init workflow**: Remove all auto-trigger references to clarify |
| 192 | + - Clarify is now a manual step you run after init |
| 193 | + - Prevents hidden sub-agent calls during brownfield analysis |
| 194 | + - Updated Description and Output sections to reflect manual flow |
| 195 | + |
| 196 | +### Changed |
| 197 | + |
| 198 | +- **clarify workflow**: Add ADR/PDR approval step before implement |
| 199 | + - Added Phase 5.5 to ask users to approve ADRs/PDRs |
| 200 | + |
| 201 | +## [0.3.29] - 2026-04-10 |
| 202 | + |
| 203 | +### Changed |
| 204 | + |
| 205 | +- **spec.plan Phase 1**: Clarify interface contracts scope |
| 206 | + - More general: libraries, CLI, web services, parsers, UI |
| 207 | + - Skip internal-only projects |
| 208 | + - Only "Accepted" status records processed by implement |
| 209 | + - Fixes workflow where implement skipped all ADRs due to wrong status |
| 210 | + |
| 211 | +## [0.3.24] - 2026-04-09 |
| 212 | + |
| 213 | +### Changed |
| 214 | + |
| 215 | +- **preset commands**: Updated next steps suggestions to use command aliases |
| 216 | + - Replaced full command names (`/adlc.spec.*`) with shorter aliases (`/spec.*`) |
| 217 | + - Updated in `adlc.spec.plan.md` and `adlc.spec.specify.md` |
| 218 | + - Improves user experience with shorter, more intuitive command suggestions |
| 219 | + |
| 220 | +## [0.3.23] - 2026-04-09 |
| 221 | + |
| 222 | +### Changed |
| 223 | + |
| 224 | +- **levelup extension**: Fixed missing remote tag to trigger release |
| 225 | + |
| 226 | +## [0.3.22] - 2026-04-09 |
| 227 | + |
| 228 | +### Changed |
| 229 | + |
| 230 | +- **levelup.clarify**: Simplified UX to align with architect.clarify and product.clarify patterns |
| 231 | + - Removed auto-assessment phase (no pre-computed validity/scope/coverage) |
| 232 | + - Replaced batch overview with simple gap identification table |
| 233 | + - Simplified action picker: Accept/Reject/Defer (removed Investigate/Split) |
| 234 | + - Aligned session limits: 5 clarifications total (like architect/product) |
| 235 | + - Inline questions when gaps detected (no separate Investigate action) |
| 236 | + - Updated documentation: added CDR Quality Checklist |
| 237 | + - 31% line reduction: 694 → 478 lines |
| 238 | + |
| 239 | +## [0.3.21] - 2026-04-09 |
| 240 | + |
| 241 | +### Fixed |
| 242 | + |
| 243 | +- **architect extension v1.0.1**: Fixed misleading documentation about `--architecture` flag |
| 244 | + - Removed references to non-existent flag from command documentation |
| 245 | + - Correctly documented hook-based feature architecture integration |
| 246 | + - Updated all "When NOT to Use" sections with accurate guidance |
| 247 | + - Feature architecture now correctly documented as `before_plan` hook in `.specify/extensions.yml` |
| 248 | + |
| 249 | +## [0.3.20] - 2026-04-09 |
| 250 | + |
| 251 | +### Changed |
| 252 | + |
| 253 | +- **product extension v1.0.2**: Removed hardcoded architect handoff, now uses hooks-only integration |
| 254 | + - Extensions are fully decoupled - external references only via project-level hooks |
| 255 | + - If architect is not installed, no reference to it exists in product workflow |
| 256 | + |
| 257 | +### Fixed |
| 258 | + |
| 259 | +- **Extension coupling**: Product extension no longer has hardcoded references to other extensions |
| 260 | + - Cross-extension integration now exclusively through `.specify/extensions.yml` hooks configuration |
| 261 | + - Follows best practice for extension architecture |
| 262 | + |
| 263 | +## [0.3.19] - 2026-04-09 |
| 264 | + |
| 265 | +### Added |
| 266 | + |
| 267 | +- **specify skill commands**: Restored skill package manager CLI commands that were removed |
| 268 | + during upstream merge. Available commands: |
| 269 | + - `specify skill search <query>` - Search skills registry |
| 270 | + - `specify skill install <ref>` - Install from GitHub/GitLab/local |
| 271 | + - `specify skill update [name|--all]` - Update installed skills |
| 272 | + - `specify skill remove <name>` - Uninstall a skill |
| 273 | + - `specify skill list` - Show installed skills |
| 274 | + - `specify skill eval <path>` - Evaluate skill quality |
| 275 | + - `specify skill sync-team` - Sync with team manifest |
| 276 | + - `specify skill check-updates` - Check for available updates |
| 277 | + - `specify skill config [key] [value]` - View/modify configuration |
| 278 | +- **specify skill theming**: Commands now use Tikalk orange accent color |
| 279 | +- **specify skill tests**: Added test suite for skill CLI commands |
| 280 | + |
| 281 | +### Fixed |
| 282 | + |
| 283 | +- **httpx dependency**: Added missing httpx dependency required by skills module |
| 284 | + (was causing "Skills module not available" error) |
| 285 | +- Implementation follows fork pattern: CLI commands in `cli_customization.py`, |
| 286 | + core logic reuses existing `skills/` module |
| 287 | + |
| 288 | +## [0.3.18] - 2026-04-09 |
| 289 | + |
| 290 | +### Added |
| 291 | + |
| 292 | +- **ADLC preset path validation**: Added explicit path validation and non-git repository |
| 293 | + support to all ADLC preset commands to prevent AI agents from writing files to project |
| 294 | + root instead of the correct `specs/<branch>/` directory |
| 295 | + - adlc.spec.specify.md |
| 296 | + - adlc.spec.plan.md |
| 297 | + - adlc.spec.tasks.md |
| 298 | + - adlc.spec.implement.md |
| 299 | + - adlc.spec.checklist.md |
| 300 | + - adlc.spec.analyze.md |
| 301 | + - adlc.spec.clarify.md |
| 302 | + - adlc.spec.constitution.md |
| 303 | + |
| 304 | +### Non-Git Repository Support |
| 305 | + |
| 306 | +- All ADLC commands now include guidance for setting `SPECIFY_FEATURE` environment |
| 307 | + variable when working without git |
7 | 308 |
|
8 | 309 | ## [0.4.2] - 2026-04-13 |
9 | 310 |
|
|
0 commit comments