Skip to content

[Feature]: Add a bundled GitHub Issues extension for taskstoissues #4421

Description

@mnriem

Problem Statement

/speckit.taskstoissues creates GitHub issues from tasks.md, but GitHub issue tracking is provider-specific project-management functionality rather than part of the core Spec-Driven Development lifecycle.

Before the core command can be deprecated or removed, users need a fully functional extension-based replacement with an explicit installation and migration path.

Proposed Solution

Add a bundled, opt-in github-issues extension that provides the existing tasks-to-issues behavior under a namespaced command:

specify extension add github-issues
/speckit.github-issues.taskstoissues

Proposed manifest shape:

schema_version: "1.0"
extension:
  id: github-issues
  name: "GitHub Issues"
  version: "1.0.0"
  description: "Create GitHub issues from Spec Kit task lists"

provides:
  commands:
    - name: speckit.github-issues.taskstoissues
      file: commands/speckit.github-issues.taskstoissues.md
      description: "Convert tasks from tasks.md into dependency-ordered GitHub issues"

The extension command should preserve the current behavior:

  • Resolve the active feature and load tasks.md.
  • Confirm that the repository remote points to GitHub.
  • Detect existing issues by task ID across open and closed issues.
  • Create only missing issues in the repository identified by the remote.
  • Preserve the before_taskstoissues and after_taskstoissues hook contract.
  • Work across all supported integrations, including skills-based layouts.

The existing core /speckit.taskstoissues command must remain unchanged in this stage. The extension must not claim that legacy alias while the core command still exists.

Alternatives Considered

  • Deprecate the core command first: Rejected because users would receive a warning without having a working replacement.
  • Move the command immediately: Rejected because it would combine replacement, deprecation, and removal into one migration step.
  • Use a generic issues extension: A provider-specific extension makes GitHub tooling requirements explicit and leaves room for Jira, Linear, and other providers.

Component

Specify CLI (initialization, commands)

AI Agent (if applicable)

All agents

Use Cases

  1. Users can opt into GitHub issue creation without adding provider-specific behavior to the core SDD workflow.
  2. Extensions such as milestone grouping can declare a dependency on the namespaced GitHub Issues command.
  3. Alternative issue-tracker extensions can coexist without replacing a core GitHub-specific command.

Acceptance Criteria

  • A bundled github-issues extension can be installed with specify extension add github-issues.
  • The extension provides speckit.github-issues.taskstoissues for every supported integration.
  • The extension preserves current issue creation, remote validation, pagination, and deduplication behavior.
  • Existing before_taskstoissues and after_taskstoissues hooks execute as before.
  • The core speckit.taskstoissues command remains available and unchanged.
  • The extension does not register a legacy alias that conflicts with the core command.
  • Extension-specific tests cover installation, invocation artifacts, hooks, and uninstall behavior.
  • Documentation explains installation, usage, and the planned migration from the core command.
  • The change is included in a minor release.

Additional Context

This is stage 1 of a three-stage migration:

  1. Add the extension while retaining the core command.
  2. Deprecate the core command after the replacement is available.
  3. Remove the command from core in a later minor release.

Related discussion: #4370, especially #4370 (comment).

The Jira preset/extension direction in #2223 should also be considered when documenting provider-specific issue-tracker integrations.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions