Skip to content

feat(catalog): add Spec Kit Schedule (schedule) community extension#2473

Open
jfranc38 wants to merge 9 commits intogithub:mainfrom
jfranc38:feat/catalog-add-spec-kit-schedule
Open

feat(catalog): add Spec Kit Schedule (schedule) community extension#2473
jfranc38 wants to merge 9 commits intogithub:mainfrom
jfranc38:feat/catalog-add-spec-kit-schedule

Conversation

@jfranc38
Copy link
Copy Markdown

@jfranc38 jfranc38 commented May 7, 2026

Summary

Adds the Spec Kit Schedule extension to the community catalog.

A spec-kit extension that uses constraint programming (Google OR-Tools CP-SAT) to produce provably optimal task-to-agent assignments with DAG precedence, hallucination-aware capacity caps, file-conflict avoidance, stochastic durations, online replanning, and interactive HTML output.

Pre-flight verification

  • Archive URL resolves (HTTP 200, 644,970 bytes; SHA-256 8ad745b818a047a04c7c319065d1f2f5bc021514a3fcaaab824dc6eb7d50fc42)
  • extension.yml schema_version: "1.0" parses cleanly
  • All 5 command files present and registered correctly
  • hooks.after_tasks matches canonical shape from bundled git extension (command/optional/prompt/description)
  • LICENSE, README.md, CHANGELOG.md, SECURITY.md present
  • Description ≤ 200 chars
  • Tags: 5 (within 2–5 range)
  • Extension ID schedule follows ^[a-z0-9-]+$ convention
  • Inserted alphabetically between ripple and scope
  • Real-world install verified (specify extension add schedule --from <url> from a fresh project)
  • README row added in alphabetical position (between Spec Diagram and Spec Orchestrator)
  • Top-level catalog updated_at timestamp bumped

Quality signals

  • CI matrix (all blocking): Ubuntu × Python 3.10 / 3.11 / 3.12 + macOS-latest × 3.12.
  • Tests: 718 passing, ≥ 91% line coverage.
  • Type safety: mypy --strict clean across 10 strict-tier modules; mypy clean across all 35 solver modules.
  • Branch protection: master requires all 8 status checks green; force-push and deletion blocked.
  • Supply-chain provenance: sigstore attestations via actions/attest-build-provenance@v2 on the GitHub Release asset. Verifiable: gh attestation verify <release-asset> --owner jfranc38 (exit 0 confirmed).
  • Reproducible examples: 4 worked examples + replan demo, end-to-end via bash bin/run-examples.sh.
  • Documentation: README.md, INSTALL.md, CHANGELOG.md, docs/architecture.md, docs/formulation.md (formal MS-RCPSP math), docs/portfolio-design.md, docs/tasks-format.md, docs/when-to-use.md, docs/calibration.md.

Capabilities (current)

  • Per-AI portfolio templates (claude / copilot / cursor-agent / gemini) with verified May 2026 GA models.
  • AI-aware portfolio detection: reads .specify/integration.json and discovers the user's fleet from the canonical location for that AI; combines discovered implementer-shaped agents + base-portfolio gap-fillers; reviewer-shaped agents are surfaced separately rather than force-fit.
  • Encapsulated state: all extension state (config, venv) lives under .specify/; the user's project root is never polluted.
  • Idempotent first-run: /speckit.schedule.run auto-bootstraps the encapsulated venv and scaffolds the portfolio config on first invocation.
  • Calibration feedback loop: every solve drops a plan to .specify/schedule/runs/; users append actual durations and /speckit.schedule.calibrate EMA-updates speed_factor from real data.
  • Inline summary: /speckit.schedule.run prints a compact summary (status, makespan, agent utilisation, top-3 critical waves, cost split) inline before opening schedule.md.
  • Self-diagnose: /speckit.schedule.status reports installation state with five ordered checks; distinguishes expected-missing (will bootstrap automatically) from missing (real problem) so audit tools don't false-alarm on the pre-first-run state.

Test plan

  • Catalog JSON still parses
  • Diff is purely additive (catalog entry +33, README row +1)
  • Download URL HTTP-200
  • Sigstore attestation verifies on the linked release asset
  • All Copilot review threads resolved

🤖 Generated with Claude Code

@jfranc38 jfranc38 requested a review from mnriem as a code owner May 7, 2026 00:11
@mnriem mnriem requested a review from Copilot May 7, 2026 16:30
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new community extension entry (schedule) to Spec Kit’s community extension catalog so it can be discovered/installed via the community catalog.

Changes:

  • Added the Spec Kit Schedule extension metadata (id, description, URLs, version, tags, provides/requires) to extensions/catalog.community.json.
Show a summary per file
File Description
extensions/catalog.community.json Adds the new schedule community extension entry (metadata, URLs, version, tags, provides/requires).

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

Comment thread extensions/catalog.community.json
jfranc38 pushed a commit to jfranc38/spec-kit that referenced this pull request May 7, 2026
Per Copilot review on PR github#2473: the publishing guide requires an
accepted submission to update both extensions/catalog.community.json
AND the root README's Community Extensions table. Without the README
row the extension wouldn't appear in the primary browsable list.

Inserted alphabetically between 'Spec Diagram' and 'Spec Orchestrator'.
Category: process. Effect: Read+Write.
@mnriem mnriem requested a review from Copilot May 7, 2026 18:21
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 2

Comment thread extensions/catalog.community.json Outdated
Comment thread extensions/catalog.community.json
jfranc38 pushed a commit to jfranc38/spec-kit that referenced this pull request May 7, 2026
Two Copilot review nits on PR github#2473:

1. extensions/catalog.community.json schedule entry had
   provides.commands: 3, but the extension actually exposes 4
   commands (run, portfolio, visualize, calibrate — the latter
   was added in v0.6.0's Build 2 / calibration feedback loop).
   Bumped to 4 to stay consistent with the PR body and the
   rest of the catalog's summary metadata.

2. The catalog's top-level updated_at was 2026-05-06T22:28:55Z
   but per-entry updated_at for our schedule entry was 2026-05-07.
   Since this PR modifies the catalog, the top-level timestamp
   should advance too. Bumped to 2026-05-07T17:30:00Z.
jfranc38 pushed a commit to jfranc38/spec-kit that referenced this pull request May 7, 2026
…updated_at

Surgical edit responding to two Copilot review nits on PR github#2473.
Previous attempt used str.replace too broadly and was reverted —
this version uses unique anchors to mutate only the schedule
entry and the top-level updated_at field.

1. extensions/catalog.community.json schedule entry had
   provides.commands: 3, but the extension exposes 4 commands
   (run, portfolio, visualize, calibrate — calibrate was added
   in v0.6.0 Build 2 / calibration feedback loop).

2. Top-level catalog updated_at was 2026-05-06T22:28:55Z but
   per-entry updated_at for our schedule entry is 2026-05-07.
   Since this PR modifies the catalog, the top-level timestamp
   advances too.
@jfranc38 jfranc38 force-pushed the feat/catalog-add-spec-kit-schedule branch 2 times, most recently from e31c312 to 2d8f1d2 Compare May 7, 2026 18:46
jfranc38 pushed a commit to jfranc38/spec-kit that referenced this pull request May 7, 2026
Per Copilot review on PR github#2473: the publishing guide requires an
accepted submission to update both extensions/catalog.community.json
AND the root README's Community Extensions table. Without the README
row the extension wouldn't appear in the primary browsable list.

Inserted alphabetically between 'Spec Diagram' and 'Spec Orchestrator'.
Category: process. Effect: Read+Write.
jfranc38 pushed a commit to jfranc38/spec-kit that referenced this pull request May 7, 2026
…updated_at

Surgical edit responding to two Copilot review nits on PR github#2473.
Previous attempt used str.replace too broadly and was reverted —
this version uses unique anchors to mutate only the schedule
entry and the top-level updated_at field.

1. extensions/catalog.community.json schedule entry had
   provides.commands: 3, but the extension exposes 4 commands
   (run, portfolio, visualize, calibrate — calibrate was added
   in v0.6.0 Build 2 / calibration feedback loop).

2. Top-level catalog updated_at was 2026-05-06T22:28:55Z but
   per-entry updated_at for our schedule entry is 2026-05-07.
   Since this PR modifies the catalog, the top-level timestamp
   advances too.
claude added 8 commits May 7, 2026 15:05
CP-SAT scheduler for spec-kit projects with multi-agent task
optimization. Adds catalog entry for v0.5.2 release.

Pre-flight verification:
- archive/refs/tags/v0.5.2.zip resolves (HTTP 200, 718322 bytes,
  SHA-256 00d4dab1df680e5888e0d0e861eb4696ace00661d40669bf719a75dc379b40b5)
- extension.yml schema_version 1.0, id 'schedule', 3 commands
  (speckit.schedule.run, speckit.schedule.portfolio, speckit.schedule.visualize)
- 566 tests passing on Ubuntu 3.10/3.11/3.12 + macOS 3.12 (all blocking)
- 92.51% line coverage, mypy --strict on 28 modules
- Sigstore attestations via attest-build-provenance@v2 (gh attestation
  verify exit 0 confirmed)
- 4 worked examples + replan demo runnable via bash bin/run-examples.sh

License: MIT
speckit_version: >=0.4.0
v0.5.2 had two real-world install bugs caught when a user tried the
documented commands:

1. README/INSTALL showed 'specify extension add --from URL' (missing
   the EXTENSION positional arg). The canonical form is
   'specify extension add schedule --from URL'. Fixed in v0.5.3.

2. Release zip was ~5x bigger than peer extensions due to dev cruft
   (.github/, tests/, benchmarks/, build metadata). Added .gitattributes
   export-ignore in v0.5.3, dropping the zip from 718 KB to 590 KB.

v0.5.3 archive verified HTTP 200, sigstore attestations active.
Adds an opt-in after_tasks hook so users get prompted to run the
scheduler immediately after /speckit.tasks, without forcing it.
Mirrors the canonical pattern used by the bundled 'git' extension.
Documents the after_tasks hook in README and rewrites the
/speckit.schedule.portfolio command to autodetect the project's
tech stack via solver.autodetect, then refine interactively
against the matching recipe in docs/portfolio-design.md, instead
of starting from a blank slate.
State now encapsulated under .specify/, /speckit.schedule.run is
idempotent with auto-bootstrap, and portfolio detection is
AI-aware (reads .specify/integration.json and discovers the user's
fleet from the canonical location for whichever spec-kit AI
assistant they chose: claude, copilot, cursor-agent, gemini, or any
of the other 26 supported integrations).
Per-AI portfolio templates with verified May 2026 GA models
(gpt-5.5 flagship, claude-opus-4-7, gemini-2.5-flash). Critical
price unit fix (cost_aware reported $ figures 1000× inflated
in v0.6.0). Plus calibration feedback loop and inline summary.
Per Copilot review on PR github#2473: the publishing guide requires an
accepted submission to update both extensions/catalog.community.json
AND the root README's Community Extensions table. Without the README
row the extension wouldn't appear in the primary browsable list.

Inserted alphabetically between 'Spec Diagram' and 'Spec Orchestrator'.
Category: process. Effect: Read+Write.
…updated_at

Surgical edit responding to two Copilot review nits on PR github#2473.
Previous attempt used str.replace too broadly and was reverted —
this version uses unique anchors to mutate only the schedule
entry and the top-level updated_at field.

1. extensions/catalog.community.json schedule entry had
   provides.commands: 3, but the extension exposes 4 commands
   (run, portfolio, visualize, calibrate — calibrate was added
   in v0.6.0 Build 2 / calibration feedback loop).

2. Top-level catalog updated_at was 2026-05-06T22:28:55Z but
   per-entry updated_at for our schedule entry is 2026-05-07.
   Since this PR modifies the catalog, the top-level timestamp
   advances too.
@jfranc38 jfranc38 force-pushed the feat/catalog-add-spec-kit-schedule branch from 2d8f1d2 to ffc08dd Compare May 7, 2026 20:05
Adds /speckit.schedule.status (5th command) — self-diagnose
installation state, distinguishes 'expected-missing' (will
bootstrap automatically) from 'missing' (real problem). Closes
the audit-tool false-alarm gap where schedule-config.yml absence
post-install was misread as broken state.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 0 new

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants