Skip to content

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

Open
jfranc38 wants to merge 7 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 7 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, 636,385 bytes; SHA-256 dfb99412ad5d4eb0d33549094614f814e5680543214f6529d4c75496731659d8)
  • extension.yml schema_version: "1.0" parses cleanly
  • All 4 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)

Quality signals

  • CI matrix (all blocking): Ubuntu × Python 3.10 / 3.11 / 3.12 + macOS-latest × 3.12.
  • Tests: 697 passing, 91.97% line coverage.
  • Type safety: mypy --strict clean across 9 strict-tier modules; mypy clean across all 34 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 for v0.6.1).
  • 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 highlighted in v0.6.1

  • Per-AI portfolio templates for claude / copilot / cursor-agent / gemini with verified May 2026 GA models and corrected per-1K pricing (Anthropic claude-opus-4-7/sonnet-4-6/haiku-4-5, OpenAI gpt-5.5 flagship + gpt-5.4-mini + o4-mini, Google gemini-2.5-pro/flash/flash-lite).
  • AI-aware portfolio detection: reads .specify/integration.json to identify the chosen spec-kit AI assistant and discovers the user's on-disk fleet from the canonical location for that AI; combines discovered implementer-shaped agents + base-portfolio gap-fillers; reviewer- and hybrid-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 now prints a compact summary (status, makespan, agent utilisation, top-3 critical waves, cost split) inline before opening schedule.md.

Test plan

  • Catalog JSON still parses
  • 91 entries total (was 90 + 1 new)
  • Diff is purely additive (32 lines added, 0 removed)
  • Download URL HTTP-200
  • Sigstore attestation verifies on the linked release asset

🤖 Generated with Claude Code

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
@jfranc38 jfranc38 requested a review from mnriem as a code owner May 7, 2026 00:11
claude added 4 commits May 6, 2026 19:29
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).
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
claude added 2 commits May 7, 2026 12:22
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.
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