Commit Graph

590 Commits

Author SHA1 Message Date
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>
v0.0.99
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>
v0.0.98
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) v0.0.97 2026-02-18 16:11:16 -06:00
Laurent Thiebault
c78f8423f6 fix: typo in plan-template.md (#1446) v0.0.96 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>
v0.0.95
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>
v0.0.94
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>
v0.0.93
2026-02-10 14:27:20 -06:00
Manfred Riem
36d97235ad Fixes #1586 - .specify.specify path error (#1588) v0.0.92 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>
v0.0.91
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
v0.0.90
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
v0.0.89
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
v0.0.88
2025-12-01 21:41:29 -08:00
Den Delimarsky
1c7b09d947 Merge pull request #1122 from KUTEJiang/main
feat:support Qoder CLI
v0.0.87
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
v0.0.86
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
v0.0.85
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
v0.0.84
2025-11-14 16:28:34 -08:00