Repository navigation
Description
Problem Statement
The bundled github extension currently offers speckit.github.taskstoissues, which creates one GitHub issue for every T### entry in tasks.md. That is useful for task-level issue tracking, but it does not fit teams that deliberately keep fine-grained execution state in tasks.md and use a smaller number of GitHub issues for bounded delivery milestones, blockers, pull requests, and durable acceptance evidence.
Without a supported bridge, these teams must either create an issue per task, duplicate task checklists and acceptance criteria in GitHub, or maintain an ad hoc mapping that can drift from spec.md, plan.md, and tasks.md.
This is distinct from #4370. That proposal retains one issue per task and groups those issues into native GitHub Milestones. This proposal avoids task issues and maps many requirements/design sections/tasks to one delivery issue.
Proposed Solution
Provide an opt-in milestone-level tracking workflow for the GitHub integration, either as a new namespaced command or as an officially documented preset if that is the preferred extension boundary.
The workflow would maintain a versioned tracking.md in the active feature directory. Each stable, anchored milestone entry would map:
- a bounded delivery outcome;
- requirement IDs or anchors from
spec.md; - design sections from
plan.md; - explicit task IDs or ranges from
tasks.md; and - the actual GitHub issue URL returned after creation.
An epic issue would link to tracking.md as the feature index. Each delivery issue would link back to its stable mapping anchor and the underlying Spec Kit artifacts. Implementation pull requests would link the delivery issue and name the task IDs they complete.
The separation of authority is important:
spec.mdowns normative requirements and acceptance criteria;plan.mdowns technical design;tasks.mdowns fine-grained implementation state;- GitHub delivery issues own coordination state, blockers, pull requests, and durable acceptance evidence.
The workflow should not copy task checkboxes or acceptance criteria into issue bodies and should not mirror state automatically. A checked task does not prove milestone acceptance, and closing an issue must not rewrite tasks.md.
Before external writes, the command should preview the intended epic and delivery issues and require explicit confirmation. Repeated execution should be idempotent, use a feature-qualified milestone identity rather than bare M1/T001 identifiers, read back real URLs, and fail on ambiguous or conflicting mappings.
Projects should choose either task-per-issue conversion or milestone-level tracking for a feature. Running both should require an explicit override or be rejected to prevent duplicate tracking systems.
Alternatives Considered
- Use
speckit.github.taskstoissues: Creates substantially more issues and duplicates the fine-grained ledger already maintained intasks.md. - Use Feature Request: Milestone grouping extension for taskstoissues #4370's native GitHub Milestone grouping: Improves organization but still creates one issue per task; native GitHub Milestones also remain repository-scoped.
- Maintain the mapping entirely outside Spec Kit: Works locally, but every team must recreate feature resolution, idempotency, validation, and safe GitHub mutation behavior.
- Automatic bidirectional state synchronization: Rejected because task completion and delivery acceptance are different claims and cannot be inferred safely from one another.
Component
Agent integrations (command files, workflows)
AI Agent (if applicable)
All agents
Use Cases
- A feature has 40 implementation tasks but only four independently reviewable delivery milestones.
- A migration needs milestone issues for blockers, rollback evidence, and qualification while implementation progress remains in
tasks.md. - A refactoring spans interfaces and compatibility guarantees but does not benefit from dozens of GitHub task issues.
- A team needs durable traceability from requirements through design and tasks to GitHub coordination without copying normative content.
Acceptance Criteria
- The workflow is opt-in and does not change the provider-neutral core SDD flow.
- It resolves the active feature's
spec.md,plan.md, andtasks.mdand validates referenced IDs/anchors before any GitHub write. - It can generate or validate a versioned tracking map with stable milestone anchors.
- It previews all intended external writes and requires explicit confirmation.
- It creates or reuses one epic and one issue per mapped delivery milestone, then records the real returned URLs.
- Repeated execution is idempotent and feature-qualified identifiers cannot collide across features.
- Issue bodies link to repository artifacts without copying task checkboxes or normative acceptance criteria.
- No automatic state mirroring treats task completion as milestone acceptance or issue closure as task completion.
- The workflow detects or rejects simultaneous task-per-issue and milestone-level tracking for the same feature.
- Documentation explains the authority boundaries, comparison with
taskstoissues, and whether the supported packaging is a GitHub-extension command or preset. - Representative positive and counter-tests cover ambiguous mappings, stale issue URLs, duplicate execution, and partial acceptance.
Additional Context
The concept has been captured locally as a generic tracking template and process rule so it can be tested in real projects before an implementation PR. The newly created fork is available at https://github.com/metaneutrons/spec-kit for future development.
Related work:
- Feature Request: Milestone grouping extension for taskstoissues #4370: task issues grouped into native GitHub Milestones
- [Feature]: Add a bundled
githubextension for taskstoissues #4421: bundled GitHub extension - [Feature]: Remove taskstoissues from the core command set #4423: removal of the former core
taskstoissuescommand
AI Disclosure
OpenAI Codex using a GPT-5-based model in interactive, human-supervised agent mode; the reasoning-effort setting was not exposed. AI assistance covered reviewing the current extension documentation and related issues, comparing the proposals, and drafting this issue. Fabian Schmieder determined the intended tracking model and authorized the fork and submission.
Activity
github-actions commentedon Nov 6, 2026
Feature assessment — milestone-issue-tracking · Stage 1/5: Intake
Idea Intake: Milestone-level issue tracking
Idea (as captured)
Restated
The request is to add an opt-in GitHub workflow that tracks delivery at milestone level instead of task level, while preserving task-level state in
tasks.md. It aims to maintain traceability from Spec Kit artifacts to fewer, bounded GitHub delivery issues without duplicating normative content or mirroring state automatically.Origin & Context
metaneutrons(issue [Feature]: Add milestone-level issue tracking without task-per-issue conversion #5284)speckit.github.taskstoissuesis useful for task-level issue creation, but teams usingtasks.mdas the fine-grained ledger want a smaller issue surface for milestone coordination and acceptance evidence.First-Glance Unknowns
githubextension, or as an officially supported preset/workflow composition?]tracking.mdto guarantee feature-qualified uniqueness across repositories and reruns?]github-actions commentedon Nov 6, 2026
Feature assessment — milestone-issue-tracking · Stage 2/5: Research
Idea Research: Milestone-level issue tracking
Users & Demand
githubextension for taskstoissues #4421, [Feature]: Remove taskstoissues from the core command set #4423] (confidence: medium)Prior Art
extensions/github/README.md] (confidence: high)speckit.github.taskstoissuesestablishes existing patterns for feature resolution, GitHub remote validation, deduplication/idempotency expectations, and hook-based integration points — [source:extensions/github/commands/speckit.github.taskstoissues.md] (confidence: high)Market & Context
CHANGELOG.md(1.3.0 entry “feat!: remove taskstoissues from core”),extensions/github/README.md] (confidence: high)taskstoissuespath but keeps a gap for teams that need lower issue cardinality with explicit milestone acceptance evidence — [source: [Feature]: Add milestone-level issue tracking without task-per-issue conversion #5284] (confidence: medium)Data & Constraints
tests/extensions/github/test_github_extension.py] (confidence: high)Evidence Against the Idea
extensions/github/commands/speckit.github.taskstoissues.md,tests/extensions/github/test_github_extension.py; ASSUMPTION] (confidence: medium)taskstoissues); introducing a second tracking model can fragment guidance and increase support load if boundaries are not strict — [source:extensions/github/README.md; ASSUMPTION] (confidence: medium)githubextension for taskstoissues #4421, [Feature]: Remove taskstoissues from the core command set #4423] (confidence: medium)Gaps & Open Questions
tracking.mdanchors and ID validation rules.]Sources
githubextension for taskstoissues #4421 (host: github.com, policy: allowlisted)extensions/github/README.mdextensions/github/commands/speckit.github.taskstoissues.mdtests/extensions/github/test_github_extension.pyCHANGELOG.mdgithub-actions commentedon Nov 6, 2026
Feature assessment — milestone-issue-tracking · Stage 3/5: Problem
Problem Definition: Delivery tracking granularity mismatch
Problem Statement
Teams that intentionally keep fine-grained execution state in
tasks.mdcurrently lack a supported way to represent delivery-level coordination in GitHub without creating one issue per task. This mismatch creates either issue sprawl or duplicated/fragile manual mappings, reducing traceability quality and increasing coordination overhead.Affected Users & Stakeholders
Goals
spec.md,plan.md,tasks.md, and GitHub issues.Non-Goals
Success Metrics
taskstoissuesand explains when each should be used (baseline: only task-to-issues workflow documented).Cost of Inaction
Teams needing milestone-level coordination continue using either high-cardinality task issues or unofficial manual mapping files/processes. That increases drift risk between planning artifacts and GitHub coordination state, weakens auditability of delivery acceptance, and raises maintenance burden per team.
Open Questions
github-actions commentedon Nov 6, 2026
Feature assessment — milestone-issue-tracking · Stage 4/5: Concept
Concept: Milestone-level GitHub delivery mapping
githubextensionOptions
Option A — First-party milestone-map command in
githubextensionspeckit.github.taskstoissuesthat validates a feature-scopedtracking.md, previews epic/milestone issue writes, creates or reuses mapped delivery issues, and records returned issue URLs back into the tracking map without copying task checklists or normative acceptance text.Option B — Preset/workflow-only orchestration over existing commands
tracking.mdand guides maintainers through manual or semi-automated GitHub issue creation, reusing existing commands where possible.Option C — Keep current task-per-issue model only
speckit.github.taskstoissuesas the sole first-party model and document milestone-level coordination as out of scope.Recommendation
Recommend Option A. It best aligns with existing extension boundaries (GitHub-specific behavior remains opt-in and out of core), addresses the requested traceability model directly, and can enforce safe/idempotent external writes in a testable way. Option B is viable as interim guidance but does not provide the reliability guarantees requested in #5284.
Out of Scope (for the recommended option)
Assumptions to Validate
github-actions commentedon Nov 6, 2026
Feature assessment — milestone-issue-tracking · Stage 5/5: Decision — verdict go
Decision: Milestone-level issue tracking assessment
Scorecard
Verdict & Rationale
Verdict: go. The assessed problem is real, strategically aligned with repository architecture, and supported by adequate evidence plus a credible concept path. While demand telemetry is not broad, the proposal’s bounded scope and explicit non-goals keep risk manageable. This should proceed to specification with strict requirements for idempotency, conflict handling, and authority-boundary documentation.
If needs-clarification
If go — Handoff to
/speckit-specifygithubextension (Option A), centered on a validatedtracking.md, preview-before-write flow, and idempotent issue mapping.taskstoissues.tracking.mdschema and anchor rules.]