Commit Graph

117 Commits

Author SHA1 Message Date
Matt Van Horn
333a76535b feat(commands): wire before/after hook events into specify and plan templates (#1886)
* feat(commands): wire before/after hook events into specify and plan templates

Replicates the hook evaluation pattern from tasks.md and implement.md
(introduced in PR #1702) into the specify and plan command templates.
This completes the hook lifecycle across all SDD phases.

Changes:
- specify.md: Add before_specify/after_specify hook blocks
- plan.md: Add before_plan/after_plan hook blocks
- EXTENSION-API-REFERENCE.md: Document new hook events
- EXTENSION-USER-GUIDE.md: List all available hook events

Fixes #1788

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Mark before_commit/after_commit as planned in extension docs

These hook events are defined in the API reference but not yet wired
into any core command template. Marking them as planned rather than
removing them, since the infrastructure supports them.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix hook enablement to default true when field is absent

Matches HookExecutor.get_hooks_for_event() semantics where
hooks without an explicit enabled field are treated as enabled.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(docs): mark commit hooks as planned in user guide config example

The yaml config comment listed before_commit/after_commit as
"Available events" but they are not yet wired into core templates.
Moved them to a separate "Planned" line, consistent with the
API reference.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(commands): align enabled-filtering semantics across all hook templates

tasks.md and implement.md previously said "Filter to only hooks where
enabled: true", which would skip hooks that omit the enabled field.
Updated to match specify.md/plan.md and HookExecutor's h.get('enabled', True)
behavior: filter out only hooks where enabled is explicitly false.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 06:37:03 -05:00
Pierluigi Lenoci
017e1c4c2f fix: clean up command templates (specify, analyze) (#1810)
* fix: clean up command templates (specify, analyze)

- specify.md: fix self-referential step number (step 6c → proceed to step 7)
- specify.md: remove empty "General Guidelines" heading before "Quick Guidelines"
- analyze.md: deduplicate {ARGS} — already present in "User Input" section at top

* fix: restore ## Context heading in analyze template

Address PR review feedback from @dhilipkumars: keep the ## Context
markdown heading to preserve structural hierarchy for LLM parsing.
2026-03-13 08:21:55 -05:00
Ryo Hasegawa
3ef12cae3e fix: Remove duplicate options in specify.md (#1765) 2026-03-09 07:38:10 -05:00
Fabián Silva
8618d0a53e fix: use global branch numbering instead of per-short-name detection (#1757)
* fix: remove per-short-name number detection from specify prompt

The specify.md prompt instructed the AI to search for existing branches
filtered by the exact short-name, causing every new feature to start at
001 since no branches matched the new short-name. The underlying
create-new-feature.sh script already has correct global numbering logic
via check_existing_branches() that searches ALL branches and spec
directories.

The fix removes the AI's flawed number-detection steps and tells it to
NOT pass --number, letting the script auto-detect the next globally
available number.

Closes #1744
Closes #1468

🤖 Generated with [Claude Code](https://claude.com/code)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: clarify --json flag requirement per Copilot review

- Rephrased step 2 to mention both --short-name and --json flags
- Added explicit note to always include the JSON flag for reliable output parsing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 07:37:46 -05:00
Manfred Riem
d0a112c60f fix: wire after_tasks and after_implement hook events into command templates (#1702)
* 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>
2026-03-04 08:16:31 -06:00
Dhilip
c84756b7f3 make c ignores consistent with c++ (#1747) 2026-03-04 08:08:04 -06:00
Zaheer Uddin
dd8dbf6344 fix(implement): remove Makefile from C ignore patterns (#1558)
* fix(implement): remove Makefile from C ignore patterns

Makefile is typically source-controlled and should not be in .gitignore.
Replaced with proper autotools-generated files (autom4te.cache/, config.status).

Co-authored-by: Augment Agent <noreply@augmentcode.com>

* fix(implement): restore config.log in C ignore patterns

---------

Co-authored-by: Augment Agent <noreply@augmentcode.com>
2026-03-03 08:28:40 -06:00
Zaheer Uddin
2b92ab444d fix(checklist): clarify file handling behavior for append vs create (#1556)
* fix(checklist): clarify file handling behavior for append vs create

Resolves contradictory instructions in checklist.md lines 97-99 where the
template stated both 'append to existing file' and 'creates a NEW file'.

Changes:
- Clarified that if file doesn't exist, create new with CHK001
- If file exists, append new items continuing from last CHK ID
- Emphasized preservation of existing content (never delete/replace)

Co-authored-by: Augment Agent <noreply@augmentcode.com>

* fix(checklist): align report language with append behavior

---------

Co-authored-by: Augment Agent <noreply@augmentcode.com>
2026-03-03 07:52:02 -06:00
Zaheer Uddin
abe1b7085c fix(clarify): correct conflicting question limit from 10 to 5 (#1557)
Resolves inconsistency where line 92 stated 'Maximum of 10 total questions'
while all other references (lines 2, 91, 100, 134, 158, 178) consistently
specify a maximum of 5 questions.

Co-authored-by: Augment Agent <noreply@augmentcode.com>
2026-03-03 07:46:31 -06:00
Manfred Riem
12405c01e1 refactor: remove OpenAPI/GraphQL bias from templates (#1652)
* chore: bump version to v0.0.5 [skip ci]

* refactor: update documentation for interface contracts and integration patterns

* Update pyproject.toml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update templates/commands/tasks.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update templates/commands/tasks.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-20 14:46:56 -06:00
Laurent Thiebault
c78f8423f6 fix: typo in plan-template.md (#1446) 2026-02-17 07:22:43 -06:00
jin-joung
4afbd87abb fix: preserve constitution.md during reinitialization (#1541) (#1553)
Moves constitution template from memory/ to templates/ to prevent
overwrites when spec-kit is reinitialized with a different AI agent.

Changes:
- Move memory/constitution.md to templates/constitution-template.md
- Update CLI to copy template to memory/ only on first initialization
- Update constitution command to reference correct paths with .specify/ prefix
- Preserve existing constitution.md when reinitializing project

The CLI now checks if .specify/memory/constitution.md exists:
- If it exists: preserve it (no overwrite)
- If it doesn't exist: copy from .specify/templates/constitution-template.md

This allows users to customize their constitution without losing changes
when adding support for additional AI agents or reinitializing.

Fixes #1541

Co-authored-by: jjoung1128 <jinwoong.joung@gmail.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 09:01:55 -06:00
den (work)
0049b1cdc2 Update Markdown formatting 2025-12-04 11:55:56 -08:00
Den Delimarsky
4d806672d6 Merge pull request #1205 from luanzhiwow/main
fix the incorrect task-template file path
2025-12-01 21:41:29 -08:00
luanzhiwow
45d5176d07 fix the incorrect task-template file path 2025-11-17 20:46:43 +08:00
Den Delimarsky
4767d77ab5 Merge pull request #1070 from danwashusen/patch-1
Refactor ESLint configuration checks in implement.md to address deprecation
2025-11-14 16:28:34 -08:00
Nikolai Emil Damm
7777e145d9 Fix tasktoissues.md to use the 'github/github-mcp-server/issue_write' tool 2025-11-14 22:01:43 +01:00
Den Delimarsky
392f8b7dfa Update templates/commands/taskstoissues.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-07 11:59:07 -08:00
Den Delimarsky
df15b8e2a2 Merge branch 'main' into localden/vscode 2025-11-07 11:46:55 -08:00
Dan Washusen
c4638a936e Refactor ESLint configuration checks in implement.md to address deprecation 2025-10-28 09:47:52 +11:00
Simon Gent
598148ca67 docs: restore important note about JSON output in specify command 2025-10-23 12:29:53 +01:00
Simon Gent
b40b41cf50 fix: improve branch number detection to check all sources
- Use git ls-remote for more reliable remote branch detection
- Check remote branches, local branches, AND specs directories
- Match exact short-name pattern to avoid false positives
- Ensures no duplicate numbers across all sources
2025-10-23 12:25:31 +01:00
Simon Gent
1f3d9b5fdd feat: check remote branches to prevent duplicate branch numbers
- Add --number parameter to create-new-feature scripts (bash & PowerShell)
- Add check_existing_branches() function to fetch and scan remote branches
- Update branch numbering logic to check remotes before creating new branches
- Update /speckit.specify command to document remote branch checking workflow
- Prevents duplicate branch numbers when branches exist on remotes but not locally
- Maintains backward compatibility with existing workflows
- Falls back to local directory scanning when Git is not available
2025-10-23 12:14:48 +01:00
den (work)
dafab39483 Update taskstoissues.md 2025-10-21 20:10:21 -07:00
den (work)
5f1fc6b445 Create taskstoissues.md 2025-10-21 20:09:45 -07:00
Den Delimarsky
ba861cd165 Merge pull request #1003 from github/main
Sync changes
2025-10-21 19:36:30 -07:00
Hanzhi Yang
7b536b578d update specify to make "short-name" argu for create-new-feature.sh in the right position 2025-10-21 18:54:38 -07:00
den (work)
65f8787b48 Merge branch 'localden/vscode' of https://github.com/github/spec-kit into localden/vscode 2025-10-21 15:19:29 -07:00
den (work)
9786e588b7 Lint fixes 2025-10-21 15:12:33 -07:00
Den Delimarsky
0ac76c8c7e Merge branch 'main' into localden/vscode 2025-10-21 15:06:44 -07:00
Den Delimarsky
f7903192a8 Merge branch 'main' into feature/add-markdownlint 2025-10-21 15:05:18 -07:00
den (work)
115b4335d9 Prompt updates 2025-10-21 14:44:17 -07:00
den (work)
14a574a6a8 Chatmodes are back in vogue 2025-10-21 14:29:45 -07:00
den (work)
dbd1437aea Let's switch to proper prompts 2025-10-21 13:17:48 -07:00
den (work)
317ae4dad9 Update prompts 2025-10-21 10:48:59 -07:00
den (work)
8e9d25e9be Update with prompt 2025-10-21 10:39:11 -07:00
den (work)
15a5630047 Use VS Code handoffs 2025-10-21 10:28:09 -07:00
Den Delimarsky
f3ada747cf Merge pull request #983 from isdaniel/add-more-common-patterns
Support more lang/Devops of Common Patterns by Technology
2025-10-21 10:16:51 -07:00
danielshih
e0e62f6757 revert vscode auto remove extra space 2025-10-21 21:31:37 +08:00
Jeff Li
6c22085214 fix: correct command references in implement.md
Update speckit.implement.md to correct the command for regenerating the task list from '/tasks' to '/speckit.tasks', ensuring accurate documentation for task breakdown requirements.
2025-10-21 21:30:52 +08:00
danielshih
02c1549f80 fix regarding copilot suggestion 2025-10-21 21:27:46 +08:00
Jeff Li
ab14090813 fix: correct command references in speckit.analyze.md
Update speckit.analyze.md to reflect changes in command references, ensuring consistency in the execution flow and clarity in the analysis process. The command now specifies `/speckit.tasks` and `/speckit.implement` for improved user guidance.
2025-10-21 21:27:05 +08:00
danielshih
546e9d6617 Support more lang/Devops of Common Patterns by Technology
- lang: TypeScript, Swift, R.
- Devops: Kubernetes/k8s
2025-10-21 21:18:57 +08:00
Benjamin Pahl
33a07969c3 feat(ci): add markdownlint-cli2 for consistent markdown formatting
Add automated markdown linting to ensure consistent formatting across
all markdown files in the repository.

Changes:
- Add .markdownlint-cli2.jsonc configuration
- Create .github/workflows/lint.yml for CI/CD integration
- Fix all 908 existing markdown errors across 27 files
- Enforce ATX-style headings and asterisk emphasis
- Set consistent 2-space list indentation

This prevents markdown errors after project initialization and
maintains high documentation quality standards.
2025-10-20 00:49:15 +02:00
Den Delimarsky
3b000fce4d Merge pull request #881 from github/localden/fixes
Updates to templates and scripts
2025-10-15 10:56:49 -07:00
danielshih
41690cd1d4 format content as copilot suggest 2025-10-15 23:55:00 +08:00
danielshih
e45c469709 Ruby, PHP, Rust, Kotlin, C, C++ 2025-10-15 23:15:39 +08:00
den (work)
36ff7e6505 Update files 2025-10-14 11:52:26 -07:00
den (work)
97df98b9a0 Update logic for arguments 2025-10-14 11:03:57 -07:00
den (work)
654a00aac9 Update tasks.md 2025-10-14 10:33:58 -07:00