⚡ Sangsakala Proxy 🏠 Home
Skip to content

Commit 882e42e

Browse files
mnriemCopilot
andauthored
feat!: remove taskstoissues from core (#5053)
* feat!: remove taskstoissues from core Make the opt-in github extension the sole owner of taskstoissues, including a deprecated compatibility alias. Preserve hook behavior, register aliases in skills mode, restore extension-backed preset overrides, and document the breaking migration for the next minor release. Refs #4423 Assisted-by: GitHub Copilot (model: GPT-6.1 Sol, autonomous) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: narrow core taskstoissues removal scope Drop the conditional compatibility alias and revert its shared registration, cleanup, and preset-restoration support. Keep the existing GitHub extension unchanged and cover core-command retirement and explicit opt-in migration without an alias. Assisted-by: GitHub Copilot (model: GPT-6.1 Sol, autonomous) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: limit taskstoissues change to core removal Remove added migration documentation and replacement tests. Delete obsolete core-only and core-parity tests while retaining existing extension and shared prerequisite-script coverage. Restrict documentation edits to removing obsolete core content; leave release tooling and Hermes lifecycle behavior unchanged. Assisted-by: GitHub Copilot (model: GPT-6.1 Sol, autonomous) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: document and cover taskstoissues removal migration Assisted-by: GitHub Copilot (model: GPT-6.1 Sol, autonomous) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: limit core removal to scrubbing and extension documentation Remove command-specific migration guidance and hook references from core docs and drop added legacy-artifact migration checks. Keep extension documentation in its README without changing the existing backup warning. Assisted-by: GitHub Copilot (model: GPT-6.1 Sol, autonomous) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: distinguish GitHub hook events from command bindings Assisted-by: GitHub Copilot (model: GPT-6.1 Sol, autonomous) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: clarify enabling the installed GitHub extension Assisted-by: GitHub Copilot (model: GPT-6.1 Sol, autonomous) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: clarify re-registration after enabling GitHub extension Assisted-by: GitHub Copilot (model: GPT-6.1 Sol, autonomous) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
1 parent acf4b00 commit 882e42e

28 files changed

Lines changed: 113 additions & 434 deletions

‎docs/extensions/api.md‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -632,8 +632,6 @@ Standard events (defined by core):
632632
- `after_clarify` - After spec clarification
633633
- `before_constitution` - Before constitution update
634634
- `after_constitution` - After constitution update
635-
- `before_taskstoissues` - Before tasks-to-issues conversion
636-
- `after_taskstoissues` - After tasks-to-issues conversion
637635

638636
#### Bundled `bug` extension events (available when the extension is installed)
639637

‎docs/extensions/developing.md‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,6 @@ Available hook points:
237237
- `before_checklist` / `after_checklist`: Before/after checklist generation
238238
- `before_clarify` / `after_clarify`: Before/after spec clarification
239239
- `before_constitution` / `after_constitution`: Before/after constitution update
240-
- `before_taskstoissues` / `after_taskstoissues`: Before/after tasks-to-issues conversion
241240
- `before_bug_assess` / `after_bug_assess`: Before/after bug assessment (bundled `bug` extension)
242241
- `before_bug_fix` / `after_bug_fix`: Before/after bug remediation (bundled `bug` extension)
243242
- `before_bug_test` / `after_bug_test`: Before/after bug verification (bundled `bug` extension)

‎docs/extensions/overview.md‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,6 @@ settings:
388388
# before_tasks, after_tasks, before_implement, after_implement,
389389
# before_analyze, after_analyze, before_checklist, after_checklist,
390390
# before_clarify, after_clarify, before_constitution, after_constitution,
391-
# before_taskstoissues, after_taskstoissues
392391
# Bundled bug extension events (when installed):
393392
# before_bug_assess, after_bug_assess, before_bug_fix, after_bug_fix,
394393
# before_bug_test, after_bug_test

‎docs/installation.md‎

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -155,16 +155,6 @@ After initialization, you should see the following commands available in your co
155155
- `/speckit.checklist` - Generate quality checklists
156156
- `/speckit.constitution` - Create or update project principles
157157
- `/speckit.converge` - Assess codebase against artifacts and append remaining tasks
158-
- `/speckit.taskstoissues` - Convert tasks to issues (deprecated; warns on invocation; replaced by the bundled `github` extension's
159-
`/speckit.github.taskstoissues`; install it with `specify extension add github`)
160-
161-
The `generic` integration also registers extension commands in its configured
162-
`--commands-dir`. Installing `github` makes `/speckit.github.taskstoissues`
163-
available there as a command file, or as `/speckit-github-taskstoissues` when
164-
`--skills` is enabled. The core `/speckit.taskstoissues` (or
165-
`/speckit-taskstoissues` with `--skills`) remains available during migration, warns on invocation,
166-
and will be removed in a future minor release.
167-
See the [GitHub extension's installation notes](https://github.com/github/spec-kit/blob/main/extensions/github/README.md#installation).
168158

169159
Scripts are installed into a variant subdirectory matching the chosen script type:
170160

‎docs/integrations/cli.md‎

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -486,15 +486,6 @@ Docker Agent currently exposes structured agent/safety configuration.
486486
Headless approval flags, model forwarding, and structured-output support are
487487
also adapter-specific, not universal guarantees.
488488

489-
## GitHub Issue Creation
490-
491-
The deprecated `speckit.taskstoissues` command still runs with a warning but
492-
will be removed in a future minor release. Install the opt-in GitHub extension
493-
with `specify extension add github` and use `speckit.github.taskstoissues`
494-
instead. See the [extension's migration guide](https://github.com/github/spec-kit/blob/main/extensions/github/README.md#migrating-from-the-core-taskstoissues-command)
495-
for invocation syntax and migration details; the core command does not install
496-
the extension automatically.
497-
498489
## FAQ
499490

500491
### Can I install multiple integrations in the same project?

‎docs/reference/agentic-sdd.md‎

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ skills by default.
3030
| `/speckit.tasks` | `speckit-tasks` | Break the plan into actionable tasks |
3131
| `/speckit.implement` | `speckit-implement` | Execute the tasks |
3232
| `/speckit.converge` | `speckit-converge` | Assess implementation against the artifacts and append remaining work |
33-
| `/speckit.taskstoissues` | `speckit-taskstoissues` | **Deprecated core command**; use the `github` extension for GitHub issues |
3433
| `/speckit.clarify` | `speckit-clarify` | Resolve ambiguity before planning (optional quality gate; formerly `/quizme`) |
3534
| `/speckit.analyze` | `speckit-analyze` | Check artifact consistency after tasks and before implementation (optional quality gate) |
3635
| `/speckit.checklist` | `speckit-checklist` | Generate requirements-quality checklists (optional quality gate) |
@@ -157,31 +156,3 @@ It first prints a severity-graded findings summary, then resolves to one of two
157156

158157
- **Converged** — no gaps found. `tasks.md` is left byte-for-byte unchanged and you'll see a clean result like `✅ Converged — the implementation satisfies the spec, plan, and tasks.` You're done; proceed to review or open a PR.
159158
- **Tasks appended** — gaps found. Converge appends them as new tasks under a Convergence section in `tasks.md` and tells you how many. Run `/speckit.implement` again to complete them, then `/speckit.converge` once more. Each pass finds fewer items; repeat until it reports converged.
160-
161-
## `/speckit.taskstoissues` (deprecated core command)
162-
163-
The core command is deprecated and will be removed in a future minor release.
164-
It warns when invoked, then continues its existing workflow without installing
165-
or enabling the extension automatically.
166-
167-
The recommended extension command optionally converts an existing `tasks.md`
168-
into actionable GitHub issues. Install the extension from your project root:
169-
170-
```bash
171-
specify extension add github
172-
```
173-
174-
Then invoke it in your agent after generating tasks when you want to track
175-
execution in GitHub:
176-
177-
```text
178-
/speckit.github.taskstoissues
179-
```
180-
181-
This command requires a GitHub `origin` remote and access to the GitHub MCP tools
182-
for listing and creating issues. It creates issues only in the repository
183-
identified by that remote and checks existing task IDs to avoid duplicates.
184-
It is not required to implement tasks or converge on a feature.
185-
186-
> [!NOTE]
187-
> GitHub issue tracking uses the bundled, opt-in [`github` extension](https://github.com/github/spec-kit/blob/main/extensions/github/README.md). Its recommended command is `/speckit.github.taskstoissues` (slash-hyphen integrations: `/speckit-github-taskstoissues`; Codex, ZCode, and Command Code skills: `$speckit-github-taskstoissues`; Kimi: `/skill:speckit-github-taskstoissues`); the deprecated core `/speckit.taskstoissues` remains available during migration. The `generic` integration registers the extension under its configured command directory in commands or skills mode. See the [installation and migration notes](https://github.com/github/spec-kit/blob/main/extensions/github/README.md#installation) for all integration-specific invocation syntaxes.

‎docs/reference/extensions.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ specify extension add <name>
3737
| `--force` | Overwrite if the extension is already installed |
3838
| `--priority <N>`| Resolution priority (default: 10; lower = higher precedence) |
3939

40-
Installs an extension from the catalog, a URL, or a local directory. Extension commands are registered with the active AI coding agent integration. For `generic`, invocations use the configured `--commands-dir`: flat command files by default, or `speckit-<name>/SKILL.md` with `--skills`. The deprecated core `speckit.taskstoissues` command remains available during migration and will be removed in a future minor release. It warns on invocation and continues its existing workflow without installing or enabling the extension automatically. For GitHub issue tracking, run `specify extension add github` and use the recommended `/speckit.github.taskstoissues` command (slash-hyphen integrations: `/speckit-github-taskstoissues`; Codex, ZCode, and Command Code skills: `$speckit-github-taskstoissues`; Kimi: `/skill:speckit-github-taskstoissues`).
40+
Installs an extension from the catalog, a URL, or a local directory. Extension commands are registered with the active AI coding agent integration. For `generic`, invocations use the configured `--commands-dir`: flat command files by default, or `speckit-<name>/SKILL.md` with `--skills`.
4141

4242
If a generic integration refresh cannot produce every extension invocation (for example, because a command or skill is user-modified or its source is missing), it warns and restores that extension's prior registered artifacts. Other extensions can still refresh.
4343

‎extensions/catalog.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
"github": {
6767
"name": "GitHub Integration",
6868
"id": "github",
69-
"version": "1.0.4",
69+
"version": "1.0.5",
7070
"description": "GitHub platform integration for Spec Kit - create GitHub issues from a feature's task list",
7171
"author": "spec-kit-core",
7272
"repository": "https://github.com/github/spec-kit",

‎extensions/github/README.md‎

Lines changed: 43 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@ specify extension add github
2323
The `generic` (bring your own agent) integration registers this command under
2424
its configured `--commands-dir` in both commands and skills layouts. Installing
2525
`github` creates `speckit.github.taskstoissues.md` in commands mode or
26-
`speckit-github-taskstoissues/SKILL.md` in skills mode. The core
27-
`speckit.taskstoissues` command is deprecated but remains available during migration.
28-
Use this extension's recommended command instead. See
29-
[integration-specific options](../../docs/integrations/cli.md#integration-specific-options).
26+
`speckit-github-taskstoissues/SKILL.md` in skills mode. See
27+
[integration-specific options](https://github.github.io/spec-kit/integrations/cli.html#integration-specific-options).
3028

3129
## Removal
3230

@@ -74,56 +72,76 @@ The extension ships its own feature-resolution script in all three supported run
7472
| PowerShell | `scripts/powershell/resolve-tasks.ps1` |
7573
| Python | `scripts/python/resolve_tasks.py` |
7674

77-
Once installed they live under `.specify/extensions/github/scripts/`. The script is a trimmed twin of core's `check-prerequisites`: it resolves the project root and active feature directory, requires `plan.md` and `tasks.md`, and reports the design docs alongside them. It matches the invocation the core command makes (`--require-tasks --include-tasks`), so `spec.md` stays optional. By default, a `SPECIFY_FEATURE_DIRECTORY` override is persisted to `.specify/feature.json` so a later run without the variable resolves to the same feature. When `SPECIFY_FEATURE_NO_PERSIST=1` or `true`, the override still selects the feature for this run, but the script does not create or modify `feature.json`.
75+
Once installed they live under `.specify/extensions/github/scripts/`. The script is a trimmed twin of core's `check-prerequisites`: it resolves the project root and active feature directory, requires `plan.md` and `tasks.md`, and reports the design docs alongside them. `spec.md` stays optional. By default, a `SPECIFY_FEATURE_DIRECTORY` override is persisted to `.specify/feature.json` so a later run without the variable resolves to the same feature. When `SPECIFY_FEATURE_NO_PERSIST=1` or `true`, the override still selects the feature for this run, but the script does not create or modify `feature.json`.
7876

7977
Prerequisite errors name the Spec Kit command without assuming an integration's invocation syntax. Use the syntax described under [Commands](#commands) for your integration.
8078

8179
## Migrating from the core `taskstoissues` command
8280

83-
Spec Kit is moving GitHub issue tracking out of core in three stages:
84-
85-
1. **Initial stage (completed)** — this extension shipped with the core `/speckit.taskstoissues` command still available.
86-
2. **Next (current stage)** — the replacement has been available for at least one release, so the core command is now deprecated. It displays a migration warning and continues its existing workflow. It does not install or enable the extension automatically or run the replacement command.
87-
3. **Later** — the core command will be removed in a future minor release.
81+
**Breaking change:** the core command has been removed. Integration upgrades
82+
delete old manifest-tracked `taskstoissues` command and skill files, rather than
83+
replacing them with an updated prompt. Back up customized legacy and extension
84+
command or skill files outside the generated directories **before** upgrading;
85+
forcing the upgrade with `--force` also authorizes deletion of customized legacy
86+
files. Reapply customizations only after the migration steps below, because the
87+
upgrade can overwrite generated extension files. Installing this extension does
88+
not restore the old invocation or provide a compatibility alias.
8889

8990
For existing projects, upgrading the CLI alone does not refresh the generated
9091
core command files. After upgrading the CLI, run this from the project root:
9192

9293
```bash
93-
specify integration upgrade <key>
94+
specify integration upgrade <integration>
9495
```
9596

96-
Replace `<key>` with the installed integration key, or omit it to upgrade the
97-
default integration. This refreshes the core command with the deprecation
98-
warning. If locally modified files block the upgrade, inspect those changes
99-
before deciding whether to overwrite them. See [Upgrade an Integration](../../docs/integrations/cli.md#upgrade-an-integration).
97+
Replace `<integration>` with the installed integration key, or omit it to upgrade
98+
the default integration. Repeat for each installed integration. If locally
99+
modified files block the upgrade, back them up before deciding whether to
100+
delete the legacy files with `--force`. See
101+
[Upgrade an Integration](https://github.github.io/spec-kit/integrations/cli.html#upgrade-an-integration).
100102

101-
To migrate, install the extension and use the namespaced command instead:
103+
Then install the extension, **skipping this step if `github` is already
104+
installed**, and use the namespaced command instead:
102105

103106
```bash
104107
specify extension add github
105108
```
106109

110+
If `github` is already installed but disabled, run `specify extension enable github`
111+
followed by `specify integration use <integration>` to register its commands,
112+
even when that integration is already the default.
113+
114+
An already-installed, enabled extension is re-registered when upgrading the
115+
default integration only. Before using the replacement in a non-default
116+
integration, run `specify integration use <integration>` to select it and register
117+
the extension there. After upgrading, installing if needed, and selecting the
118+
integration, reapply customizations from your separate backup to the namespaced
119+
extension command.
120+
107121
The `generic` integration supports this migration in both commands and skills
108-
layouts under its configured `--commands-dir`. The core command remains
109-
available during this deprecation period until the removal stage.
122+
layouts under its configured `--commands-dir`.
110123

111-
| Deprecated core command | Recommended extension command |
124+
| Core command | Recommended extension command |
112125
| ------------------------- | --------------------------------- |
113126
| `/speckit.taskstoissues` | `/speckit.github.taskstoissues` |
114127

115-
Apart from the core command's deprecation warning, conversion behavior is unchanged: the same feature resolution, the same `plan.md` and `tasks.md` prerequisites, the same remote validation, the same deduplication across open and closed issues, the same issue titles, and the same hook contract. The extension command and deprecated core command coexist without shadowing each other while the core command still exists.
128+
Conversion behavior is unchanged: the same feature resolution, the same `plan.md` and `tasks.md` prerequisites, the same remote validation, the same deduplication across open and closed issues, the same issue titles, and the same hook contract. This extension does **not** register `speckit.taskstoissues` as an alias.
116129

117130
### Presets and dependent extensions
118131

119-
Before the core command is removed, audit references to `speckit.taskstoissues`
120-
in presets, extension prompts, workflow steps, handoffs, and project automation.
132+
Audit references to `speckit.taskstoissues`
133+
in presets, extension prompts, workflow steps, handoffs, hook `command` bindings,
134+
and project automation.
121135
For GitHub issue conversion, use the canonical `speckit.github.taskstoissues`
122136
command ID and render it with the agent-specific syntax under [Commands](#commands).
123137
Replace `__SPECKIT_COMMAND_TASKSTOISSUES__` cross-command references with
124138
`__SPECKIT_COMMAND_GITHUB_TASKSTOISSUES__` where template rendering is supported.
125-
Document `specify extension add github` as a setup prerequisite; the deprecation
126-
warning does not install this dependency.
139+
Document `specify extension add github` as a setup prerequisite.
140+
141+
Keep the `before_taskstoissues` and `after_taskstoissues` event keys unchanged;
142+
the extension still consumes them. Update a hook's `command` binding only if it
143+
invokes the removed `speckit.taskstoissues` command, not merely because the hook
144+
uses one of those event keys.
127145

128146
If an extension proposal or external dependency declaration uses
129147
`requires.commands: [speckit.taskstoissues]`, update its target to
@@ -137,11 +155,4 @@ Preset command overrides are separate from command references: an override of
137155
command. Review and port any needed customization, then verify the installed
138156
command in a sample project before retiring the old override. A preset that
139157
uses another issue tracker should retain its own provider-specific workflow
140-
rather than redirecting it to the GitHub command. Existing overrides may also
141-
hide the core deprecation warning, so communicate the migration to their users.
142-
143-
Keep the `before_taskstoissues` and `after_taskstoissues` hook keys unchanged;
144-
both commands consume them. Only update a hook's command reference if it invokes
145-
the deprecated command. Do not invoke both core and replacement commands for
146-
the same conversion, since that also runs their hooks twice. Publish and test
147-
updated preset/extension versions before the later core-removal release.
158+
rather than redirecting it to the GitHub command.

‎extensions/github/extension.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ schema_version: "1.0"
33
extension:
44
id: github
55
name: "GitHub Integration"
6-
version: "1.0.4"
6+
version: "1.0.5"
77
description: "GitHub platform integration for Spec Kit - create GitHub issues from a feature's task list"
88
author: spec-kit-core
99
repository: https://github.com/github/spec-kit

0 commit comments

Comments
 (0)