Compare commits

...

506 Commits

Author SHA1 Message Date
github-actions[bot]
f8f7f1c603 chore: bump version to 0.3.1 2026-03-17 16:30:05 +00:00
Manfred Riem
489ced56ba docs: add greenfield Spring Boot pirate-speak preset demo to README (#1878) 2026-03-17 11:05:37 -05:00
darkglow-net
6644f69a96 fix(ai-skills): exclude non-speckit copilot agent markdown from skill… (#1867)
* fix(ai-skills): exclude non-speckit copilot agent markdown from skill generation

* Potential fix for pull request finding

Fix missing `.agent` filename suffix

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

* Fix test assertion speckit.plan.md to speckit.plan.agent


Fix test assertion speckit.plan.md to speckit.plan.agent

* Fix filter glob based on review suggestions

fix(ai-skills): normalize Copilot .agent template names and align template fallback filtering

* Add template glob for fallback directory

* GH Copilot Suggestions

Clarify comment regarding Copilot's use of templates in tests.
Add extra test assertion

* fix(ai-skills): normalize Copilot .agent templates and preserve fallback behavior

fix(ai-skills): handle Copilot .agent templates and fallback filtering

Normalize Copilot command template names by stripping the .agent suffix
when deriving skill names and metadata sources, so files like
speckit.plan.agent.md produce speckit-plan and map to plan.md metadata.

Also align Copilot template discovery with speckit.* filtering while
preserving fallback to templates/commands/ when .github/agents contains
only user-authored markdown files, and add regression coverage for both
non-speckit agent exclusion and fallback behavior.

* fix(ai-skills): ignore non-speckit markdown commands

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-17 10:25:18 -05:00
黄黄汪
a177a1a6d1 feat: add Trae IDE support as a new agent (#1817)
* feat: add Trae IDE support as a new agent

Add Trae (https://www.trae.ai/) as a supported AI agent in spec-kit.
Trae is an IDE-based agent that uses .trae/rules/ directory for
project-level rules in Markdown format.

Changes across 9 files:
- src/specify_cli/__init__.py: Add trae to AGENT_CONFIG (IDE-based,
  .trae/ folder, rules subdir, no CLI required)
- src/specify_cli/extensions.py: Add trae to CommandRegistrar.AGENT_CONFIGS
  (.trae/rules, markdown format, .md extension)
- README.md: Add Trae to supported agents table, CLI examples, and
  --ai option description
- .github/workflows/scripts/create-release-packages.sh: Add trae to
  ALL_AGENTS array and build case statement
- .github/workflows/scripts/create-release-packages.ps1: Add trae to
  AllAgents array and switch statement
- .github/workflows/scripts/create-github-release.sh: Add trae template
  zip files to release assets
- scripts/bash/update-agent-context.sh: Add TRAE_FILE, trae case in
  update function, and auto-detect block
- scripts/powershell/update-agent-context.ps1: Add TRAE_FILE, ValidateSet
  entry, switch case, and auto-detect block
- tests/test_agent_config_consistency.py: Add 8 consistency tests for
  trae following established kimi/tabnine patterns

* fix: correct Generate-Commands parameter names for trae in PowerShell release script

Fix incorrect parameter names in the trae case of Build-Variant:
- -Format -> -Extension
- -ArgsToken -> -ArgFormat
- -OutDir -> -OutputDir

These now match the Generate-Commands function signature and all other
agent entries in the script.

Co-authored-by: Copilot <copilot@github.com>

* Update release packaging scripts and agent docs

* Update Agent.md

* Restore format

* Adjust order

* Potential fix for pull request finding

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

* Unused

* fix: add TRAE_FILE to update_all_existing_agents() for auto-detect support

Add missing update_if_new call for TRAE_FILE in the bash
update-agent-context.sh script's update_all_existing_agents()
function, matching the PowerShell implementation.

This ensures running the script without arguments will correctly
auto-detect and update existing Trae agent files.

* Add configuration for 'trae' in agents.py

* Potential fix for pull request finding

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

* Refactor trae configuration test for clarity

* Potential fix for pull request finding

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

* Update update-agent-context.sh

* Fix formatting in update-agent-context.sh

---------

Co-authored-by: root <root@g340-cd52-700-60f9-5561-211-6c32.byted.org>
Co-authored-by: root <root@g340-cd52-700-c3d1-c735-796-4b9e.byted.org>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-17 10:03:54 -05:00
Hamilton Snow
c12b8c1763 feat(cli): polite deep merge for settings.json and support JSONC (#1874)
* feat(cli): polite deep merge for settings.json with json5 and safe atomic write

* fix(cli): prevent temp fd leak and align merge-policy docs
2026-03-17 09:51:13 -05:00
Michal Bachorik
d2ecf6560d feat(extensions,presets): add priority-based resolution ordering (#1855)
* feat(extensions,presets): add priority-based resolution ordering

Add priority field to extension and preset registries for deterministic
template resolution when multiple sources provide the same template.

Extensions:
- Add `list_by_priority()` method to ExtensionRegistry
- Add `--priority` option to `extension add` command
- Add `extension set-priority` command
- Show priority in `extension list` and `extension info`
- Preserve priority during `extension update`
- Update RFC documentation

Presets:
- Add `preset set-priority` command
- Show priority in `preset info` output
- Use priority ordering in PresetResolver for extensions

Both systems:
- Lower priority number = higher precedence (default: 10)
- Backwards compatible with legacy entries (missing priority defaults to 10)
- Comprehensive test coverage including backwards compatibility

Closes #1845
Closes #1854

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

* fix: address code review feedback

- list_by_priority(): add secondary sort by ID for deterministic ordering,
  return deep copies to prevent mutation
- install_from_directory/zip: validate priority >= 1 early
- extension add CLI: validate --priority >= 1 before install
- PresetRegistry.update(): preserve installed_at timestamp
- Test assertions: use exact source string instead of substring match

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

* fix: address additional review feedback

- PresetResolver: add fallback to directory scanning when registry is
  empty/corrupted for robustness and backwards compatibility
- PresetRegistry.update(): add guard to prevent injecting installed_at
  when absent in existing entry (mirrors ExtensionRegistry behavior)
- RFC: update extension list example to match actual CLI output format

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

* fix: restore defensive code and RFC descriptions lost in rebase

- Restore defensive code in list_by_priority() with .get() and isinstance check
- Restore detailed --from URL and --dev option descriptions in RFC

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

* fix: add defensive code to presets list_by_priority()

- Add .get() and isinstance check for corrupted/empty registry
- Move copy import to module level (remove local import)
- Matches defensive pattern used in extensions.py

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

* fix: address reviewer feedback on priority resolution

- Rename _normalize_priority to normalize_priority (public API)
- Add comprehensive tests for normalize_priority function (9 tests)
- Filter non-dict metadata entries in list_by_priority() methods
- Fix extension priority resolution to merge registered and unregistered
  extensions into unified sorted list (unregistered get implicit priority 10)
- Add tests for extension priority resolution ordering (4 tests)

The key fix ensures unregistered extensions with implicit priority 10
correctly beat registered extensions with priority > 10, and vice versa.

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

* fix: DRY refactor and strengthen test assertions

- Extract _get_all_extensions_by_priority() helper in PresetResolver
  to eliminate duplicated extension list construction
- Add priority=10 assertion to test_legacy_extension_without_priority_field
- Add priority=10 assertion to test_legacy_preset_without_priority_field

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

* fix: add isinstance(dict) checks for corrupted registry entries

Add defensive checks throughout CLI commands and manager methods
to handle cases where registry entries may be corrupted (non-dict
values). This prevents AttributeError when calling .get() on
non-dict metadata.

Locations fixed:
- __init__.py: preset/extension info, set-priority, enable/disable,
  upgrade commands
- extensions.py: list_installed()
- presets.py: list_installed()

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

* fix: normalize priority display to match resolution behavior

Use normalize_priority() for all priority display in CLI commands
to ensure displayed values match actual resolution behavior when
registry data is corrupted/hand-edited.

Locations fixed:
- extensions.py: list_installed()
- presets.py: list_installed(), PresetResolver
- __init__.py: preset info, extension info, set-priority commands

Also added GraphQL query for unresolved PR comments to CLAUDE.md.

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

* fix: repair corrupted priority values in set-priority commands

Changed set-priority commands to check if the raw stored value is
already a valid int equal to the requested priority before skipping.
This ensures corrupted values (e.g., "high") get repaired even when
setting to the default priority (10).

Also removed CLAUDE.md that was accidentally added to the repo.

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

* fix: harden registry update methods against corrupted entries

- Normalize priority when restoring during extension update to prevent
  propagating corrupted values (e.g., "high", 0, negative)
- Add isinstance(dict) checks in ExtensionRegistry.update() and
  PresetRegistry.update() to handle corrupted entries (string/list)
  that would cause TypeError on merge

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

* fix: use safe fallback for version in list_installed()

When registry entry is corrupted (non-dict), metadata becomes {} after
the isinstance check. Use metadata.get("version", manifest.version)
instead of metadata["version"] to avoid KeyError.

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

---------

Co-authored-by: iamaeroplane <michal.bachorik@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 09:44:34 -05:00
Seiya Kojima
7a5762fe6a fix(scripts): suppress stdout from git fetch in create-new-feature.sh (#1876)
In multi-remote environments, `git fetch --all` outputs messages like
"Fetching origin" to stdout. Since `check_existing_branches()` only
redirected stderr (`2>/dev/null`), the stdout output was captured by
the `$(...)` command substitution calling this function, contaminating
the branch number return value and causing arithmetic errors like
`$((10#Fetching...))`.

Fix: redirect both stdout and stderr to /dev/null (`>/dev/null 2>&1`).
2026-03-17 09:22:34 -05:00
Pierluigi Lenoci
9c0c1446ec fix(scripts): harden bash scripts — escape, compat, and error handling (#1869)
* fix(scripts): harden bash scripts with escape, compat, and cleanup fixes

- common.sh: complete RFC 8259 JSON escape (\b, \f, strip control chars)
- common.sh: distinguish python3 success-empty vs failure in resolve_template
- check-prerequisites.sh: escape doc names through json_escape in fallback path
- create-new-feature.sh: remove duplicate json_escape (already in common.sh)
- create-new-feature.sh: warn on stderr when spec template is not found
- update-agent-context.sh: move nested function to top-level for bash 3.2 compat

* fix(scripts): explicit resolve_template return code and best-effort agent updates

- common.sh: resolve_template now returns 1 when no template is found,
  making the "not found" case explicit instead of relying on empty stdout
- setup-plan.sh, create-new-feature.sh: add || true to resolve_template
  calls so set -e does not abort on missing templates (non-fatal)
- update-agent-context.sh: accumulate errors in update_all_existing_agents
  instead of silently discarding them — all agents are attempted and the
  composite result is returned, matching the PowerShell equivalent behavior

* style(scripts): add clarifying comment in resolve_template preset branch

* fix(scripts): wrap python3 call in if-condition to prevent set -e abort

Move the python3 command substitution in resolve_template into an
if-condition so that a non-zero exit (e.g. invalid .registry JSON)
does not abort the function under set -e. The fallback directory
scan now executes as intended regardless of caller errexit settings.

* fix(scripts): track agent file existence before update and avoid top-level globals

- _update_if_new now records the path and sets _found_agent before calling
  update_agent_file, so that failures do not cause duplicate attempts on
  aliased paths (AMP/KIRO/BOB -> AGENTS_FILE) or false "no agent files
  found" fallback triggers
- Remove top-level initialisation of _updated_paths and _found_agent;
  they are now created exclusively inside update_all_existing_agents,
  keeping the script side-effect free when sourced
2026-03-16 17:51:47 -05:00
LADISLAV BIHARI
82b8ce4295 Add cognitive-squad to community extension catalog (#1870)
- Extension ID: cognitive-squad
- Version: 0.1.0
- Author: Testimonial
- 19-function cognitive agent squad for autonomous pre-code analysis
- 7 core agents, 7 specialists, 4 learning functions, feedback loop
- Requires: spec-kit >=0.3.0, optionally understanding >=3.4.0

Repository: https://github.com/Testimonial/cognitive-squad

Co-authored-by: Ladislav Bihari <ladislav.bihari@statsperform.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:10:37 -05:00
Manfred Riem
2cf332db1b docs: add Go / React brownfield walkthrough to community walkthroughs (#1868)
Closes #1390
2026-03-16 13:57:44 -05:00
Ricardo Accioly
b1650f884d chore: update DocGuard extension to v0.9.8 (#1859)
* chore: update DocGuard to v0.9.7

* docs: update DocGuard description in extensions table

* chore: update DocGuard to v0.9.8

---------

Co-authored-by: Manfred Riem <15701806+mnriem@users.noreply.github.com>
2026-03-16 12:14:49 -05:00
KhawarHabibKhan
23bd645054 Feature: add specify status command (#1837)
* feat: add specify status command with project info, agent detection, and feature detection

* feat: add SDD artifacts check and task progress parsing to specify status

* feat: add workflow phase detection and extensions summary to specify status

* Revert "feat: add workflow phase detection and extensions summary to specify status"

This reverts commit 1afe3c52af.

* Revert "feat: add SDD artifacts check and task progress parsing to specify status"

This reverts commit 3be36f8759.

* Revert "feat: add specify status command with project info, agent detection, and feature detection"

This reverts commit 681dc46af9.

* feat: add spec-kit-status extension to community catalog

* Potential fix for pull request finding

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

* Potential fix for pull request finding

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

* Potential fix for pull request finding

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

* Potential fix for pull request finding

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

* Revert "Potential fix for pull request finding"

This reverts commit 040447be03.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Manfred Riem <15701806+mnriem@users.noreply.github.com>
2026-03-16 12:08:43 -05:00
Michal Bachorik
bef9c2cb59 fix(extensions): show extension ID in list output (#1843)
Display the extension ID below the name in `specify extension list` output.
This allows users to easily copy the ID when disambiguation is needed.

Fixes #1832

Co-authored-by: iamaeroplane <michal.bachorik@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-16 08:41:10 -05:00
Stanislav Deviatov
4f81fc298f feat(extensions): add Archive and Reconcile extensions to community catalog (#1844)
* feat(extensions): add reconcile and archive to community catalog

* Update extension link text and add changelogs

Normalize extension link text in extensions/README.md (replace `[@stn1slv]` with `spec-kit-archive` and `spec-kit-reconcile`) and add CHANGELOG URLs to the corresponding entries in extensions/catalog.community.json for the Archive and Reconcile extensions.

---------

Co-authored-by: Stanislav Deviatov <stn1slv@users.noreply.github.com>
2026-03-16 07:46:06 -05:00
Ricardo Accioly
4a3234496e feat: Add DocGuard CDD enforcement extension to community catalog (#1838)
* feat: add DocGuard CDD enforcement extension to community catalog

DocGuard is a Canonical-Driven Development enforcement tool that generates,
validates, scores, and traces project documentation against 51 automated checks.

Provides 6 commands:
- guard: 51-check validation with quality labels
- diagnose: AI-ready fix prompts
- score: CDD maturity scoring (0-100)
- trace: ISO 29119 traceability matrix
- generate: Reverse-engineer docs from codebase
- init: Initialize CDD with compliance profiles

Features:
- Zero dependencies (pure Node.js)
- Config-aware traceability (respects .docguard.json)
- Orphan file detection
- Research-backed (AITPG/TRACE, IEEE TSE/TMLCN 2026)

npm: https://www.npmjs.com/package/docguard-cli
GitHub: https://github.com/raccioly/docguard

* fix: use release asset URL for download_url

The source archive URL nests files under a subdirectory, so the
Spec Kit installer cannot find extension.yml at the archive root.
Switch to a release asset ZIP built from the extension directory.

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

* docs: add DocGuard to community extensions README table

* chore: update DocGuard entry to v0.8.0 (92 checks)

* chore: update DocGuard description (51→92 checks)

---------

Co-authored-by: Ricardo Accioly <ricardoaccioly@RAccioly-J0CWDQ4MXV.attlocal.net>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-13 17:41:55 -05:00
Manfred Riem
f92d81bbec chore: bump version to 0.3.0 (#1839)
* chore: bump version to 0.3.0

* Potential fix for pull request finding

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

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-13 15:17:19 -05:00
Copilot
69ee7a836e feat(presets): Pluggable preset system with catalog, resolver, and skills propagation (#1787)
* Initial plan

* feat(templates): add pluggable template system with packs, catalog, resolver, and CLI commands

Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>

* test(templates): add comprehensive unit tests for template pack system

Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>

* feat(presets): pluggable preset system with template/command overrides, catalog, and resolver

- Rename 'template packs' to 'presets' to avoid naming collision with core templates
- PresetManifest, PresetRegistry, PresetManager, PresetCatalog, PresetResolver in presets.py
- Extract CommandRegistrar to agents.py as shared infrastructure
- CLI: specify preset list/add/remove/search/resolve/info
- CLI: specify preset catalog list/add/remove
- --preset option on specify init
- Priority-based preset stacking (--priority, lower = higher precedence)
- Command overrides registered into all detected agent directories (17+ agents)
- Extension command safety: skip registration if target extension not installed
- Multi-catalog support: env var, project config, user config, built-in defaults
- resolve_template() / Resolve-Template in bash/PowerShell scripts
- Self-test preset: overrides all 6 core templates + 1 command
- Scaffold with 4 examples: core/extension template and command overrides
- Preset catalog (catalog.json, catalog.community.json)
- Documentation: README.md, ARCHITECTURE.md, PUBLISHING.md
- 110 preset tests, 253 total tests passing

* feat(presets): propagate command overrides to skills via init-options

- Add save_init_options() / load_init_options() helpers that persist
  CLI flags from 'specify init' to .specify/init-options.json
- PresetManager._register_skills() overwrites SKILL.md files when
  --ai-skills was used during init and corresponding skill dirs exist
- PresetManager._unregister_skills() restores core template content
  on preset removal
- registered_skills stored in preset registry metadata
- 8 new tests covering skill override, skip conditions, and restore

* fix: address PR check failures (ruff F541, CodeQL URL substring)

- Remove extraneous f-prefix from two f-strings without placeholders
- Replace substring URL check in test with startswith/endswith assertions
  to satisfy CodeQL incomplete URL substring sanitization rule

* fix: address Copilot PR review comments

- Move save_init_options() before preset install so skills propagation
  works during 'specify init --preset --ai-skills'
- Clean up downloaded ZIP after successful preset install during init
- Validate --from URL scheme (require HTTPS, HTTP only for localhost)
- Expose unregister_commands() on extensions.py CommandRegistrar wrapper
  instead of reaching into private _registrar field
- Use _get_merged_packs() for search() and get_pack_info() so all
  active catalogs are searched, not just the highest-priority one
- Fix fetch_catalog() cache to verify cached URL matches current URL
- Fix PresetResolver: script resolution uses .sh extension, consistent
  file extensions throughout resolve(), and resolve_with_source()
  delegates to resolve() to honor template_type parameter
- Fix bash common.sh: fall through to directory scan when python3
  returns empty preset list
- Fix PowerShell Resolve-Template: filter out dot-folders and sort
  extensions deterministically

* fix: narrow empty except blocks and add explanatory comments

* fix: address Copilot PR review comments (round 2)

- Fix init --preset error masking: distinguish "not found" from real errors
- Fix bash resolve_template: skip hidden dirs in extensions (match Python/PS)
- Fix temp dir leaks in tests: use temp_dir fixture instead of mkdtemp
- Fix self-test catalog entry: add note that it's local-only (no download_url)
- Fix Windows path issue in resolve_with_source: use Path.relative_to()
- Fix skill restore path: use project's .specify/templates/commands/ not source tree
- Add encoding="utf-8" to all file read/write in agents.py
- Update test to set up core command templates for skill restoration

* fix: remove self-test from catalog.json (local-only preset)

* fix: address Copilot PR review comments (round 3)

- Fix PS Resolve-Template fallback to skip dot-prefixed dirs (.cache)
- Rename _catalog to _catalog_name for consistency with extension system
- Enforce install_allowed policy in CLI preset add and download_pack()
- Fix shell injection: pass registry path via env var instead of string interpolation

* fix: correct PresetError docstring from template to preset

* Removed CHANGELOG requirement

* Applying review recommendations

* Applying review recommendations

* Applying review recommendations

* Applying review recommendations

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>
2026-03-13 15:09:14 -05:00
eason
c883952b43 fix: match 'Last updated' timestamp with or without bold markers (#1836)
The template outputs plain text `Last updated: [DATE]` but both
update-agent-context scripts only matched `**Last updated**: [DATE]`
(bold Markdown). Make the bold markers optional in the regex so the
timestamp is refreshed regardless of formatting.

Co-authored-by: easonysliu <easonysliu@tencent.com>
Co-authored-by: Claude (claude-opus-4-6) <noreply@anthropic.com>
2026-03-13 11:46:21 -05:00
KhawarHabibKhan
b9c1a1c7bb Add specify doctor command for project health diagnostics (#1828)
* Add specify doctor command for project health diagnostics

* Add tests for specify doctor command

* Document specify doctor command in README

* Revert "Document specify doctor command in README"

This reverts commit c1cfd06129.

* Revert "Add tests for specify doctor command"

This reverts commit 65e12fb62b.

* Revert "Add specify doctor command for project health diagnostics"

This reverts commit d5bd93248a.

* Add doctor extension to community catalog

* Potential fix for pull request finding

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

* Potential fix for pull request finding

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

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-13 10:50:07 -05:00
Pierluigi Lenoci
46bc65b1ce fix: harden bash scripts against shell injection and improve robustness (#1809)
- Replace eval of unquoted get_feature_paths output with safe pattern:
  capture into variable, check return code, then eval quoted result
- Use printf '%q' in get_feature_paths to safely emit shell assignments,
  preventing injection via paths containing quotes or metacharacters
- Add json_escape() helper for printf JSON fallback paths, handling
  backslash, double-quote, and control characters when jq is unavailable
- Use jq -cn for safe JSON construction with proper escaping when
  available, with printf + json_escape() fallback
- Replace declare -A (bash 4+) with indexed array for bash 3.2
  compatibility (macOS default)
- Use inline command -v jq check in create-new-feature.sh since it
  does not source common.sh
- Guard trap cleanup against re-entrant invocation by disarming traps
  at entry
- Use printf '%q' for shell-escaped branch names in user-facing output
- Return failure instead of silently returning wrong path on ambiguous
  spec directory matches
- Deduplicate agent file updates via realpath to prevent multiple writes
  to the same file (e.g. AGENTS.md aliased by multiple variables)
2026-03-13 10:47:17 -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
fuyongde
7562664fd1 fix: migrate Qwen Code CLI from TOML to Markdown format (#1589) (#1730)
* fix: migrate Qwen Code CLI from TOML to Markdown format (#1589)

Qwen Code CLI v0.10.0 deprecated TOML format and fully switched to
Markdown as the core format for configuration and interaction files.

- Update create-release-packages.sh: generate .md files with $ARGUMENTS
  instead of .toml files with {{args}} for qwen agent
- Update create-release-packages.ps1: same change for PowerShell script
- Update AGENTS.md: reflect Qwen's new Markdown format in docs and
  remove Qwen from TOML format section
- Update tests/test_ai_skills.py: add commands_dir_qwen fixture and
  tests covering Markdown-format skills installation for Qwen

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

* fix: update CommandRegistrar qwen config to Markdown format

extensions.py CommandRegistrar.AGENT_CONFIGS['qwen'] was still set to
TOML format, causing `specify extension` to write .toml files into
.qwen/commands, conflicting with Qwen Code CLI v0.10.0+ expectations.

- Change qwen format from toml to markdown
- Change qwen args from {{args}} to $ARGUMENTS
- Change qwen extension from .toml to .md
- Add test to assert qwen config is Markdown format

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 07:43:14 -05:00
Dhilip
976c9981a4 fix(cli): deprecate explicit command support for agy (#1798) (#1808)
* fix(cli): deprecate explicit command support for agy (#1798)

* docs(cli): add tests and docs for agy deprecation (#1798)

* fix: address review comments for agy deprecation

* fix: address round 2 review comments for agy deprecation

* fix: address round 3 review comments for agy deprecation

* fix: address round 4 review comments for agy deprecation

* fix: address round 5 review comments for agy deprecation

* docs: add inline contextual comments to explain agy deprecation

* docs: clarify historical context in agy deprecation docstring

* fix: correct skills path in deprecation comment and make test mock fully deterministic
2026-03-13 07:35:30 -05:00
Dhilip
d3fc056743 Add /selftest.extension core extension to test other extensions (#1758)
* test(commands): create extension-commands LLM playground sandbox

* update(tests): format LLM evaluation as an automated test runner

* test(commands): map extension-commands python script with timestamps

* test(commands): map extension-commands python script with timestamps

* test(commands): update TESTING.md to evaluate discovery, lint, and deploy explicitly

* test(commands): simplify execution expectations and add timestamp calculation

* fix(tests): address copilot review comments on prompt formatting and relative paths

* fix(tests): resolve copilot PR feedback regarding extension schema structure and argparse mutually exclusive groups

* feat(extensions): add core selftest utility and migrate away from manual tests sandbox

* fix(selftest): update command name array to match spec-kit validation schema

* fix(selftest): wrap arguments in quotes to support multi-word extension names

* update the command to be more meaningful

* fix: if the extension is discovery only, it should not be installable

* Address review comments for selftest documentation

* address review comments

* address review comments

* Update extensions/selftest/commands/selftest.md

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

---------

Co-authored-by: Manfred Riem <15701806+mnriem@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-13 07:26:01 -05:00
Michal Bachorik
58ce653908 feat(extensions): Quality of life improvements for RFC-aligned catalog integration (#1776)
* feat(extensions): implement automatic updates with atomic backup/restore

- Implement automatic extension updates with download from catalog
- Add comprehensive backup/restore mechanism for failed updates:
  - Backup registry entry before update
  - Backup extension directory
  - Backup command files for all AI agents
  - Backup hooks from extensions.yml
- Add extension ID verification after install
- Add KeyboardInterrupt handling to allow clean cancellation
- Fix enable/disable to preserve installed_at timestamp by using
  direct registry manipulation instead of registry.add()
- Add rollback on any update failure with command file,
  hook, and registry restoration

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

* fix(extensions): comprehensive name resolution and error handling improvements

- Add shared _resolve_installed_extension helper for ID/display name resolution
  with proper ambiguous name handling (shows table of matches)
- Add _resolve_catalog_extension helper for catalog lookups by ID or display name
- Update enable/disable/update/remove commands to use name resolution helpers
- Fix extension_info to handle catalog errors gracefully:
  - Fallback to local installed info when catalog unavailable
  - Distinguish "catalog unavailable" from "not found in catalog"
  - Support display name lookup for both installed and catalog extensions
- Use resolved display names in all status messages for consistency
- Extract _print_extension_info helper for DRY catalog info printing

Addresses reviewer feedback:
- Ambiguous name handling in enable/disable/update
- Catalog error fallback for installed extensions
- UX message clarity (catalog unavailable vs not found)
- Resolved ID in status messages

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

* fix(extensions): properly detect ambiguous names in extension_info

The extension_info command was breaking on the first name match without
checking for ambiguity. This fix separates ID matching from name matching
and checks for ambiguity before selecting a match, consistent with the
_resolve_installed_extension() helper used by other commands.

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

* refactor(extensions): add public update() method to ExtensionRegistry

Add a proper public API for updating registry metadata while preserving
installed_at timestamp, instead of directly mutating internal registry
data and calling private _save() method.

Changes:
- Add ExtensionRegistry.update() method that preserves installed_at
- Update enable/disable commands to use registry.update()
- Update rollback logic to use registry.update()

This decouples the CLI from registry internals and maintains proper
encapsulation.

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

* fix(extensions): safely access optional author field in extension_info

ExtensionManifest doesn't expose an author property - the author field
is optional in extension.yml and stored in data["extension"]["author"].
Use safe dict access to avoid AttributeError.

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

* fix(extensions): address multiple reviewer comments

- ExtensionRegistry.update() now preserves original installed_at timestamp
- Add ExtensionRegistry.restore() for rollback (entry was removed)
- Clean up wrongly installed extension on ID mismatch before rollback
- Remove unused catalog_error parameter from _print_extension_info()

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

* fix(extensions): check _install_allowed for updates, preserve backup on failed rollback

- Skip automatic updates for extensions from catalogs with install_allowed=false
- Only delete backup directory on successful rollback, preserve it on failure
  for manual recovery

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

* fix(extensions): address reviewer feedback on update/rollback logic

- Hook rollback: handle empty backup_hooks by checking `is not None`
  instead of truthiness (falsy empty dict would skip hook cleanup)
- extension_info: use resolved_installed_id for catalog lookup when
  extension was found by display name (prevents wrong catalog match)
- Rollback: always remove extension dir first, then restore if backup
  exists (handles case when no original dir existed before update)
- Validate extension ID from ZIP before installing, not after
  (avoids side effects of installing wrong extension before rollback)
- Preserve enabled state during updates: re-apply disabled state and
  hook enabled flags after successful update
- Optimize _resolve_catalog_extension: pass query to catalog.search()
  instead of fetching all extensions
- update() now merges metadata with existing entry instead of replacing
  (preserves fields like registered_commands when only updating enabled)
- Add tests for ExtensionRegistry.update() and restore() methods:
  - test_update_preserves_installed_at
  - test_update_merges_with_existing
  - test_update_raises_for_missing_extension
  - test_restore_overwrites_completely
  - test_restore_can_recreate_removed_entry

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

* docs(extensions): update RFC to reflect implemented status

- Change status from "Draft" to "Implemented"
- Update all Implementation Phases to show completed items
- Add new features implemented beyond original RFC:
  - Display name resolution for all commands
  - Ambiguous name handling with tables
  - Atomic update with rollback
  - Pre-install ID validation
  - Enabled state preservation
  - Registry update/restore methods
  - Catalog error fallback
  - _install_allowed flag
  - Cache invalidation
- Convert Open Questions to Resolved Questions with decisions
- Add remaining Open Questions (sandboxing, signatures) as future work
- Fix table of contents links

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

* fix(extensions): address third round of PR review comments

- Refactor extension_info to use _resolve_installed_extension() helper
  with new allow_not_found parameter instead of duplicating resolution logic
- Fix rollback hook restoration to not create empty hooks: {} in config
  when original config had no hooks section
- Fix ZIP pre-validation to handle nested extension.yml files (GitHub
  auto-generated ZIPs have structure like repo-name-branch/extension.yml)
- Replace unused installed_manifest variable with _ placeholder
- Add display name to update status messages for better UX

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

* fix(extensions): address fourth round of PR review comments

Rollback fixes:
- Preserve installed_at timestamp after successful update (was reset by
  install_from_zip calling registry.add)
- Fix rollback to only delete extension_dir if backup exists (avoids
  destroying valid installation when failure happens before modification)
- Fix rollback to remove NEW command files created by failed install
  (files that weren't in original backup are now cleaned up)
- Fix rollback to delete hooks key entirely when backup_hooks is None
  (original config had no hooks key, so restore should remove it)

Cross-command consistency fix:
- Add display name resolution to `extension add` command using
  _resolve_catalog_extension() helper (was only in `extension info`)
- Use resolved extension ID for download_extension() call, not original
  argument which may be a display name

Security fix (fail-closed):
- Malformed catalog config (empty/missing URLs) now raises ValidationError
  instead of silently falling back to built-in catalogs

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

* fix(lint): address ruff linting errors and registry.update() semantics

- Remove unused import ExtensionError in extension_info
- Remove extraneous f-prefix from strings without placeholders
- Use registry.restore() instead of registry.update() for installed_at
  preservation (update() always preserves existing installed_at, ignoring
  our override)

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

---------

Co-authored-by: iamaeroplane <michal.bachorik@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-13 07:23:37 -05:00
Manfred Riem
82f8a13f83 Add Java brownfield walkthrough to community walkthroughs (#1820) 2026-03-12 14:02:02 -05:00
Manfred Riem
0f1cbd74fe chore: bump version to 0.2.1 (#1813)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-11 17:41:40 -05:00
Manfred Riem
ec60c5b2fe Added February 2026 newsletter (#1812) 2026-03-11 15:33:30 -05:00
Fanch Daniel
e56d37db8c feat: add Kimi Code CLI agent support (#1790)
* feat: add Kimi Code (kimi) CLI agent support

- Register kimi in AGENT_CONFIG with folder `.kimi/`, markdown format, requires_cli=True
- Register kimi in CommandRegistrar.AGENT_CONFIGS
- Add kimi to supported agents table in AGENTS.md and README.md
- Add kimi to release packaging scripts (bash and PowerShell)
- Add kimi CLI installation to devcontainer post-create script
- Add kimi support to update-agent-context scripts (bash and PowerShell)
- Add 4 consistency tests covering all kimi integration surfaces
- Bump version to 0.1.14 and update CHANGELOG

* fix: include .specify/templates/ and real command files in release ZIPs

- Copy real command files from templates/commands/ (with speckit. prefix)
  instead of generating stubs, so slash commands have actual content
- Add .specify/templates/ to every ZIP so ensure_constitution_from_template
  can find constitution-template.md on init
- Add .vscode/settings.json to every ZIP
- Having 3 top-level dirs prevents the extraction flatten heuristic from
  incorrectly stripping the agent config folder (.kimi/, .claude/, etc.)
- Bump version to 0.1.14.1

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

* fix(kimi): use .kimi/skills/<name>/SKILL.md structure for Kimi Code CLI

Kimi Code CLI uses a skills system, not flat command files:
- Skills live in .kimi/skills/<name>/SKILL.md (project-level)
- Invoked with /skill:<name> (e.g. /skill:speckit.specify)
- Each skill is a directory containing SKILL.md with YAML frontmatter

Changes:
- AGENT_CONFIG["kimi"]["commands_subdir"] = "skills" (was "commands")
- create-release-packages.sh: new create_kimi_skills() function creates
  skill directories with SKILL.md from real template content
- Bump version to 0.1.14.2

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

* fix(test): align kimi commands_subdir assertion with skills structure

* fix: use forward slashes for tabnine path in create-release-packages.ps1

* fix: align kimi to .kimi/skills convention and fix ARGUMENTS unbound variable

* fix: address PR review comments for kimi agent support

  - Fix VERSION_NO_V undefined variable in create-github-release.sh
  - Restore version $1 argument handling in create-release-packages.sh
  - Fix tabnine/vibe/generic cases calling undefined generate_commands
  - Align roo path .roo/rules -> .roo/commands with AGENT_CONFIG
  - Fix kimi extension to use per-skill SKILL.md directory structure
  - Add parent mkdir before dest_file.write_text for nested paths
  - Restore devcontainer tools removed by regression + add Kimi CLI
  - Strengthen test_kimi_in_powershell_validate_set assertion

* fix: restore release scripts and address all PR review comments

  - Restore create-release-packages.sh to original with full generate_commands/
    rewrite_paths logic; add kimi case using create_kimi_skills function
  - Restore create-release-packages.ps1 to original with full Generate-Commands/
    Rewrite-Paths logic; add kimi case using New-KimiSkills function
  - Restore create-github-release.sh to original with proper $1 argument
    handling and VERSION_NO_V; add kimi zip entries
  - Add test_ai_help_includes_kimi for consistency with other agents
  - Strengthen test_kimi_in_powershell_validate_set to check ValidateSet

* fix: address second round of PR review comments

  - Add __AGENT__ and {AGENT_SCRIPT} substitutions in create_kimi_skills (bash)
  - Add __AGENT__ and {AGENT_SCRIPT} substitutions in New-KimiSkills (PowerShell)
  - Replace curl|bash Kimi installer with pipx install kimi-cli in post-create.sh

* fix: align kimi skill naming and add extension registrar test

  - Fix install_ai_skills() to use speckit.<cmd> naming for kimi (dot
    separator) instead of speckit-<cmd>, matching /skill:speckit.<cmd>
    invocation convention and packaging scripts
  - Add test_kimi_in_extension_registrar to verify CommandRegistrar.AGENT_CONFIGS
    includes kimi with correct dir and SKILL.md extension

* fix(test): align kimi skill name assertion with dot-separator convention

  test_skills_install_for_all_agents now expects speckit.specify (dot) for
  kimi and speckit-specify (hyphen) for all other agents, matching the
  install_ai_skills() implementation added in the previous commit.

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 07:57:18 -05:00
Dhilip
33e853e9c9 docs: fix broken links in quickstart guide (#1759) (#1797) 2026-03-11 07:51:04 -05:00
Dhilip
929fab5d98 docs: add catalog cli help documentation (#1793) (#1794)
* docs: add catalog cli help documentation (#1793)

* Fix code block formatting in user guide

Corrected code block syntax for CLI commands in user guide.

* Apply suggestions from code review

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-11 06:54:07 -05:00
LifeIsAnAbstraction
56095f06d2 fix: use quiet checkout to avoid exception on git checkout (#1792) 2026-03-10 15:41:27 -05:00
Ben Lawson
2632a0f52d feat(extensions): support .extensionignore to exclude files during install (#1781)
* feat(extensions): support .extensionignore to exclude files during install

Add .extensionignore support so extension authors can exclude files and
folders from being copied when users run 'specify extension add'.

The file uses glob-style patterns (one per line), supports comments (#),
blank lines, trailing-slash directory patterns, and relative path matching.
The .extensionignore file itself is always excluded from the copy.

- Add _load_extensionignore() to ExtensionManager
- Integrate ignore function into shutil.copytree in install_from_directory
- Document .extensionignore in EXTENSION-DEVELOPMENT-GUIDE.md
- Add 6 tests covering all pattern matching scenarios
- Bump version to 0.1.14

* fix(extensions): use pathspec for gitignore-compatible .extensionignore matching

Replace fnmatch with pathspec.GitIgnoreSpec to get proper .gitignore
semantics where * does not cross directory boundaries. This addresses
review feedback on #1781.

Changes:
- Switch from fnmatch to pathspec>=0.12.0 (GitIgnoreSpec.from_lines)
- Normalize backslashes in patterns for cross-platform compatibility
- Distinguish directories from files for trailing-slash patterns
- Update docs to accurately describe supported pattern semantics
- Add edge-case tests: .., absolute paths, empty file, backslashes,
  * vs ** boundary behavior, and ! negation
- Move changelog entry to [Unreleased] section
2026-03-10 12:02:04 -05:00
Adrián Luján Muñoz
4ab91fbadf feat: add Codex support for extension command registration (#1767)
* feat: add Codex support for extension command registration

* test: add codex command registrar mapping check

* test: add codex consistency check to test_agent_config_consistency

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 09:50:42 -05:00
Manfred Riem
5c0bedb410 chore: bump version to 0.2.0 (#1786)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-09 14:54:08 -05:00
Pavel-tabnine
d92798d5b0 fix: sync agent list comments with actual supported agents (#1785)
Several comment and documentation strings were not updated when
Mistral Vibe support was added, leaving them out of sync with the
code. This fixes:
- update-agent-context.sh: add Generic to Supports header comment
- update-agent-context.ps1: add generic to Multi-Agent header comment
- README.md: add Mistral Vibe to CLI tool-check text
2026-03-09 14:34:54 -05:00
Copilot
ee922cbde9 feat(extensions): support multiple active catalogs simultaneously (#1720)
* Initial plan

* feat(extensions): implement multi-catalog stack support

- Add CatalogEntry dataclass to represent catalog entries
- Add get_active_catalogs() reading SPECKIT_CATALOG_URL, project config,
  user config, or built-in default stack (org-approved + community)
- Add _load_catalog_config() to parse .specify/extension-catalogs.yml
- Add _validate_catalog_url() HTTPS validation helper
- Add _fetch_single_catalog() with per-URL caching, backward-compat for DEFAULT_CATALOG_URL
- Add _get_merged_extensions() that merges all catalogs (priority wins on conflict)
- Update search() and get_extension_info() to use merged results
  annotated with _catalog_name and _install_allowed
- Update clear_cache() to also remove per-URL hash cache files
- Add extension_catalogs CLI command to list active catalogs
- Add catalog add/remove sub-commands for .specify/extension-catalogs.yml
- Update extension_add to enforce install_allowed=false policy
- Update extension_search to show source catalog per result
- Update extension_info to show source catalog with install_allowed status
- Add 13 new tests covering catalog stack, merge conflict resolution,
  install_allowed enforcement, and catalog metadata

Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>

* docs: update RFC, user guide, and API reference for multi-catalog support

- RFC: replace FUTURE FEATURE section with full implementation docs,
  add catalog stack resolution order, config file examples, merge
  conflict resolution, and install_allowed behavior
- EXTENSION-USER-GUIDE.md: add multi-catalog section with CLI examples
  for catalogs/catalog-add/catalog-remove, update catalog config docs
- EXTENSION-API-REFERENCE.md: add CatalogEntry class docs, update
  ExtensionCatalog docs with new methods and result annotations,
  add catalog CLI commands (catalogs, catalog add, catalog remove)

Also fix extension_catalogs command to correctly show "Using built-in
default catalog stack" when config file exists but has empty catalogs

Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>

* Potential fix for pull request finding 'Empty except'

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>

* fix: remove extraneous f-string prefixes (ruff F541)

Remove f-prefix from strings with no placeholders in catalog_remove
and extension_search commands.

Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>

* fix: address PR review feedback for multi-catalog support

- Rename 'org-approved' catalog to 'default'
- Move 'catalogs' command to 'catalog list' for consistency
- Add 'description' field to CatalogEntry dataclass
- Add --description option to 'catalog add' CLI command
- Align install_allowed default to False in _load_catalog_config
- Add user-level config detection in catalog list footer
- Fix _load_catalog_config docstring (document ValidationError)
- Fix test isolation for test_search_by_tag, test_search_by_query,
  test_search_verified_only, test_get_extension_info
- Update version to 0.1.14 and CHANGELOG
- Update all docs (RFC, User Guide, API Reference)

* fix: wrap _load_catalog_config() calls in catalog_list with try/except

- Check SPECKIT_CATALOG_URL first (matching get_active_catalogs() resolution order)
- Wrap both _load_catalog_config() calls in try/except ValidationError so a
  malformed config file cannot crash `specify extension catalog list` after
  the active catalogs have already been printed successfully

Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
2026-03-09 14:30:27 -05:00
Pavel-tabnine
1df24f1953 Pavel/add tabnine cli support (#1503)
* feat: add Tabnine CLI agent support

Tabnine CLI is a Gemini fork that uses TOML commands with the
.tabnine/agent/ directory structure and TABNINE.md context files.

Changes:
- Add 'tabnine' to AGENT_CONFIG in __init__.py
- Update release scripts (bash + PowerShell) for TOML command generation
- Update agent context scripts (bash + PowerShell)
- Add to GitHub release packages
- Update README.md and AGENTS.md documentation
- Bump version to 0.1.14
- Add 8 new tests for cross-file consistency

* fix: add missing generic to agent-context script usage string
2026-03-09 14:04:02 -05:00
LADISLAV BIHARI
3033834d64 Add Understanding extension to community catalog (#1778)
* Add Understanding extension to community catalog

31 deterministic requirements quality metrics based on IEEE/ISO standards.
Catches ambiguity, missing testability, and structural issues before implementation.
Includes experimental energy-based ambiguity detection.

Repository: https://github.com/Testimonial/understanding
Commands: scan, validate, energy
Hook: after_tasks validation prompt

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

* Sort README table and catalog entries alphabetically

Move Understanding extension entry between Spec Sync and V-Model
to maintain alphabetical ordering in both files.

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

---------

Co-authored-by: Ladislav Bihari <ladislav.bihari@statsperform.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 10:18:41 -05:00
Ben Lawson
4b00078907 Add ralph extension to community catalog (#1780)
- Extension ID: ralph
- Version: 1.0.0
- Author: Rubiss
- Description: Autonomous implementation loop using AI agent CLI
2026-03-09 10:01:34 -05:00
Lautaro Lubatti
2d72f85790 Update README with project initialization instructions (#1772)
* Update README with project initialization instructions

Added instructions for creating a new project and initializing in an existing project.

* Update README.md with alternative one-time usage command for existing projects

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

* Added --ai option to prevent interactive AI selection

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-09 09:56:49 -05:00
Ismael
855ac838b8 feat: add review extension to community catalog (#1775)
Add spec-kit-review to catalog.community.json
and the Available Community Extensions table in extensions/README.md.

Co-authored-by: Ismael <ismael.jimenez-martinez@bmw.de>
2026-03-09 09:10:59 -05:00
Sharath Satish
a8ec87e3c2 Add fleet extension to community catalog (#1771)
- Extension ID: fleet
- Version: 1.0.0
- Author: sharathsatish
- Description: Orchestrate a full feature lifecycle with human-in-the-loop gates across all SpecKit phases
2026-03-09 08:13:36 -05:00
Gaël
9d6c05ad5b Integration of Mistral vibe support into speckit (#1725)
* Add Mistral Vibe support to Spec Kit

This commit adds comprehensive support for Mistral Vibe as an AI agent in the
Spec Kit project. The integration includes:

- Added Mistral Vibe to AGENT_CONFIG with proper CLI tool configuration
- Updated README.md with Mistral Vibe in supported agents table and examples
- Modified release package scripts to generate Mistral Vibe templates
- Updated both bash and PowerShell agent context update scripts
- Added appropriate CLI help text and documentation

Mistral Vibe is now fully supported with the same level of integration as
other CLI-based agents like Claude Code, Gemini CLI, etc.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>

* Add Mistral Vibe support to Spec Kit

- Added Mistral Vibe (vibe) to AGENT_CONFIG with proper TOML format support
- Updated CLI help text to include vibe as a valid AI assistant option
- Added Mistral Vibe to release scripts with correct .vibe/agents/ directory structure
- Updated agent context scripts (bash and PowerShell) with proper TOML file paths
- Added Mistral Vibe to README.md supported agents table with v2.0 slash command notes
- Used correct argument syntax {{args}} for Mistral Vibe TOML configurations

Mistral Vibe is now fully integrated with the same level of support as other
CLI-based agents like Gemini and Qwen. Users can now use specify init --ai vibe
to create projects with Mistral Vibe support.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>

* Add Vibe templates to GitHub release script

creation of Mistral vibe zip

* Add 'vibe' agent to release package script

* Add 'vibe' to the list of agents in create-release-packages.sh

* chore: bump version to v1.0.1 [skip ci]

* Add generic spec kit templates to release script

* chore: bump version to v1.0.2 [skip ci]

* Update project version to 0.1.5

* Add generic spec kit templates to release script

* Add 'generic' and 'qodercli' to agent list to be aligned

* Update supported agents in update-agent-context.sh to be aligned

* Update README with new AI assistant options to be aligned

* Document --ai-commands-dir option in README to be aligned

Added new option for AI commands directory in README.

* Fix formatting in README.md for init arguments to be aligned

* Update README with AI assistant options to be aligned

Added AI options to specify init arguments in README.

* Fix formatting in README.md for project-name argument

* Update expected agent types in update-agent-context.sh to be aligned

* Update agent types and usage in update-agent-context.ps1 to be aligned

* Add support for generic AI assistant configuration to be aligned

* Fix formatting in __init__.py clean space

* Update AI assistant options in init command to be aligned

* Add 'qodercli' to expected agent types to be aligned

* Remove 'vibe' case from release package script

Removed the 'vibe' case from the create-release-packages script.

* Update README.md

ok for this

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

* Update .github/workflows/scripts/create-release-packages.ps1

ok to commit

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

* Add commands_subdir key to Mistral Vibe configuration

* Rename specify-agents.toml to specify-agents.md

* Update scripts/bash/update-agent-context.sh

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

* Update .github/workflows/scripts/create-release-packages.sh

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

* Update src/specify_cli/__init__.py

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

* Update src/specify_cli/__init__.py

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

* Fix duplicate 'commands_subdir' in vibe configuration

Removed duplicate 'commands_subdir' entries for 'vibe'.

* Add support for 'vibe' command in release script

add an mkdir and generate command

* Change commands_subdir from 'commands' to 'prompts'

* Update README.md

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

* Update update-agent-context.ps1

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

* Update create-release-packages.sh

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

* Update create-release-packages.ps1

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

* Update agent list in update-agent-context.sh

Kiro

---------

Co-authored-by: Lénaïc Huard <lenaic@lhuard.fr>
Co-authored-by: Mistral Vibe <vibe@mistral.ai>
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-03-09 08:05:13 -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
Copilot
71e6b4da4a Add Community Walkthroughs section to README (#1766)
* Initial plan

* Add Community Walkthroughs section to README.md

Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>
2026-03-05 12:55:29 -06:00
Michal Bachorik
ad74334a85 feat(extensions): add Jira Integration to community catalog (#1764)
* feat(extensions): add Jira Integration to community catalog

Adds the spec-kit-jira extension to the community catalog.

## Extension Details
- **Name**: Jira Integration
- **Version**: 2.1.0
- **Repository**: https://github.com/mbachorik/spec-kit-jira

## Features
- Create Jira Epics, Stories, and Issues from spec-kit artifacts
- 3-level hierarchy (Epic → Stories → Tasks) or 2-level mode
- Configurable custom field support
- Status synchronization between local tasks and Jira

## Commands
- `/speckit.jira.specstoissues` - Create Jira hierarchy from spec and tasks
- `/speckit.jira.discover-fields` - Discover Jira custom fields
- `/speckit.jira.sync-status` - Sync task completion to Jira

---
This PR was prepared with the assistance of Claude (Anthropic).

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

* fix: address PR review comments

- Set created_at to catalog submission date (2026-03-05)
- Add Jira Integration to Available Community Extensions table in README

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

---------

Co-authored-by: iamaeroplane <michal.bachorik@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-05 07:21:38 -06:00
Pragya Chaurasia
8c3982d65b Add Azure DevOps Integration extension to community catalog (#1734)
* Add Azure DevOps work item synchronization with handoffs system

* Resolving the comments

* Added details of Azure DevOps extention

* t status
t revert --abort
Revert "Add Azure DevOps work item synchronization with handoffs system"

This reverts commit 39ac7e48d6.

* Update extensions/README.md

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

* Update extensions/catalog.community.json

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

---------

Co-authored-by: pragya247 <pragya@microsoft.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-05 07:11:51 -06:00
layla
13dec1de05 Fix docs: update Antigravity link and add initialization example (#1748)
* Fix docs: update Antigravity link and add initialization example

* Update README.md

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

---------

Co-authored-by: Manfred Riem <15701806+mnriem@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-04 08:29:52 -06: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
Manfred Riem
524affca79 chore: bump version to 0.1.13 (#1746)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-03 16:08:40 -06:00
Medhat Galal
32c6e7f40c feat: add kiro-cli and AGENT_CONFIG consistency coverage (#1690)
* feat: add kiro-cli and AGENT_CONFIG consistency coverage

* fix: address PR feedback for kiro-cli migration

* test: assert init invocation result in --here mode test

* test: capture init result in here-mode command test

* chore: save local unapproved work in progress

* fix: resolve remaining PR1690 review threads

* Update src/specify_cli/__init__.py

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

* test: reduce brittleness in ai help alias assertion

* fix: resolve PR1690 ruff syntax regression

---------

Co-authored-by: Manfred Riem <15701806+mnriem@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-03 12:04:46 -06:00
Ismael
9cf33e81cc feat: add verify extension to community catalog (#1726)
* feat: add verify extension to community catalog

* Add verify to extension readme

---------

Co-authored-by: Ismael <ismael.jimenez-martinez@bmw.de>
2026-03-03 11:21:06 -06:00
Emi
254e9bbdf0 Add Retrospective Extension to community catalog README table (#1741)
* Add retrospective extension to community catalog.

Register the new retrospective extension release so users can discover and install it from the community catalog.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add Retrospective Extension to community catalog

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-03-03 09:59:53 -06:00
Zaheer Uddin
6757c90dbd fix(scripts): add empty description validation and branch checkout error handling (#1559)
* fix(scripts): add empty description validation and branch checkout error handling

Adds two critical improvements to both PowerShell and Bash feature creation scripts:

1. Post-trim validation: Prevents creating features with whitespace-only descriptions
2. Branch checkout error handling: Provides clear error messages when branch
   creation fails (e.g., branch already exists) instead of silently continuing

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

* fix(scripts): use consistent stderr redirection for branch checkout

---------

Co-authored-by: Augment Agent <noreply@augmentcode.com>
2026-03-03 09:42:46 -06:00
Ismael
f6264d4ef4 fix: correct Copilot extension command registration (#1724)
* fix: correct Copilot extension command registration (#copilot)

- Use .agent.md extension for commands in .github/agents/
- Generate companion .prompt.md files in .github/prompts/
- Clean up .prompt.md files on extension removal
- Add tests for Copilot-specific registration behavior

Bumps version to 0.1.7.

* fix: test copilot prompt cleanup via ExtensionManager.remove() instead of manual unlink

---------

Co-authored-by: Ismael <ismael.jimenez-martinez@bmw.de>
2026-03-03 09:03:38 -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
Barry Gervin
bf8fb125ad Add sync extension to community catalog (#1728)
* Add sync extension to community catalog

- Extension ID: sync
- Version: 0.1.0
- Author: bgervin
- Description: Detect and resolve drift between specs and implementation

* fix: use main branch in URLs per Copilot review

* Reorder community extensions table alphabetically

Per Copilot review feedback and EXTENSION-PUBLISHING-GUIDE.md

---------

Co-authored-by: Barry Gervin <bgervin@hotmail.com>
2026-03-03 08:18:18 -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
bfaca2c449 chore: bump version to 0.1.12 (#1737)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-02 13:35:43 -06:00
Manfred Riem
78ed453e38 fix: use RELEASE_PAT so tag push triggers release workflow (#1736) 2026-03-02 13:31:18 -06:00
Manfred Riem
658ab2a38c fix: release-trigger uses release branch + PR instead of direct push to main (#1733)
* fix: use release branch + PR instead of direct push to main

Bypass branch protection rules by pushing version bump to a
chore/release-vX.Y.Z branch, tagging that commit, then opening
an auto PR to merge back into main. The release workflow still
triggers immediately from the tag push.

* fix: remove --label automated from gh pr create (label does not exist)
2026-03-02 13:16:13 -06:00
Manfred Riem
2c41d3627e fix: Split release process to sync pyproject.toml version with git tags (#1732)
* fix: split release process to sync pyproject.toml version with git tags (#1721)

- Split release workflow into two: release-trigger.yml and release.yml
- release-trigger.yml: Updates pyproject.toml, generates changelog from commits, creates tag
- release.yml: Triggered by tag push, builds artifacts, creates GitHub release
- Ensures git tags point to commits with correct version in pyproject.toml
- Auto-generates changelog from commit messages since last tag
- Supports manual version input or auto-increment patch version
- Added simulate-release.sh for local testing without pushing
- Added comprehensive RELEASE-PROCESS.md documentation
- Updated pyproject.toml to v0.1.10 to sync with latest release

This fixes the version mismatch issue where tags pointed to commits with
outdated pyproject.toml versions, preventing confusion when installing from source.

* Update .github/workflows/RELEASE-PROCESS.md

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

* Update .github/workflows/scripts/simulate-release.sh

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

* Update .github/workflows/release.yml

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

* Update .github/workflows/release-trigger.yml

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

* fix: harden release-trigger against shell injection and fix stale docs

- Pass workflow_dispatch version input via env: instead of direct
  interpolation into shell script, preventing potential injection attacks
- Validate version input against strict semver regex before use
- Fix RELEASE-PROCESS.md Option 2 still referencing [Unreleased] section
  handling that no longer exists in the workflow

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-02 12:52:13 -06:00
Fabián Silva
b55d00beed fix: prepend YAML frontmatter to Cursor .mdc files (#1699)
* fix: prepend YAML frontmatter to Cursor .mdc files for auto-inclusion

Cursor IDE requires YAML frontmatter with `alwaysApply: true` in .mdc
rule files for them to be automatically loaded. Without this frontmatter,
users must manually configure glob patterns for the rules to take effect.

This fix adds frontmatter generation to both the bash and PowerShell
update-agent-context scripts, handling three scenarios:
- New .mdc file creation (frontmatter prepended after template processing)
- Existing .mdc file update without frontmatter (frontmatter added)
- Existing .mdc file with frontmatter (no duplication)

Closes #669

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

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

* refactor: address Copilot review suggestions

- Handle CRLF line endings in frontmatter detection (grep '^---' instead
  of '^---$')
- Fix double blank line after frontmatter in PowerShell New-AgentFile
- Remove unused tempfile import from tests
- Add encoding="utf-8" to all open() calls for cross-platform safety

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 08:20:00 -06:00
dependabot[bot]
525eae7f7e chore(deps): bump astral-sh/setup-uv from 6 to 7 (#1709)
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 6 to 7.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](https://github.com/astral-sh/setup-uv/compare/v6...v7)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-27 08:09:43 -06:00
dependabot[bot]
ce7bed4823 chore(deps): bump actions/setup-python from 5 to 6 (#1710)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-27 08:07:19 -06:00
Manfred Riem
61b0637a6d chore: Update outdated GitHub Actions versions (#1706)
Co-authored-by: Padraic Slattery <pgoslatara@gmail.com>
2026-02-26 14:43:22 -06:00
Manfred Riem
56deda7be3 docs: Document dual-catalog system for extensions (#1689)
* docs: Document dual-catalog system for extensions

- Clarify distinction between catalog.json (curated) and catalog.community.json (reference)
- Update EXTENSION-DEVELOPMENT-GUIDE.md to explain community catalog submission
- Update EXTENSION-PUBLISHING-GUIDE.md with dual-catalog workflow
- Update EXTENSION-USER-GUIDE.md with catalog selection guidance
- Expand README.md with comprehensive catalog explanation
- Update RFC-EXTENSION-SYSTEM.md with dual-catalog design and current implementation
- Change GitHub references from statsperform to github
- Add SPECKIT_CATALOG_URL environment variable documentation

This clarifies how organizations can curate their own catalog while
browsing community-contributed extensions for discovery.

* Update extensions/README.md

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

* Update extensions/README.md

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

* Update extensions/README.md

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-25 14:38:56 -06:00
Santosh Bhavani
525cdc17ec Fix version command in documentation (#1685)
Co-authored-by: Santosh Bhavani <sb@mac-mini-i7.local>
2026-02-25 08:20:18 -06:00
dsrednicki
607760e72f Add Cleanup Extension to README (#1678) 2026-02-24 15:50:04 -06:00
Emi
c7ecdfb998 Add retrospective extension to community catalog. (#1681)
Register the new retrospective extension release so users can discover and install it from the community catalog.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 13:56:03 -06:00
dsrednicki
f444ccba3a Add Cleanup Extension to catalog (#1617)
**Repository**: https://github.com/dsrednicki/spec-kit-cleanup
**Version**: 1.0.0
**License**: MIT
**Author**: @dsrednicki

Adds catalog entry for the Cleanup Extension - a post-implementation
quality gate that fixes small issues (scout rule), creates tasks for
medium issues, and generates analysis for large issues.
2026-02-23 13:52:40 -06:00
Manfred Riem
3040d33c31 Fix parameter ordering issues in CLI (#1669)
* chore: bump version to v0.0.6 [skip ci]

* Fix parameter ordering issues in CLI (#1641)

- Add validation to detect when option flags are consumed as values
- Provide clear error messages with helpful hints and examples
- Add 5 comprehensive tests to prevent regressions
- Update CODEOWNERS to @mnriem
- Bump version to 0.1.6 with changelog entry

Fixes: #1641

* Fix ruff linting errors: remove f-string prefix from strings without placeholders

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-23 13:17:08 -06:00
Leonardo Nascimento
6cc61025cb Update V-Model Extension Pack to v0.4.0 (#1665)
- Version: 0.2.0 → 0.4.0
- Commands: 5 → 9 (new: architecture-design, integration-test, module-design, unit-test)
- Download URL: updated to v0.4.0 tag
2026-02-23 13:14:02 -06:00
Emi
c1034f1d9d docs: Fix doc missing step (#1496)
* docs: Fix doc missing step

* docs: Update steps for generating technical plan and defining tasks
2026-02-23 11:40:41 -06:00
Leonardo Nascimento
cee4f26fac Update V-Model Extension Pack to v0.3.0 (#1661)
- Version: 0.2.0 → 0.3.0
- Commands: 5 → 7 (architecture-design, integration-test)
- Download URL updated to v0.3.0 tag
2026-02-23 09:02:24 -06:00
Manfred Riem
6f523ede22 Fix #1658: Add commands_subdir field to support non-standard agent directory structures (#1660)
- Added commands_subdir field to AGENT_CONFIG for all agents
- Updated install_ai_skills() to use commands_subdir instead of hardcoded 'commands'
- Fixed --ai-skills flag for copilot, opencode, windsurf, codex, kilocode, q, and agy
- Bumped version to 0.1.5
- Updated AGENTS.md documentation with new field

Affected agents now correctly locate their command templates:
- copilot: .github/agents/
- opencode: .opencode/command/ (singular)
- windsurf: .windsurf/workflows/
- codex: .codex/prompts/
- kilocode: .kilocode/workflows/
- q: .amazonq/prompts/
- agy: .agent/workflows/

All 51 tests pass.
2026-02-21 08:05:58 -06:00
Manfred Riem
68d1d3a0fc feat: add GitHub issue templates (#1655)
* feat: add issue templates for agent requests, bug reports, feature requests, extension submissions, and configuration

* Update .github/ISSUE_TEMPLATE/config.yml

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

* Update .github/ISSUE_TEMPLATE/agent_request.yml

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

* Update .github/ISSUE_TEMPLATE/config.yml

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

* Update .github/ISSUE_TEMPLATE/bug_report.yml

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

* Update .github/ISSUE_TEMPLATE/feature_request.yml

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-20 17:35:48 -06:00
Leonardo Nascimento
07077d0fc2 Update V-Model Extension Pack to v0.2.0 in community catalog (#1656)
- Version: 0.1.0 → 0.2.0
- Download URL updated to v0.2.0 tag
- Commands: 3 → 5 (added system-design, system-test)
2026-02-20 17:29:58 -06:00
Leonardo Nascimento
aeed11f735 Add V-Model Extension Pack to catalog (#1640)
* Add V-Model Extension Pack to catalog

Second community extension: V-Model paired dev-spec and test-spec
generation with regulatory-grade traceability.

- 3 commands: requirements, acceptance, trace
- Deterministic coverage validation (regex-based, not AI)
- Targets: IEC 62304, ISO 26262, DO-178C, FDA 21 CFR Part 820
- Repository: https://github.com/leocamello/spec-kit-v-model
- Release: v0.1.0

* Fix catalog entry: provides as number, add timestamps and statistics

Address review feedback:
- provides.commands: array → number (3), add hooks (1)
- Add created_at and updated_at timestamps
- Add statistics block (downloads: 0, stars: 0)

* Address review: use catalog.community.json and add extensions README

Per maintainer feedback:
- Revert catalog.json to its original empty state (empty by design)
- Rename catalog.example.json → catalog.community.json
- Replace example entries with real V-Model Extension Pack entry
- Add extensions/README.md with community extensions table
2026-02-20 15:11:51 -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
Manfred Riem
fc3b98ea09 fix: rename Qoder AGENT_CONFIG key from 'qoder' to 'qodercli' to match actual CLI executable (#1651)
* fix: rename Qoder CLI to QoderCLI across scripts and documentation

* Apply suggestion from @Copilot

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

* Apply suggestion from @Copilot

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

* Update .github/workflows/scripts/create-release-packages.ps1

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-20 13:30:16 -06:00
Manfred Riem
6150f1e317 Add generic agent support with customizable command directories (#1639)
- Add --ai generic option for unsupported AI agents (bring your own agent)
- Require --ai-commands-dir to specify where agent reads commands from
- Generate Markdown commands with $ARGUMENTS format (compatible with most agents)
- Rebuild CHANGELOG from GitHub releases (last 10 releases)
- Align version to 0.1.3

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-20 11:05:38 -06:00
Manfred Riem
6fca5d83b2 fix: pin click>=8.1 to prevent Python 3.14/Homebrew env isolation crash (#1648)
* fix: pin click>=8.1 to prevent Python 3.14/Homebrew env isolation failures

Fixes #1631. When uv installs specify-cli on macOS with Homebrew Python
3.14, the virtual environment can fail to fully isolate from the system
site-packages, causing Homebrew's click to be loaded instead of the one
uv installed. If that system click is older than 8.1, it lacks the `ctx`
keyword argument in `ParamType.get_metavar()`, which typer 0.24.0 requires,
resulting in:

  TypeError: ParamType.get_metavar() got an unexpected keyword argument 'ctx'

Adding an explicit `click>=8.1` dependency gives uv a hard constraint so
the correct version is always resolved and installed.

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

* Update CHANGELOG.md

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-20 10:22:16 -06:00
Manfred Riem
465acd9024 fix: include 'src/**' path in release workflow triggers (#1646)
Co-authored-by: Manfred Riem <mnriem@users.noreply.github.com>
2026-02-20 09:46:29 -06:00
dependabot[bot]
04fc3fd1ba chore(deps): bump github/codeql-action from 3 to 4 (#1635)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-19 16:31:23 -06:00
Manfred Riem
24d76b5d92 Add pytest and Python linting (ruff) to CI (#1637)
* feat: add GitHub Actions workflow for testing and linting Python code

* fix: resolve ruff lint errors in specify_cli

- Remove extraneous f-string prefixes (F541)
- Split multi-statement lines (E701, E702)
- Remove unused variable assignments (F841)
- Remove ruff format check from CI workflow (format-only PR to follow)

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

* fix: strip ANSI codes in ai-skills help text test

The Rich/Typer CLI injects ANSI escape codes into option names in
--help output, causing plain string matching to fail.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-19 16:21:58 -06:00
Manfred Riem
0f7d04b12b feat: add pull request template for better contribution guidelines (#1634) 2026-02-19 15:49:34 -06:00
Manfred Riem
9402ebd00a Feat/ai skills (#1632)
* implement ai-skills command line switch

* fix: address review comments, remove breaking change for existing projects, add tests

* fix: review comments

* fix: review comments

* fix: review comments

* fix: review comments

* fix: review comments, add test cases for all the agents

* fix: review comments

* fix: review comments

* chore: trigger CI

* chore: trigger CodeQL

* ci: add CodeQL workflow for code scanning

* ci: add actions language to CodeQL workflow, disable default setup

---------

Co-authored-by: dhilipkumars <s.dhilipkumar@gmail.com>
2026-02-19 13:24:41 -06:00
dependabot[bot]
d410d188fc chore(deps): bump actions/stale from 9 to 10 (#1623)
Bumps [actions/stale](https://github.com/actions/stale) from 9 to 10.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v9...v10)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: '10'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-19 07:41:50 -06:00
Manfred Riem
686c91f94e feat: add dependabot configuration for pip and GitHub Actions updates (#1622) 2026-02-18 17:42:41 -06:00
Manfred Riem
22036732d8 Remove Maintainers section from README.md (#1618) 2026-02-18 16:11:16 -06:00
Laurent Thiebault
c78f8423f6 fix: typo in plan-template.md (#1446) 2026-02-17 07:22:43 -06:00
Hanzhi Yang
76cca34293 Feat: add a new agent: Google Anti Gravity (#1220)
* Add support for Antigravity (agy) agent

* fix a few things after gemini code update

* Fix missed merge conflicts

* As PR states it is IDE integration setting requires_cli to 'False'

---------

Co-authored-by: Manfred Riem <manfred.riem@microsoft.com>
2026-02-12 12:31:48 -06:00
Copilot
9a1e3037b0 Add stale workflow for 180-day inactive issues and PRs (#1594)
* Initial plan

* Add stale issues and PRs workflow

Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>

* Add 7-day grace period before closing stale items

Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>

* Update stale timing: mark at 150 days, close at 180 days

Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com>
2026-02-11 16:03:17 -06:00
Michal Bachorik
f14a47ea7d Add modular extension system (#1551)
* Add modular extension system for Spec Kit

Implement a complete extension system that allows third-party developers
to extend Spec Kit functionality through plugins.

## Core Features
- Extension discovery and loading from local and global directories
- YAML-based extension manifest (extension.yml) with metadata and capabilities
- Command extensions: custom slash commands with markdown templates
- Hook system: pre/post hooks for generate, task, and sync operations
- Extension catalog for discovering and installing community extensions
- SPECKIT_CATALOG_URL environment variable for catalog URL override

## Installation Methods
- Catalog install: `specify extension add <name>`
- URL install: `specify extension add <name> --from <url>`
- Dev install: `specify extension add --dev <path>`

## Implementation
- ExtensionManager class for lifecycle management (load, enable, disable)
- Support for extension dependencies and version constraints
- Configuration layering (global → project → extension)
- Hook conditions for conditional execution

## Documentation
- RFC with design rationale and architecture decisions
- API reference for extension developers
- Development guide with examples
- User guide for installing and managing extensions
- Publishing guide for the extension catalog

## Included
- Extension template for bootstrapping new extensions
- Comprehensive test suite
- Example catalog.json structure

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

* Update Jira extension to v2.1.0 in catalog

Adds 2-level mode support (Epic → Stories only).

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

* Address PR review feedback

- Fix Zip Slip vulnerability in ZIP extraction with path validation
- Fix keep_config option to actually preserve config files on removal
- Add URL validation for SPECKIT_CATALOG_URL (HTTPS required, localhost exception)
- Add security warning when installing from custom URLs (--from flag)
- Empty catalog.json so organizations can ship their own catalogs
- Fix markdown linter errors (MD040: add language to code blocks)
- Remove redundant import and fix unused variables in tests
- Add comment explaining empty except clause for backwards compatibility

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

* Add comprehensive organization catalog customization docs

- Explain why default catalog is empty (org control)
- Document how to create and host custom catalogs
- Add catalog JSON schema reference
- Include use cases: private extensions, curated catalogs, air-gapped environments
- Add examples for combining catalog with direct installation

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

* Fix test assertions for extension system data structures

- Update test_config_backup_on_remove to use new subdirectory structure
  (.backup/test-ext/file.yml instead of .backup/test-ext-file.yml)
- Update test_full_install_and_remove_workflow to handle registered_commands
  being a dict keyed by agent name instead of a flat list

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

* Address Copilot review feedback

- Fix localhost URL check to use parsed.hostname instead of netloc.startswith()
  This correctly handles URLs with ports like localhost:8080
- Fix YAML indentation error in config-template.yml (line 57)
- Fix double space typo in example.md (line 172)

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

* Add catalog.example.json as reference for organizations

The main catalog.json is intentionally empty so organizations can ship
their own curated catalogs. This example file shows the expected schema
and structure for creating organization-specific catalogs.

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

* Address remaining Copilot security and logic review feedback

- Fix Zip Slip vulnerability by using relative_to() for safe path validation
- Add HTTPS validation for extension download URLs
- Backup both *-config.yml and *-config.local.yml files on remove
- Normalize boolean values to lowercase for hook condition comparisons
- Show non-default catalog warning only once per instance

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

* Ignoring linter for extensions directory

---------

Co-authored-by: iamaeroplane <michal.bachorik@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Manfred Riem <manfred.riem@microsoft.com>
2026-02-10 14:27:20 -06:00
Manfred Riem
36d97235ad Fixes #1586 - .specify.specify path error (#1588) 2026-02-10 08:20:39 -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
amuzip
b562438df9 fix: resolve markdownlint errors across documentation (#1571)
- Add language specifiers to fenced code blocks (bash, text)
- Fix whitespace issues around code fences
- Disable MD036 (emphasis as heading) for intentional warning text
- Disable MD060 (table column style) for existing table formats

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-09 08:48:56 -06:00
Den Delimarsky
9111699cd2 Merge pull request #1288 from github/localden/updates
Small QOL updates
2025-12-04 11:58:04 -08:00
den (work)
0049b1cdc2 Update Markdown formatting 2025-12-04 11:55:56 -08:00
den (work)
3e883fa32c Update Markdown formatting 2025-12-04 11:50:36 -08:00
Den Delimarsky
baeb829ed4 Merge pull request #1286 from sdmcraft/docs/add-existing-project-usage
docs: Add existing project initialization to getting started
2025-12-04 11:48:38 -08:00
Satya Deep Maheshwari
236bcb3987 docs: Add existing project initialization to getting started
Add commands for initializing Spec Kit in existing projects directly
in the installation section. Shows both `specify init .` and
`specify init --here` options to make brownfield usage immediately
discoverable.

Fixes #1285
2025-12-04 18:05:07 +05:30
Den Delimarsky
6c3d698959 Merge pull request #1237 from Mearman/fix/branch-number-collision-bug
fix: use global maximum for branch numbering to prevent collisions
2025-12-02 11:05:15 -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
Den Delimarsky
1c7b09d947 Merge pull request #1122 from KUTEJiang/main
feat:support Qoder CLI
2025-12-01 21:40:06 -08:00
Den Delimarsky
3963c2ef10 Merge pull request #1272 from dbirks/embiggen-logo
docs: Switch logo in readme to be the larger one, to be crisper
2025-12-01 21:28:51 -08:00
David Birks
84e1a69edc Limit width and height to 200px to match the small logo 2025-12-01 09:00:39 -05:00
David Birks
6f22393106 docs: Switch readme logo to logo_large.webp 2025-12-01 08:56:45 -05:00
pengjiahan.pjh
5a39f63d1e fix:merge 2025-12-01 21:52:07 +08:00
pengjiahan.pjh
964b1418a3 fix 2025-12-01 21:40:17 +08:00
pengjiahan.pjh
cad12bd2c8 fix 2025-12-01 21:37:02 +08:00
pengjiahan.pjh
8d552e6d11 feat:qoder agent 2025-12-01 21:33:15 +08:00
pengjiahan.pjh
ad3bb1a5fe resolve confilct and add qoder agent 2025-12-01 21:24:56 +08:00
Den Delimarsky
a998d13b73 Merge pull request #1221 from aww-aww/patch-1
Update supported AI agents in README.md
2025-11-26 13:58:43 -08:00
Den Delimarsky
418950ad07 Merge branch 'main' into patch-1 2025-11-26 13:58:20 -08:00
Den Delimarsky
952e2bb5f8 Merge pull request #1238 from anchildress1/docs/issue-906-constitution-quickstart
docs: update quickstart.md
2025-11-26 13:37:43 -08:00
Den Delimarsky
56085f9323 Merge pull request #1133 from vburckhardt/add-ibm-bob-ide
feat: add support for IBM Bob IDE
2025-11-26 12:33:43 -08:00
Joseph Mearman
dadda123f0 Update scripts/bash/create-new-feature.sh
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-25 13:54:29 +00:00
Joseph Mearman
b4e1c07817 fix(scripts): prevent octal interpretation in feature number parsing
When --number 027 was passed, printf '%03d' interpreted it as octal,
converting 027 (octal) to 23 (decimal). Now forces base-10 with 10# prefix.

Bug: User passes --number 027, gets feature 023 instead of 027
Root cause: printf %03d treats leading zeros as octal notation
Fix: Use $((10#$BRANCH_NUMBER)) to force decimal interpretation

Example:
- Before: --number 027 → octal 027 → decimal 23 → feature 023
- After: --number 027 → decimal 27 → feature 027

Note: PowerShell version does not have this bug because [int] type
conversion in PowerShell does not treat leading zeros as octal.
2025-11-25 13:50:25 +00:00
Ashley Childress
bb21eedabc docs: Enhance quickstart guide with admonitions and examples
- Convert blockquotes to GFM admonitions for better visibility
- Add current directory initialization example
- Expand process to 6 steps with clarify, analyze, checklist, implement
- Update example with separate clarify commands
- Add proper links in Next Steps

Fixes #906, #472
Generated-by: GitHub Copilot <github.copilot@github.com>

Signed-off-by: Ashley Childress <6563688+anchildress1@users.noreply.github.com>
2025-11-23 14:48:35 -05:00
Joseph Mearman
f65bf6ccb7 fix: remove unused short_name parameter from branch numbering functions
The check_existing_branches (bash) and Get-NextBranchNumber (PowerShell)
functions no longer use the short_name parameter since they now find the
global maximum across ALL features. This commit:

1. Removes the unused parameter from function signatures
2. Updates all call sites to not pass the parameter

This prevents the scripts from failing when the function is called with
the wrong number of arguments.
2025-11-23 16:21:22 +00:00
Joseph Mearman
a0ca101aa4 Update scripts/powershell/create-new-feature.ps1
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-23 16:12:28 +00:00
Joseph Mearman
bf5ae42085 Update scripts/bash/create-new-feature.sh
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-23 16:12:11 +00:00
Joseph Mearman
33df8976ca fix: use global maximum for branch numbering to prevent collisions
The check_existing_branches (bash) and Get-NextBranchNumber (PowerShell)
functions were only looking for branches/specs matching the SAME short name
when determining the next feature number. This caused collisions where
multiple features could be assigned the same number if they had different
short names.

For example, if feature 023-ci-optimization existed, creating a new feature
with a different short name would incorrectly use 001 instead of 024.

This fix changes both functions to:
1. Use get_highest_from_branches() / Get-HighestNumberFromBranches to find
   the highest number across ALL branches globally
2. Use get_highest_from_specs() / Get-HighestNumberFromSpecs to find the
   highest number across ALL spec directories globally
3. Return the maximum of both + 1

The helper functions already existed but were not being used. This fix
properly utilizes them to ensure features are numbered sequentially
regardless of their short names.

Issue: Branch number collisions when creating features with different names
Impact: Prevents multiple features from sharing the same number prefix
2025-11-23 16:01:56 +00:00
Ashley Childress
41a9fc8859 docs: add constitution step to quickstart guide (fixes #906) 2025-11-23 04:22:21 -05:00
Andy Warner
71a20eb787 Update supported AI agents in README.md
Add Jules and change the table to alphabetical order by agent because the table is likely to grow.
2025-11-19 14:20:21 -07:00
pengjiahan.pjh
798015b537 cancel:test 2025-11-18 22:11:38 +08:00
pengjiahan.pjh
42086045cf test 2025-11-18 22:07:10 +08:00
pengjiahan.pjh
bf6d9e8baf fix:literal bug 2025-11-18 22:02:19 +08:00
pengjiahan.pjh
694de562cc resolve:conflict 2025-11-18 21:47:42 +08:00
luanzhiwow
45d5176d07 fix the incorrect task-template file path 2025-11-17 20:46:43 +08:00
Vincent Burckhardt
537f349f1b feat: add bob to new update-agent-context.ps1 + consistency in comments 2025-11-15 20:49:08 +00:00
Vincent Burckhardt
15139c1e0f chore: merge main into feature branch 2025-11-15 20:23:58 +00:00
Den Delimarsky
f205fa3b58 Merge pull request #1039 from sgillis/fix-cdpath-issue
Unset CDPATH while getting SCRIPT_DIR
2025-11-14 16:39:09 -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
Den Delimarsky
c88d00d452 Merge pull request #1135 from anchildress1/upgrade-spec-kit-docs
docs: Add new docs page covering upgrade for Specify CLI
2025-11-14 16:21:02 -08:00
Den Delimarsky
cf8b67e187 Merge pull request #1134 from eliasto/add-ovhcloud-shai-ai-agent
feat: Add OVHcloud SHAI AI CLI
2025-11-14 16:16:29 -08:00
Den Delimarsky
7c4294b163 Merge pull request #1137 from lshgdut/pr
fix: incorrect logic to create release packages
2025-11-14 15:34:18 -08:00
Den Delimarsky
2f58f4b9f0 Merge pull request #1187 from devantler/fix-tasktoissues-tools
Fix tasktoissues.md to use the 'github/github-mcp-server/issue_write' tool
2025-11-14 15:30:48 -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
7e568c1201 Merge pull request #986 from github/localden/vscode
(feat): Enhancements to Spec Kit
2025-11-14 11:32:21 -08:00
den (work)
f4fcd82920 Merge branch 'localden/vscode' of https://github.com/github/spec-kit into localden/vscode 2025-11-07 13:17:39 -08:00
den (work)
3dcbb6e3a9 Refactor feature script logic and update agent context scripts
Refactored both Bash and PowerShell create-new-feature scripts to modularize and deduplicate logic for determining the next feature number, including new helper functions for extracting the highest number from specs and branches. Improved branch name cleaning and generation. In update-agent-context scripts, removed redundant updates to AGENTS.md for Copilot, streamlining agent update logic.
2025-11-07 13:17:35 -08: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 (work)
24b6d31471 Merge branch 'localden/vscode' of https://github.com/github/spec-kit into localden/vscode 2025-11-07 11:58:31 -08:00
den (work)
960e4c0a32 Update CHANGELOG.md 2025-11-07 11:58:20 -08:00
Den Delimarsky
df15b8e2a2 Merge branch 'main' into localden/vscode 2025-11-07 11:46:55 -08:00
den (work)
161a415274 Update agent configuration 2025-11-07 11:41:54 -08:00
Den Delimarsky
e20d79e78b Update scripts/powershell/create-new-feature.ps1
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-07 11:22:10 -08:00
Den Delimarsky
a26ee578ae Update src/specify_cli/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-07 11:21:57 -08:00
Ashley Childress
d471a6fa42 docs: fix broken link and improve agent reference
- Fix broken constitution.md link in detailed process section
- Add reference to supported AI agents list in upgrade guide

Commit-generated-by: GitHub Copilot <github.copilot@github.com>
Signed-off-by: Ashley Childress <6563688+anchildress1@users.noreply.github.com>
2025-11-06 23:43:16 -05:00
hua
bcd3f8468a fix: incorrect logic to create release packages with subset AGENTS or SCRIPTS 2025-11-07 12:08:40 +08:00
Ashley Childress
d79d99f0a9 docs: reorganize upgrade documentation structure
- Rename docs/upgrading-spec-kit.md to docs/upgrade.md for brevity
- Update README and documentation index links to point to new upgrade guide
- Update table of contents to use shorter "Upgrade" title
- Simplify section headers in upgrade guide
- Add Getting Started section back to docs/index.md with upgrade guide link

Commit-generated-by: GitHub Copilot <github.copilot@github.com>
Signed-off-by: Ashley Childress <6563688+anchildress1@users.noreply.github.com>
2025-11-06 18:01:16 -05:00
Ashley Childress
57c54d3f0a docs: remove related documentation section from upgrading guide
- Remove outdated links section from docs/upgrading-spec-kit.md
- Remove outdated section from README and docs/index

Commit-generated-by: GitHub Copilot <github.copilot@github.com>
Signed-off-by: Ashley Childress <6563688+anchildress1@users.noreply.github.com>
2025-11-06 17:47:21 -05:00
Elias TOURNEUX
e976080cbf feat: Add OVHcloud SHAI AI Agent 2025-11-06 14:09:35 -05:00
Vincent Burckhardt
f438a10c7c feat: add support for IBM Bob IDE 2025-11-06 15:31:11 +00:00
Ashley Childress
3c4081d30f fix: remove broken link to existing project guide
- Remove link to non-existent existing project guide from README

Commit-generated-by: GitHub Copilot <github.copilot@github.com>
Signed-off-by: Ashley Childress <6563688+anchildress1@users.noreply.github.com>
2025-11-05 20:54:39 -05:00
Ashley Childress
392dbf20c4 docs: Add comprehensive upgrading guide for Spec Kit
- Add upgrading-spec-kit.md with detailed upgrade instructions and troubleshooting
- Update table of contents to include upgrading guide in Getting Started section
- Update documentation index and README links
- Address user questions about updating initialized projects from GitHub discussions

Co-authored-by: GitHub Copilot <github.copilot@github.com>
Signed-off-by: Ashley Childress <6563688+anchildress1@users.noreply.github.com>
2025-11-05 20:28:00 -05:00
pengjiahan.pjh
d068e1c040 fix:test 2025-11-05 10:57:56 +08:00
pengjiahan.pjh
0369d2a50e test 2025-11-03 20:05:32 +08:00
pengjiahan.pjh
de2cdc633d fix:qoder url 2025-11-03 16:46:30 +08:00
pengjiahan.pjh
891736ffc8 fix:download owner 2025-11-03 16:43:35 +08:00
pengjiahan.pjh
02015e512a test 2025-11-03 15:12:36 +08:00
pengjiahan.pjh
3110452c3f feat:support Qoder CLI 2025-11-03 14:56:49 +08:00
Dan Washusen
c4638a936e Refactor ESLint configuration checks in implement.md to address deprecation 2025-10-28 09:47:52 +11:00
San Gillis
2a7c2e9398 Unset CDPATH while getting SCRIPT_DIR 2025-10-25 11:34:26 +02:00
Den Delimarsky
e6d6f3cdee Merge pull request #1019 from sigent-amazon/feature/check-remote-branches-for-numbering
Check remote branches to prevent duplicate branch numbers
2025-10-23 10:11:38 -07: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)
f7fe48bd6a Create create-release-packages.ps1 2025-10-22 13:17:14 -07:00
den (work)
d6136cb22f Script changes 2025-10-21 20:53:56 -07:00
den (work)
dafab39483 Update taskstoissues.md 2025-10-21 20:10:21 -07:00
den (work)
09274437fc Merge branch 'localden/vscode' of https://github.com/github/spec-kit into localden/vscode 2025-10-21 20:09:47 -07:00
den (work)
5f1fc6b445 Create taskstoissues.md 2025-10-21 20:09:45 -07:00
Den Delimarsky
779e1f8afd Update src/specify_cli/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-21 19:38:19 -07:00
den (work)
177dcadd8c Update CONTRIBUTING.md 2025-10-21 19:37:50 -07:00
Den Delimarsky
ba861cd165 Merge pull request #1003 from github/main
Sync changes
2025-10-21 19:36:30 -07:00
Den Delimarsky
926836e0fc Merge pull request #1001 from TCoherence/fix/place-short-name-in-the-right-position
fix: make "short-name" argument to be used correctly for create-new-feature.sh
2025-10-21 19:28:25 -07:00
Den Delimarsky
af88930ffc Merge pull request #1002 from harikrishnan83/local_testing_documentation
docs: add steps for testing template and command changes locally
2025-10-21 19:27:48 -07:00
Den Delimarsky
89f5f9c0b9 Update CONTRIBUTING.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-21 19:27:38 -07:00
Hari Krishnan
9809b1a4ab docs: add steps for testing template and command changes locally 2025-10-22 07:42:37 +05:30
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 Delimarsky
7522eb3f9d Potential fix for code scanning alert no. 3: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-10-21 16:56:34 -07:00
Den Delimarsky
d550634d8e Update src/specify_cli/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-21 16:32:29 -07:00
den (work)
72cb885eb7 Update CHANGELOG.md 2025-10-21 16:22:40 -07:00
den (work)
a877af5575 Fixes #970 2025-10-21 16:21:15 -07:00
den (work)
2508d926c0 Fixes #975 2025-10-21 16:11:03 -07:00
Den Delimarsky
9f123e013a Merge pull request #795 from tinesoft/fix/gh-releases
fix: include the latest changelog in the `GitHub Release`'s  body
2025-10-21 16:00:23 -07:00
Den Delimarsky
60bd9dc849 Merge pull request #598 from valdezm/fix/update-agent-context-missing-sections
Fix update-agent-context.sh to handle files without required sections
2025-10-21 15:57:06 -07:00
den (work)
e77d99abd2 Support for version command 2025-10-21 15:54:10 -07:00
Den Delimarsky
eb030dab19 Merge pull request #902 from DFilipeS/main
feat: Added support for Amp code agent.
2025-10-21 15:29:16 -07:00
Den Delimarsky
be06a23fd7 Merge branch 'main' into main 2025-10-21 15:29:08 -07:00
den (work)
d4d3139d5f Exclude generated releases 2025-10-21 15:21:30 -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
79328aa38d Merge pull request #958 from DasBen/feature/add-markdownlint
feat(ci): add markdownlint-cli2 for consistent markdown formatting
2025-10-21 15:06:16 -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)
37e87c78a0 Hand offs with prompts 2025-10-21 14:34:19 -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)
c59be99dc4 Testing hand-offs 2025-10-21 10:35:46 -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
Den Delimarsky
cbc8ab020c Merge pull request #984 from JianfuLi/main
fix: correct command references in analyze.md and implement.md
2025-10-21 10:15:02 -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
Tine Kondo
8de5db7a3e fix: include the latest changelog in the GitHub Release's body 2025-10-19 08:10:35 +00:00
Den Delimarsky
ea90d02c41 Merge pull request #487 from tinesoft/main
chore: add `devcontainer` support  to ease developer workstation setup
2025-10-18 20:28:40 -07:00
Den Delimarsky
3e85f46465 Merge pull request #910 from zidoshare/create-new-feature
fix: correct argument parsing in create-new-feature.sh script
2025-10-18 20:04:53 -07:00
Den Delimarsky
015440838a Merge branch 'main' into create-new-feature 2025-10-18 20:04:37 -07:00
Den Delimarsky
7050a3151c Merge pull request #918 from wfongcn/patch-1
Change loop condition to include last argument
2025-10-18 20:03:39 -07:00
Den Delimarsky
9e84f46e56 Merge pull request #929 from isdaniel/fix/ide-agent-cli-checks
fix: Skip CLI checks for IDE-based agents in check command
2025-10-18 20:03:14 -07:00
Den Delimarsky
5e32de1f3f Merge pull request #904 from zidoshare/main
Fix: incorrect command formatting in agent context file, refix #895
2025-10-18 18:32:51 -07:00
Den Delimarsky
5558b24475 Merge pull request #934 from JackieQi/main
fix: broken media files
2025-10-18 18:30:19 -07:00
Jackie Qi
f892b9e1cb fix: broken media files 2025-10-17 13:04:27 -07:00
Den Delimarsky
a66af9b7f5 Merge pull request #914 from isdaniel/smart-merge-settings.json
Smart JSON Merging for VS Code Settings `.vscode/settings.json`
2025-10-17 10:42:29 -07:00
Den Delimarsky
a5fdd53a3e Merge pull request #930 from lutzroeder/main
Update README.md
2025-10-17 10:39:29 -07:00
Lutz Roeder
ed0fa8fffe Update README.md 2025-10-17 10:25:36 -07:00
danielshih
098380a46f fix: Skip CLI checks for IDE-based agents in check command
- Add requires_cli field handling to check() command
- IDE-based agents (copilot, cursor-agent, windsurf, kilocode, roo) now properly skip CLI checks
- Prevents false errors when checking for IDE-integrated agents that don't require CLI tools
2025-10-17 23:53:47 +08:00
Peter Wang
74f7e508a4 Change loop condition to include last argument
The last argument is not processed. 
e.g. create-new-feature.sh -h doesn't show the help information.
2025-10-17 09:03:47 +08:00
danielshih
8130d98bcc The function parameters lack type hints. Consider adding type annotations for better code clarity and IDE support. 2025-10-17 00:24:28 +08:00
danielshih
315269d9a8 - **Smart JSON Merging for VS Code Settings**: .vscode/settings.json is now intelligently merged instead of being overwritten during specify init --here or specify init .
- Existing settings are preserved
  - New Spec Kit settings are added
  - Nested objects are merged recursively
  - Prevents accidental loss of custom VS Code workspace configurations
2025-10-17 00:16:04 +08:00
Tine Kondo
71c2c63d55 chore: replace bun by node/npm in the devcontainer (as many CLI-based agents actually require a node runtime) 2025-10-16 15:05:05 +00:00
hongxuww
b37a9516d0 fix: correct argument parsing in create-new-feature.sh script
Fix two critical bugs in the argument parsing logic that caused incorrect
behavior when --short-name parameter was used:

1. **Index offset bug**: The loop started at i=0 and used i < $#, which
   incorrectly processed $0 (script name) as the first argument and
   skipped the last actual parameter. Changed to i=1 and i <= $# to
   properly iterate through actual command-line arguments ($1 to $#).

2. **Boundary condition bug**: The condition `[ $((i + 1)) -ge $# ]`
   incorrectly flagged valid arguments as missing. When --short-name was
   at position $#-1, the next position $# was valid but treated as
   out-of-bounds. Changed to `[ $((i + 1)) -gt $# ]` for correct validation.

3. **Enhanced validation**: Added check to ensure --short-name value is
   not another option (doesn't start with --).

**Before**:
- `script --json "desc" --short-name "test"` → Error: requires a value
- `script --json "desc1" "desc2" --short-name` → Generated wrong branch name

**After**:
- `script --json "desc" --short-name "test"` → Works correctly
- `script --json "desc1" "desc2" --short-name` → Proper error message

This ensures the script correctly supports both parameter orders:
- `[--json] [--short-name <name>] <feature_description>`
- `[--json] <feature_description> [--short-name <name>]`
2025-10-16 10:02:53 +00:00
Tine Kondo
b009773d5c chore: add Claude Code extension to devcontainer configuration 2025-10-16 09:43:00 +00:00
Tine Kondo
a8514da3e8 chore: add installation of codebuddy CLI in the devcontainer 2025-10-16 10:15:41 +02:00
Tine Kondo
9d4e8e9eb9 chore: fix path to powershell script in vscode settings 2025-10-16 10:15:41 +02:00
Tine Kondo
f3c77e2f4f fix: correct run_command exit behavior and improve installation instructions (for Amazon Q) in post-create.sh + fix typos in CONTRIBUTING.md 2025-10-16 10:15:40 +02:00
Tine Kondo
ecec4bc5e0 chore: add specify's github copilot chat settings to devcontainer 2025-10-16 10:15:40 +02:00
Tine Kondo
900bc2ed68 chore: add devcontainer support to ease developer workstation setup
Fixes #466
2025-10-16 10:15:40 +02:00
hongxuww
03c7021270 Fix: incorrect command formatting in agent context file, refix #895 2025-10-16 02:11:48 +00:00
Daniel Silva
a97374ded0 Fixed indentation. 2025-10-15 22:43:37 +01:00
Daniel Silva
6b58824a39 Added correct install_url for Amp agent CLI script. 2025-10-15 22:41:48 +01:00
Daniel Silva
b291a6efb0 Added support for Amp code agent. 2025-10-15 22:17:48 +01: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
Den Delimarsky
c59595d065 Merge pull request #897 from isdaniel/add-more-lang
Support more lang of Common Patterns by Technology
2025-10-15 10:56:08 -07:00
Den Delimarsky
1c16a68df2 Merge pull request #766 from thenets/use-the-number-prefix-to-find-the-right-spec
Use the number prefix to find the right spec
2025-10-15 10:55:33 -07:00
Den Delimarsky
39bf3e4d9a Merge pull request #894 from tennc/main
update codebuddy to codebuddy cli
2025-10-15 10:52:25 -07:00
Den Delimarsky
045696641a Merge pull request #895 from zidoshare/main
Fix: incorrect command formatting in agent context file
2025-10-15 10:51:34 -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
hongxuww
8c9e586662 Fix: Fix incorrect command formatting in agent context file
The issue is that `sed` treats `&&` as a placeholder instead of a regular character. So in the CLAUDE.md file's "Commands" section, it incorrectly shows:

`npm test [ONLY COMMANDS FOR ACTIVE TECHNOLOGIES][ONLY COMMANDS FOR ACTIVE TECHNOLOGIES] npm run lint`

instead of the correct:

`npm test && npm run lint`
2025-10-15 14:04:22 +00:00
root
ce844c6259 Update CodeBuddy agent name to 'CodeBuddy CLI' 2025-10-15 21:52:59 +08:00
root
84b46cd1b9 Rename CodeBuddy to CodeBuddy CLI in update script 2025-10-15 21:50:11 +08:00
root
0cca67fcd2 Update AI coding agent references in installation guide 2025-10-15 21:47:36 +08:00
root
66fc4c292d Rename CodeBuddy to CodeBuddy CLI in AGENTS.md 2025-10-15 21:42:08 +08:00
root
2baae57b26 Update README.md 2025-10-15 21:38:16 +08:00
root
514b0548fe Update CodeBuddy link in README.md 2025-10-15 21:36:01 +08:00
root
be7db635cc update codebuddyCli 2025-10-15 21:34:40 +08:00
Den Delimarsky
a945077b8d Update scripts/bash/create-new-feature.sh
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 23:39:50 -07:00
Den Delimarsky
7b55522213 Merge pull request #886 from jarrensj/docs/fix-heading-capitalization-consistency
docs: fix heading capitalization for consistency
2025-10-14 23:39:23 -07:00
Jarren San Jose
7ca792509b docs: fix heading capitalization for consistency 2025-10-14 18:48:47 -07:00
den (work)
4522fb4c44 Update create-new-feature.sh 2025-10-14 11:54:48 -07:00
den (work)
36ff7e6505 Update files 2025-10-14 11:52:26 -07:00
den (work)
defb1870da Update files 2025-10-14 11:47:00 -07:00
den (work)
b61f04c898 Create .gitattributes 2025-10-14 11:43:51 -07:00
den (work)
64745162df Update wording 2025-10-14 11:28:47 -07:00
den (work)
97df98b9a0 Update logic for arguments 2025-10-14 11:03:57 -07:00
den (work)
36383b411f Update script logic 2025-10-14 10:55:54 -07:00
den (work)
3e476c2ba6 Update README.md 2025-10-14 10:38:40 -07:00
den (work)
654a00aac9 Update tasks.md 2025-10-14 10:33:58 -07:00
Den Delimarsky
4690d13f88 Merge pull request #868 from benzyc/patch-1
Update README.md
2025-10-14 07:36:05 -07:00
Den Delimarsky
e7bb98de42 Merge pull request #873 from zidoshare/main
fix: update CODEBUDDY file path in agent context scripts
2025-10-14 07:35:13 -07:00
hongxuww
d4f5c75519 fix: update CODEBUDDY file path in agent context scripts 2025-10-14 09:30:43 +00:00
benzyc
09f57a87fa Update README.md
Currently spec-kit is compatible with windows directly, therefore change the prerequisites from Linux/masos to linux/macos/windows.

This is quite important for windows users
2025-10-14 09:59:27 +08:00
Den Delimarsky
b702fcbbc0 Merge pull request #861 from uberspeck/docs/add-speckit-tasks-step
docs: add /speckit.tasks walkthrough step
2025-10-13 17:47:36 -07:00
Brian Campbell
2c1de4202e docs(readme): add /speckit.tasks step and renumber walkthrough 2025-10-13 10:18:08 -06:00
Den Delimarsky
e65660ffc3 Merge pull request #831 from ben-edgar/bugfix/cursor-package-name-update
fix: align Cursor agent naming to use 'cursor-agent' consistently
2025-10-11 09:05:49 -07:00
Ben Greene
f7ae5781b7 A few more places to update from code review 2025-10-10 21:12:06 -04:00
Ben Greene
d09552fc63 fix: align Cursor agent naming to use 'cursor-agent' consistently
The Python CLI was configured to use "cursor-agent" as the agent key in
AGENT_CONFIG, causing it to search for release packages with the pattern
"spec-kit-template-cursor-agent-sh-*.zip". However, the release build
scripts were generating packages named "spec-kit-template-cursor-sh-*.zip",
resulting in a mismatch that prevented successful template downloads.

This commit updates the release scripts to use "cursor-agent" consistently
throughout, aligning with the AGENT_CONFIG key and the documented best
practice of using actual CLI tool names as dictionary keys.

Changes:
- Update ALL_AGENTS array in create-release-packages.sh
- Update case statement for cursor-agent in build_variant()
- Update release asset paths in create-github-release.sh
- Update documentation in README.md and AGENTS.md to reflect correct usage

This ensures that `specify init --ai cursor-agent` correctly finds and
downloads the matching release package from GitHub.

Fixes the bug where cursor-agent initialization would fail with "No matching
release asset found" error.

**Written with the help of a cursor agent**
2025-10-10 20:43:20 -04:00
Den Delimarsky
ed5dbf197f Merge pull request #828 from github/localden/updates
Update clarify.md
2025-10-10 13:19:10 -07:00
den (work)
df4d7fa062 Update clarify.md 2025-10-10 13:09:11 -07:00
Den Delimarsky
b4ecd14ffa Merge pull request #800 from technoch1ef/patch-1
feat: add documentation for upgrading specify installation
2025-10-10 13:03:59 -07:00
Den Delimarsky
26fde7cfda Merge pull request #827 from github/localden/updates
Update vscode-settings.json
2025-10-10 12:30:16 -07:00
den (work)
8abc812c57 Update vscode-settings.json 2025-10-10 12:29:46 -07:00
Den Delimarsky
940714df0a Merge pull request #826 from github/localden/updates
Hot Fix
2025-10-10 11:58:36 -07:00
den (work)
f393ae9825 Update instructions and bug fix 2025-10-10 11:58:10 -07:00
Den Delimarsky
97dee3e4bf Merge pull request #825 from github/localden/updates
Spec Kit Updates (0.0.19)
2025-10-10 11:50:47 -07:00
den (work)
aec568949c Update __init__.py 2025-10-10 11:49:51 -07:00
den (work)
ed9044345b Consolidate Cursor naming 2025-10-10 11:45:51 -07:00
den (work)
058ee510a7 Update CHANGELOG.md 2025-10-10 11:35:48 -07:00
den (work)
e91aca54ee Git errors are now highlighted. 2025-10-10 11:35:05 -07:00
den (work)
9c87fdd5bb Update __init__.py 2025-10-10 11:22:57 -07:00
den (work)
301a556110 Merge branch 'localden/updates' of https://github.com/github/spec-kit into localden/updates 2025-10-10 11:15:22 -07:00
den (work)
bb9ec8e638 Refactor agent configuration 2025-10-10 11:12:54 -07:00
Den Delimarsky
e83d2c777d Update src/specify_cli/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-10 11:07:45 -07:00
Den Delimarsky
68809bdacb Update scripts/powershell/update-agent-context.ps1
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-10 11:07:21 -07:00
Den Delimarsky
3cc545243b Update AGENTS.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-10 11:07:12 -07:00
Den Delimarsky
9ef389baba Update templates/commands/implement.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-10 11:05:38 -07:00
Den Delimarsky
426ac8ab2e Update templates/commands/implement.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-10 11:05:16 -07:00
den (work)
4de1b6b6c3 Merge branch 'localden/updates' of https://github.com/github/spec-kit into localden/updates 2025-10-10 11:04:28 -07:00
den (work)
199c63901f Update CHANGELOG.md 2025-10-10 11:04:25 -07:00
Den Delimarsky
369ed643d7 Merge pull request #462 from lispking/codebuddy
feat: support codebuddy ai
2025-10-10 11:04:10 -07:00
Den Delimarsky
6c947cc8d8 Merge branch 'main' into codebuddy 2025-10-10 11:03:13 -07:00
den (work)
07d506feb5 Update changelog 2025-10-10 10:53:21 -07:00
Den Delimarsky
0124a0f32e Merge pull request #816 from sigent-amazon/feature/add-ignore-file-verification
Add ignore file(s) verification step to /speckit.implement command
2025-10-10 10:51:48 -07:00
Den Delimarsky
e7936c3fd0 Merge pull request #808 from hsin19/feature/escape-toml-backslashes
fix: correctly escape backslashes in TOML slash command outputs
2025-10-10 10:47:26 -07:00
den (work)
583d556677 Update plan.md 2025-10-10 10:43:31 -07:00
Simon Gent
72ed39d8a1 Add ignore file verification step to /speckit.implement command
- Added step 4 for project setup verification
- Detects and creates/verifies ignore files based on project setup
- Includes patterns for .gitignore, .dockerignore, .eslintignore, .prettierignore, .npmignore, .terraformignore, .helmignore
- Provides technology-specific patterns (Node.js, Python, Java, C#/.NET, Go)
- Includes tool-specific patterns (Docker, ESLint, Prettier, Terraform)
- Renumbered subsequent steps 5-9
2025-10-10 10:11:06 +01:00
Eric Yeh
7c4c1edd85 Escape backslashes in TOML outputs 2025-10-10 06:09:38 +08:00
Oleksandr Ovcharov
5846a38c68 add how to upgrade specify installation 2025-10-09 16:19:36 +02:00
Den Delimarsky
89f4b0b38a Merge pull request #784 from outp1/escape-quotes
Add escaping guidelines to command templates #783
2025-10-08 09:39:34 -07:00
Daniil Sobolev
af2b14e9be Add escaping guidelines to command templates 2025-10-08 18:00:14 +03:00
den (work)
719ba762bc Update README.md 2025-10-07 17:07:25 -07:00
den (work)
d4cce17f66 Update README.md 2025-10-07 17:05:15 -07:00
Luiz Costa
47e5f7c2e2 Use the number prefix to find the right spec 2025-10-07 06:45:25 -03:00
Den Delimarsky
ec782979f0 Merge pull request #734 from github/localden/checkpoints
Spec Kit Refactor - Simplification
2025-10-06 22:18:36 -07:00
den (work)
2ab6e6590f Update CHANGELOG.md 2025-10-06 22:17:27 -07:00
den (work)
15e5572a1d Update command reference 2025-10-06 22:16:48 -07:00
den (work)
cde400f466 Package up VS Code settings for Copilot 2025-10-06 22:07:39 -07:00
den (work)
ba8144da89 Update tasks-template.md 2025-10-06 21:33:06 -07:00
Den Delimarsky
4dc4887134 Update templates/tasks-template.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-06 21:27:26 -07:00
den (work)
14ebde575f Cleanup 2025-10-06 21:26:07 -07:00
den (work)
337e192abd Update CLI changes 2025-10-06 21:20:09 -07:00
Den Delimarsky
efe4edc3b1 Merge pull request #763 from github/main
Sync changes
2025-10-06 21:17:31 -07:00
den (work)
0037a3f484 Update template and docs 2025-10-06 21:11:52 -07:00
den (work)
a6be9bea31 Update checklist.md 2025-10-05 22:55:34 -07:00
Den Delimarsky
e71ebbce1e Merge pull request #696 from emanuelturis/patch-1
Remove Codex named args limitation warnings from docs and cli
2025-10-05 22:13:20 -07:00
Den Delimarsky
4c62cab033 Merge branch 'main' into patch-1 2025-10-05 22:13:02 -07:00
Den Delimarsky
80b2544396 Merge pull request #748 from korakot/patch-1
Codex CLI is now fully supported
2025-10-05 22:11:21 -07:00
den (work)
78638a9a37 Update templates 2025-10-05 22:10:47 -07:00
den (work)
5333409080 Cleanup redundancies 2025-10-05 19:59:17 -07:00
den (work)
08b2a0ae55 Update checklist.md 2025-10-05 19:29:46 -07:00
Korakot Chaovavanich
b06f2b9f89 Codex CLI is now fully supported 2025-10-06 07:14:58 +07:00
den (work)
9e0db01b6e Update specify.md 2025-10-03 22:56:12 -07:00
den (work)
917f271d74 Prompt updates 2025-10-03 22:25:18 -07:00
den (work)
00fe1bb5a9 Merge branch 'localden/checkpoints' of https://github.com/github/spec-kit into localden/checkpoints 2025-10-03 21:42:38 -07:00
den (work)
5499d157ab Update prompt prefix 2025-10-03 21:42:25 -07:00
Den Delimarsky
83dcb4a2f5 Update .github/workflows/scripts/create-release-packages.sh
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-03 21:33:45 -07:00
den (work)
8374777206 Consistency updates to commands 2025-10-03 21:31:58 -07:00
den (work)
a172e4cb6e Update commands. 2025-10-03 19:30:15 -07:00
den (work)
265534c5ad Update logs 2025-10-03 17:18:01 -07:00
den (work)
5042c76558 Template cleanup and reorganization 2025-10-03 17:08:14 -07:00
Emanuel Turis
e81c3b3c8d Merge branch 'main' into patch-1 2025-10-03 16:35:04 +03:00
Emanuel Turis
75df2999f4 Remove Codex named args limitation warning 2025-10-03 16:31:36 +03:00
Den Delimarsky
23e0c5c83c Merge pull request #695 from briananderson1222/q-agent
Amazon Q Developer CLI Integration
2025-10-02 20:41:01 -07:00
Emanuel Turis
3ee225f624 Remove Codex named args limitation from README.md 2025-10-01 12:09:41 +03:00
Brian Anderson
12b823e4c2 docs(readme): link Amazon Q slash command limitation issue 2025-10-01 02:57:40 -06:00
Brian Anderson
f430138895 docs: clarify Amazon Q limitation and update init docstring 2025-10-01 02:57:38 -06:00
Brian Anderson
7fa0cc5e70 Merge branch 'github:main' into q-agent 2025-10-01 02:33:10 -06:00
Den Delimarsky
e3b456c4c8 Merge pull request #547 from stenyin/main
Add UTF-8 encoding to file operations in update-agent-context.ps1
2025-09-30 17:05:24 -07:00
Den Delimarsky
e04175b51e Merge pull request #686 from Charca/patch-1
Update URLs to Contributing and Support Guides in Docs
2025-09-30 17:04:46 -07:00
Maxi Ferreira
cc75a22e45 Update URLs to Contributing and Support Guides in Docs
## Problem

The links to the contributing and support guides at the bottom of [the docs site home page](https://github.github.com/spec-kit/index.html) currently take you to a 404 page.

## Solution

Update the links to the correct URLs, pointing to the guides that are currently in the repo's root directory rather than within the `docs` folder.
2025-09-30 11:11:41 -07:00
stenyin
b2f749ef41 fix: add UTF-8 encoding to file read/write operations in update-agent-context.ps1 2025-09-28 05:48:24 +08:00
Brian Anderson
de1db34b08 feat(agent): Added Amazon Q Developer CLI Integration 2025-09-25 21:13:26 -06:00
King
aa599b8af1 Merge branch 'main' into codebuddy 2025-09-26 09:12:09 +08:00
Mark
09cf4f6cc4 Fix update-agent-context.sh to handle files without Active Technologies/Recent Changes sections
- Add section detection logic to check if required sections exist
- Automatically append missing sections at end of file if they don't exist
- Preserve existing manually-created content in agent files
- Fix bash syntax errors in grep command handling
- Improve robustness for files that don't follow template structure

This fixes an issue where the script would silently fail to update agent files
like CLAUDE.md that were manually created with different section structures.
2025-09-25 14:43:57 -07:00
den (work)
321edbc62e Update __init__.py 2025-09-25 14:05:15 -07:00
Den Delimarsky
fadd250a98 Merge pull request #568 from shyn/main
feat: Add emacs-style up/down keys
2025-09-25 12:53:47 -07:00
Den Delimarsky
9ff9c9fd8d Merge pull request #570 from brunoborges/specify_init_period
feat: support 'specify init .' for current directory initialization
2025-09-25 12:50:17 -07:00
Den Delimarsky
45f04abd38 Merge pull request #573 from tinesoft/fix/docs
docs: fix the paths of generated files (moved under a `.specify/` fol…
2025-09-25 12:40:19 -07:00
Den Delimarsky
1c0e7d14d5 Merge pull request #563 from danwashusen/plan-project-structure-fix
Refined wording in `plan-template.md` to ensure the Source Code section consistently works
2025-09-25 12:39:14 -07:00
Den Delimarsky
55555eb39e Merge pull request #590 from github/cli-fix
Spec Kit Updates
2025-09-25 12:28:51 -07:00
den (work)
6f3e450cd8 Update CONTRIBUTING.md 2025-09-25 12:27:37 -07:00
Bruno Borges
8bbacd4adb Update src/specify_cli/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-25 11:16:05 -07:00
Tine Kondo
6a3e81f813 docs: fix the paths of generated files (moved under a .specify/ folder) 2025-09-25 10:05:08 +02:00
Bruno Borges
eb3c63fe0f Update src/specify_cli/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-24 23:22:15 -07:00
Bruno Borges
68eba52a40 feat: support 'specify init .' for current directory initialization
Adds '.' as shorthand equivalent to --here flag while maintaining
full backward compatibility. Updates documentation and bumps to v0.0.18.
2025-09-24 22:41:50 -07:00
shyn
721ecc9bec feat: Add emacs-style up/down keys
get up/down with ctrl+p/n for emacs-keybinding convention
2025-09-25 13:23:38 +08:00
Dan Washusen
df3e4930cc Refine plan-template.md with improved project type detection, clarified structure decision process, and enhanced research task guidance. 2025-09-25 10:10:30 +10:00
Den Delimarsky
f3d55cff84 Merge pull request #546 from danyow/main
fix /specify command
2025-09-24 12:05:11 -07:00
danyow
c6051a0b8a Merge pull request #2 from danyow/patch-2
Update template path for spec file creation
2025-09-24 21:34:10 +08:00
danyow
04cb5f00d4 Merge pull request #1 from danyow/patch-1
Update template path for spec file creation
2025-09-24 21:33:17 +08:00
danyow
e924a73625 Update template path for spec file creation 2025-09-24 21:31:37 +08:00
danyow
e642acaea4 Update template path for spec file creation 2025-09-24 21:30:22 +08:00
Den Delimarsky 🌺
f1ddf33ac4 Update __init__.py 2025-09-23 18:29:15 -07:00
Den Delimarsky
f1063321c6 Merge pull request #502 from amondnet/docs-remove-constitution_update_checklist
docs: remove constitution_update_checklist from README
2025-09-23 13:48:48 -07:00
Minsu Lee
62f20c601c docs: remove constitution_update_checklist from README 2025-09-23 12:09:19 +00:00
Den Delimarsky
26645103a6 Merge pull request #491 from github/quizme
Update with extra commands
2025-09-22 21:15:56 -07:00
Den Delimarsky 🌺
a4b86f7571 Merge branch 'quizme' of https://github.com/github/spec-kit into quizme 2025-09-22 21:14:53 -07:00
Den Delimarsky 🌺
adc1417b0f Update analyze.md 2025-09-22 21:14:39 -07:00
Den Delimarsky
c4698b623b Update templates/commands/analyze.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-22 21:12:51 -07:00
Den Delimarsky
2c373aa47a Update templates/commands/clarify.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-22 21:12:36 -07:00
Den Delimarsky
a0faa222c8 Update templates/commands/plan.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-22 21:12:27 -07:00
King
2b2f5a7c2a Merge branch 'main' into codebuddy 2025-09-23 12:00:46 +08:00
Den Delimarsky 🌺
c7b61f4bfd Update with extra commands 2025-09-22 19:35:45 -07:00
Den Delimarsky
bc101a4578 Merge pull request #485 from github/force-arg
Update with --force flag
2025-09-22 14:45:56 -07:00
den (work)
9319f0425e Update with --force flag 2025-09-22 14:45:35 -07:00
lispking
8b09559690 update CodeBuddy to international site 2025-09-23 05:22:35 +08:00
Den Delimarsky
5d764e8364 Merge pull request #477 from spboyer/fix/add-uv-tool-install-instructions
Add uv tool install instructions to README
2025-09-22 09:20:04 -07:00
Shayne Boyer
1db65aa6aa feat: add uv tool install instructions to README
- Add persistent installation option using 'uv tool install'
- Keep existing 'uvx' one-time usage option
- Add benefits section explaining advantages of persistent installation
- Reorganize installation section with clear option headers

Fixes #476
2025-09-22 11:08:25 -04:00
lispking
318b76de50 feat: support codebuddy ai 2025-09-22 14:34:43 +08:00
King
a85fdd4051 Merge branch 'main' into codebuddy 2025-09-22 14:23:00 +08:00
lispking
92621bca7d feat: support codebuddy ai 2025-09-22 14:20:31 +08:00
Den Delimarsky 🌺
9348c45f9e Update with Roo Code support 2025-09-21 19:56:17 -07:00
Den Delimarsky 🌺
ad746ce35d Update generate-release-notes.sh 2025-09-21 13:16:15 -07:00
Den Delimarsky 🌺
14ac43ba41 Update error messages 2025-09-21 13:12:49 -07:00
Den Delimarsky 🌺
0857f83de8 Auggie folder fix 2025-09-21 13:01:04 -07:00
Den Delimarsky
18236f27d6 Merge pull request #451 from github/spec-kit-vnext
Spec Kit Improvements
2025-09-21 12:56:11 -07:00
Den Delimarsky
974347c758 Update scripts/powershell/update-agent-context.ps1
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-21 12:55:46 -07:00
Den Delimarsky
e9aed2da44 Update templates/commands/implement.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-21 12:53:52 -07:00
Den Delimarsky 🌺
ecf1757672 Cleanup the check command 2025-09-21 12:53:35 -07:00
Den Delimarsky 🌺
ceba130e52 Add support for Auggie 2025-09-21 12:48:58 -07:00
Den Delimarsky 🌺
494cdede53 Update AGENTS.md 2025-09-21 12:32:45 -07:00
Den Delimarsky 🌺
bc896086f1 Merge branch 'spec-kit-vnext' of https://github.com/github/spec-kit into spec-kit-vnext 2025-09-21 12:32:19 -07:00
Den Delimarsky 🌺
dceb903804 Updates with Kilo Code support 2025-09-21 12:32:16 -07:00
Den Delimarsky
39b33ebd22 Update README.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-21 11:52:10 -07:00
Den Delimarsky
ef05d4846a Update templates/commands/constitution.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-21 11:51:54 -07:00
Den Delimarsky
026aa69aad Update templates/commands/implement.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-21 11:51:46 -07:00
Den Delimarsky
ebf53e10b3 Update templates/commands/plan.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-21 11:51:40 -07:00
Den Delimarsky
713af3c314 Update templates/commands/specify.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-21 11:51:32 -07:00
Den Delimarsky
33652bf143 Update templates/commands/tasks.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-21 11:51:24 -07:00
Den Delimarsky 🌺
cef4e8f495 Update README.md 2025-09-21 11:45:33 -07:00
Den Delimarsky 🌺
86aaf2daed Stop splitting the warning over multiple lines 2025-09-21 11:42:22 -07:00
Den Delimarsky 🌺
c65b0fbb62 Update templates based on #419 2025-09-21 11:38:04 -07:00
Den Delimarsky
385d17c83c Merge pull request #441 from Lucien-Liu/update-readme-check-command
docs: Update README for codex in check command and --ai option
2025-09-21 01:52:33 -07:00
Den Delimarsky
1a84b4b23c Merge pull request #406 from github/consolidate-scripts
Update for better maintainability
2025-09-21 01:48:33 -07:00
Den Delimarsky
b03bba37ce Update scripts/powershell/check-prerequisites.ps1
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-21 01:48:21 -07:00
Den Delimarsky 🌺
2d89075106 Update CHANGELOG.md 2025-09-21 01:28:59 -07:00
Den Delimarsky 🌺
a810b1bd1a Update CHANGELOG.md 2025-09-21 01:28:31 -07:00
Den Delimarsky 🌺
5243137f25 Update changelog 2025-09-21 01:28:23 -07:00
lucien
8c4f348ac1 docs: Update README with codex in check command 2025-09-21 16:15:11 +08:00
Den Delimarsky
0e49e79610 Update scripts/bash/update-agent-context.sh
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-21 00:52:35 -07:00
Den Delimarsky 🌺
93e41567d9 Fix script config 2025-09-21 00:51:56 -07:00
Den Delimarsky
da60d35bc1 Update scripts/bash/common.sh
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-21 00:46:22 -07:00
Den Delimarsky
84b61bcd20 Update scripts/powershell/update-agent-context.ps1
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-21 00:45:49 -07:00
Den Delimarsky
0672bfc6aa Update scripts/powershell/update-agent-context.ps1
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-21 00:45:31 -07:00
Den Delimarsky 🌺
d682f5a164 Clarification 2025-09-21 00:44:20 -07:00
Den Delimarsky 🌺
895bcbef00 Update prompts 2025-09-21 00:02:33 -07:00
Den Delimarsky 🌺
90f06521a2 Update update-agent-context.ps1 2025-09-20 23:38:31 -07:00
Den Delimarsky 🌺
d92d6f57db Update CONTRIBUTING.md 2025-09-20 21:43:15 -07:00
Den Delimarsky 🌺
f9c9cd3b61 Update CONTRIBUTING.md 2025-09-20 21:41:30 -07:00
Den Delimarsky 🌺
f4b16080da Update CONTRIBUTING.md 2025-09-20 21:34:55 -07:00
Den Delimarsky 🌺
7c2fd502c8 Update CONTRIBUTING.md 2025-09-20 21:23:04 -07:00
Den Delimarsky 🌺
5eccac5524 Update CONTRIBUTING.md 2025-09-20 21:21:35 -07:00
Den Delimarsky 🌺
ee9f83929a Update contribution guidelines. 2025-09-20 21:20:54 -07:00
Den Delimarsky 🌺
3bdb1d9f3f Root detection logic 2025-09-20 20:14:11 -07:00
Den Delimarsky
0e5f7cee9a Update templates/plan-template.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-20 19:54:43 -07:00
Den Delimarsky
4cc15bab98 Update scripts/bash/update-agent-context.sh
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-20 19:54:33 -07:00
Den Delimarsky
8d529599f1 Update scripts/powershell/create-new-feature.ps1
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-20 19:54:10 -07:00
Den Delimarsky 🌺
406521c664 Simplification 2025-09-20 15:29:37 -07:00
Den Delimarsky 🌺
1a71b03195 Script and template tweaks 2025-09-20 15:04:25 -07:00
Den Delimarsky 🌺
f04e01d4a2 Merge branch 'consolidate-scripts' of https://github.com/github/spec-kit into consolidate-scripts 2025-09-20 13:57:15 -07:00
Den Delimarsky 🌺
2d242b4732 Update config 2025-09-20 13:57:05 -07:00
Den Delimarsky
84ec4611c4 Update scripts/powershell/check-prerequisites.ps1
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-20 13:56:20 -07:00
Den Delimarsky
2c1e1688e8 Update scripts/bash/check-prerequisites.sh
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-20 13:56:06 -07:00
Den Delimarsky 🌺
3f67cf2f5f Fix script path 2025-09-20 12:26:57 -07:00
Den Delimarsky 🌺
505b956bfd Script cleanup 2025-09-20 12:14:42 -07:00
Den Delimarsky
0bebcf93b3 Update scripts/bash/check-prerequisites.sh
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-20 12:01:26 -07:00
Den Delimarsky
826c3a6102 Update scripts/powershell/check-prerequisites.ps1
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-20 12:01:05 -07:00
Den Delimarsky 🌺
e83e1cd8e3 Update script delegation from GitHub Action 2025-09-20 11:57:01 -07:00
Den Delimarsky 🌺
aa08257d98 Cleanup the setup for generated packages 2025-09-20 11:52:29 -07:00
Den Delimarsky 🌺
64171ec062 Use proper line endings 2025-09-20 11:38:04 -07:00
Den Delimarsky 🌺
7c0f0a4627 Consolidate scripts 2025-09-20 11:19:47 -07:00
Den Delimarsky 🌺
219ad02e4a Updating agent context files 2025-09-20 11:05:08 -07:00
Den Delimarsky
6f1970a0bd Merge pull request #14 from honjo-hiroaki-gtt/feat/add-codex-support
feat: Add Codex CLI support
2025-09-20 10:28:40 -07:00
Den Delimarsky 🌺
60b8d8fad2 Update update-agent-context.ps1 2025-09-20 10:26:22 -07:00
Den Delimarsky 🌺
2aa30cdbb2 Update package release 2025-09-20 10:13:20 -07:00
Den Delimarsky 🌺
d7d2c145c7 Update config 2025-09-20 10:10:23 -07:00
Den Delimarsky 🌺
caee341af9 Update __init__.py 2025-09-20 10:06:59 -07:00
Den Delimarsky 🌺
dc8fdc2dc8 Update __init__.py 2025-09-20 09:13:34 -07:00
Den Delimarsky 🌺
6a3ff650f1 Remove Codex-specific logic in the initialization script 2025-09-20 09:09:24 -07:00
Den Delimarsky
8784f39755 Merge branch 'main' into feat/add-codex-support 2025-09-20 08:54:00 -07:00
Den Delimarsky 🌺
fbacd0b0df Update version rev 2025-09-20 08:49:44 -07:00
Den Delimarsky 🌺
db9d97bcbd Update __init__.py 2025-09-20 08:46:32 -07:00
honjo-hiroaki-gtt
537332725b Resolve merge conflicts integrating Codexsupport with upstream Windsurf updates 2025-09-20 23:42:36 +09:00
honjo-hiroaki-gtt
65ccbb62ca Enhance Codex support by auto-syncing prompt files, allowing spec generation without git, and documenting clearer /specify usage. 2025-09-20 22:44:44 +09:00
Den Delimarsky 🌺
5659c869b5 Consistency tweaks 2025-09-20 00:24:06 -07:00
Den Delimarsky 🌺
d8bf98a88d Consistent step coloring 2025-09-20 00:21:01 -07:00
Den Delimarsky 🌺
e482072520 Update __init__.py 2025-09-20 00:17:10 -07:00
Den Delimarsky 🌺
aaa6df9653 Update __init__.py 2025-09-20 00:11:27 -07:00
Den Delimarsky 🌺
8c3e9db3bf Quick UI tweak 2025-09-19 18:24:29 -07:00
Den Delimarsky 🌺
d1d5c82a8e Update package release 2025-09-19 18:07:18 -07:00
Den Delimarsky 🌺
0889635e66 Update with Windsurf support 2025-09-19 18:01:47 -07:00
Den Delimarsky
2825bb1247 Merge pull request #243 from zryfish/dev/add_authentication_when_download_template
add github auth headers if there are GITHUB_TOKEN/GH_TOKEN set
2025-09-19 17:29:59 -07:00
honjo-hiroaki-gtt
3a0ae75bfb Limit workspace command seeding to Codex init and update Codex documentation accordingly. 2025-09-19 17:53:16 +09:00
honjo-hiroaki-gtt
312703260c Clarify Codex-specific README note with rationale for its different workflow. 2025-09-19 16:40:41 +09:00
Den Delimarsky 🌺
919ba00198 Update specify.md 2025-09-18 23:21:26 -07:00
Den Delimarsky 🌺
4e869cb11a Update __init__.py 2025-09-18 23:13:38 -07:00
Den Delimarsky 🌺
32c933c960 Update with support for /implement 2025-09-18 23:03:01 -07:00
Den Delimarsky 🌺
46ba4d57e9 Update constitution.md 2025-09-18 22:25:21 -07:00
Den Delimarsky 🌺
692fd34697 Update constitution.md 2025-09-18 22:17:23 -07:00
Den Delimarsky 🌺
2f043ef682 Update constitution command 2025-09-18 22:13:38 -07:00
Den Delimarsky 🌺
d90cc16786 Cleanup 2025-09-18 11:22:30 -07:00
Den Delimarsky
5fc1d0b939 Merge pull request #330 from Mingholy/main
fix: commands format for qwen
2025-09-18 10:29:19 -07:00
Den Delimarsky
fb9bc613a5 Merge pull request #341 from TheArKaID/patch-1
Fix template path in update-agent-context.sh
2025-09-18 09:33:59 -07:00
Arifia Kasastra R
ebd99bc11b Fix template path in update-agent-context.sh
The `if` check is checking in the `$REPO_ROOT/.specify/template/.....`, but the next `cp` commands has a different path
2025-09-18 20:45:59 +07:00
honjo-hiroaki-gtt
286ad553fd Bump to 0.0.7 and document Codex support 2025-09-18 15:39:30 +09:00
honjo-hiroaki-gtt
a39185c8be Normalize Codex command templates to the scripts-based schema and auto-upgrade generated commands. 2025-09-18 15:39:30 +09:00
honjo-hiroaki-gtt
e29488d91f Fix remaining merge conflict markers in __init__.py 2025-09-18 15:39:30 +09:00
honjo-hiroaki-gtt
95fba17d20 Add Codex CLI support with AGENTS.md and commands bootstrap 2025-09-18 15:39:30 +09:00
mingholy.lmh
7c13281d34 fix: commands format for qwen 2025-09-18 14:21:32 +08:00
Den Delimarsky
8bd155b9f5 Merge pull request #326 from pluo/proof-read
docs: fix grammar mistakes in markdown files
2025-09-17 22:18:19 -07:00
Den Delimarsky
f6e4714ba0 Merge pull request #321 from ahmet-cetinkaya/fix/qwen-release-assets
fix: add missing Qwen support to release workflow and agent scripts
2025-09-17 22:17:00 -07:00
Pengkui Luo
919bda2355 docs: fix grammar mistakes in markdown files 2025-09-17 20:36:30 -07:00
Ahmet Çetinkaya
1414bcb1b2 fix: add missing Qwen support to release workflow and agent scripts
- Add Qwen template assets to release workflow for proper distribution
- Include qwen case in bash/powershell agent context update scripts
- Fix missing spec-kit-template-qwen-sh/ps release assets issue
- Ensure Qwen support consistency across all tooling components

Resolves critical release problem where Qwen templates were generated
but not included in GitHub releases, causing initialization failures.
2025-09-18 01:46:10 +03:00
Den Delimarsky
ec47ecfd16 Merge pull request #64 from aemr3/main
feat: Add Opencode support to Spec Kit CLI
2025-09-17 13:41:25 -07:00
Emre
c5f7582470 feat: Add opencode ai agent 2025-09-17 13:12:56 -07:00
Den Delimarsky
87d4998b9d Merge pull request #303 from gaatjeniksaan/main
Fix --no-git argument resolution.
2025-09-17 11:53:29 -07:00
gaatjeniksaan
cc686c6621 Fix --no-git argument resolution.
The --no-git argument was superfluous as it was set to True
by default.
This commit flips this, and assumes
git is not available, and will check and update only if the user
asks for it (--no-git == False).
To make this more clear I have renamed the variable to
should_init_git.
2025-09-17 11:28:52 +02:00
zhangrenyu
b1688b9633 expose token as an argument through cli --github-token 2025-09-17 17:05:49 +08:00
zryfish
70413f5214 add github auth headers if there are GITHUB_TOKEN/GH_TOKEN set 2025-09-15 00:06:08 +08:00
134 changed files with 30479 additions and 1472 deletions

View File

@@ -0,0 +1,75 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/python
{
"name": "SpecKitDevContainer",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"image": "mcr.microsoft.com/devcontainers/python:3.13-trixie", // based on Debian "Trixie" (13)
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
"installZsh": true,
"installOhMyZsh": true,
"installOhMyZshConfig": true,
"upgradePackages": true,
"username": "devcontainer",
"userUid": "automatic",
"userGid": "automatic"
},
"ghcr.io/devcontainers/features/dotnet:2": {
"version": "lts"
},
"ghcr.io/devcontainers/features/git:1": {
"ppa": true,
"version": "latest"
},
"ghcr.io/devcontainers/features/node": {
"version": "lts"
}
},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
"forwardPorts": [
8080 // for Spec-Kit documentation site
],
"containerUser": "devcontainer",
"updateRemoteUserUID": true,
"postCreateCommand": "chmod +x ./.devcontainer/post-create.sh && ./.devcontainer/post-create.sh",
"postStartCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
"customizations": {
"vscode": {
"extensions": [
"mhutchie.git-graph",
"eamodio.gitlens",
"anweber.reveal-button",
"chrisdias.promptboost",
// Github Copilot
"GitHub.copilot",
"GitHub.copilot-chat",
// Codex
"openai.chatgpt",
// Kilo Code
"kilocode.Kilo-Code",
// Roo Code
"RooVeterinaryInc.roo-cline",
// Claude Code
"anthropic.claude-code"
],
"settings": {
"debug.javascript.autoAttachFilter": "disabled", // fix running commands in integrated terminal
// Specify settings for Github Copilot
"git.autofetch": true,
"chat.promptFilesRecommendations": {
"speckit.constitution": true,
"speckit.specify": true,
"speckit.plan": true,
"speckit.tasks": true,
"speckit.implement": true
},
"chat.tools.terminal.autoApprove": {
".specify/scripts/bash/": true,
".specify/scripts/powershell/": true
}
}
}
}
}

106
.devcontainer/post-create.sh Executable file
View File

@@ -0,0 +1,106 @@
#!/bin/bash
# Exit immediately on error, treat unset variables as an error, and fail if any command in a pipeline fails.
set -euo pipefail
# Function to run a command and show logs only on error
run_command() {
local command_to_run="$*"
local output
local exit_code
# Capture all output (stdout and stderr)
output=$(eval "$command_to_run" 2>&1) || exit_code=$?
exit_code=${exit_code:-0}
if [ $exit_code -ne 0 ]; then
echo -e "\033[0;31m[ERROR] Command failed (Exit Code $exit_code): $command_to_run\033[0m" >&2
echo -e "\033[0;31m$output\033[0m" >&2
exit $exit_code
fi
}
# Installing CLI-based AI Agents
echo -e "\n🤖 Installing Copilot CLI..."
run_command "npm install -g @github/copilot@latest"
echo "✅ Done"
echo -e "\n🤖 Installing Claude CLI..."
run_command "npm install -g @anthropic-ai/claude-code@latest"
echo "✅ Done"
echo -e "\n🤖 Installing Codex CLI..."
run_command "npm install -g @openai/codex@latest"
echo "✅ Done"
echo -e "\n🤖 Installing Gemini CLI..."
run_command "npm install -g @google/gemini-cli@latest"
echo "✅ Done"
echo -e "\n🤖 Installing Augie CLI..."
run_command "npm install -g @augmentcode/auggie@latest"
echo "✅ Done"
echo -e "\n🤖 Installing Qwen Code CLI..."
run_command "npm install -g @qwen-code/qwen-code@latest"
echo "✅ Done"
echo -e "\n🤖 Installing OpenCode CLI..."
run_command "npm install -g opencode-ai@latest"
echo "✅ Done"
echo -e "\n🤖 Installing Kiro CLI..."
# https://kiro.dev/docs/cli/
KIRO_INSTALLER_URL="https://kiro.dev/install.sh"
KIRO_INSTALLER_SHA256="7487a65cf310b7fb59b357c4b5e6e3f3259d383f4394ecedb39acf70f307cffb"
KIRO_INSTALLER_PATH="$(mktemp)"
cleanup_kiro_installer() {
rm -f "$KIRO_INSTALLER_PATH"
}
trap cleanup_kiro_installer EXIT
run_command "curl -fsSL \"$KIRO_INSTALLER_URL\" -o \"$KIRO_INSTALLER_PATH\""
run_command "echo \"$KIRO_INSTALLER_SHA256 $KIRO_INSTALLER_PATH\" | sha256sum -c -"
run_command "bash \"$KIRO_INSTALLER_PATH\""
kiro_binary=""
if command -v kiro-cli >/dev/null 2>&1; then
kiro_binary="kiro-cli"
elif command -v kiro >/dev/null 2>&1; then
kiro_binary="kiro"
else
echo -e "\033[0;31m[ERROR] Kiro CLI installation did not create 'kiro-cli' or 'kiro' in PATH.\033[0m" >&2
exit 1
fi
run_command "$kiro_binary --help > /dev/null"
echo "✅ Done"
echo -e "\n🤖 Installing Kimi CLI..."
# https://code.kimi.com
run_command "pipx install kimi-cli"
echo "✅ Done"
echo -e "\n🤖 Installing CodeBuddy CLI..."
run_command "npm install -g @tencent-ai/codebuddy-code@latest"
echo "✅ Done"
# Installing UV (Python package manager)
echo -e "\n🐍 Installing UV - Python Package Manager..."
run_command "pipx install uv"
echo "✅ Done"
# Installing DocFx (for documentation site)
echo -e "\n📚 Installing DocFx..."
run_command "dotnet tool update -g docfx"
echo "✅ Done"
echo -e "\n🧹 Cleaning cache..."
run_command "sudo apt-get autoclean"
run_command "sudo apt-get clean"
echo "✅ Setup completed. Happy coding! 🚀"

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
* text=auto eol=lf

3
.github/CODEOWNERS vendored
View File

@@ -1,2 +1,3 @@
# Global code owner # Global code owner
* @localden * @mnriem

141
.github/ISSUE_TEMPLATE/agent_request.yml vendored Normal file
View File

@@ -0,0 +1,141 @@
name: Agent Request
description: Request support for a new AI agent/assistant in Spec Kit
title: "[Agent]: Add support for "
labels: ["agent-request", "enhancement", "needs-triage"]
body:
- type: markdown
attributes:
value: |
Thanks for requesting a new agent! Before submitting, please check if the agent is already supported.
**Currently supported agents**: Claude Code, Gemini CLI, GitHub Copilot, Cursor, Qwen Code, opencode, Codex CLI, Windsurf, Kilo Code, Auggie CLI, Roo Code, CodeBuddy, Qoder CLI, Kiro CLI, Amp, SHAI, IBM Bob, Antigravity
- type: input
id: agent-name
attributes:
label: Agent Name
description: What is the name of the AI agent/assistant?
placeholder: "e.g., SuperCoder AI"
validations:
required: true
- type: input
id: website
attributes:
label: Official Website
description: Link to the agent's official website or documentation
placeholder: "https://..."
validations:
required: true
- type: dropdown
id: agent-type
attributes:
label: Agent Type
description: How is the agent accessed?
options:
- CLI tool (command-line interface)
- IDE extension/plugin
- Both CLI and IDE
- Other
validations:
required: true
- type: input
id: cli-command
attributes:
label: CLI Command (if applicable)
description: What command is used to invoke the agent from terminal?
placeholder: "e.g., supercode, ai-assistant"
- type: input
id: install-method
attributes:
label: Installation Method
description: How is the agent installed?
placeholder: "e.g., npm install -g supercode, pip install supercode, IDE marketplace"
validations:
required: true
- type: textarea
id: command-structure
attributes:
label: Command/Workflow Structure
description: How does the agent define custom commands or workflows?
placeholder: |
- Command file format (Markdown, YAML, TOML, etc.)
- Directory location (e.g., .supercode/commands/)
- Example command file structure
validations:
required: true
- type: textarea
id: argument-pattern
attributes:
label: Argument Passing Pattern
description: How does the agent handle arguments in commands?
placeholder: |
e.g., Uses {{args}}, $ARGUMENTS, %ARGS%, or other placeholder format
Example: "Run test suite with {{args}}"
- type: dropdown
id: popularity
attributes:
label: Popularity/Usage