From b5db15939466469ff3e9438fbf3a0450630a0894 Mon Sep 17 00:00:00 2001 From: Julio Cesar Franco Date: Mon, 11 May 2026 11:00:23 -0500 Subject: [PATCH] feat(catalog): add Spec Kit Schedule (schedule) community extension (#2473) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(catalog): add Spec Kit Schedule (schedule) community extension 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 * fix(catalog): update Spec Kit Schedule entry to v0.5.3 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. * fix(catalog): bump Spec Kit Schedule entry to v0.5.4 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. * fix(catalog): bump Spec Kit Schedule entry to v0.5.5 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. * fix(catalog): bump Spec Kit Schedule entry to v0.6.0 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). * fix(catalog): bump Spec Kit Schedule entry to v0.6.1 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. * fix(readme): add Spec Kit Schedule row to Community Extensions table Per Copilot review on PR #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. * fix(catalog): provides.commands 3→4 (schedule only) + bump top-level updated_at Surgical edit responding to two Copilot review nits on PR #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. * fix(catalog): bump Spec Kit Schedule entry to v0.6.2 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. --------- Co-authored-by: Julio César Franco Ardila --- README.md | 1 + extensions/catalog.community.json | 34 ++++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 964c51602..614674a4e 100644 --- a/README.md +++ b/README.md @@ -268,6 +268,7 @@ The following community-contributed extensions are available in [`catalog.commun | Spec Reference Loader | Reads the ## References section from the feature spec and loads only the listed docs into context | `docs` | Read-only | [spec-kit-spec-reference-loader](https://github.com/KevinBrown5280/spec-kit-spec-reference-loader) | | Spec Critique Extension | Dual-lens critical review of spec and plan from product strategy and engineering risk perspectives | `docs` | Read-only | [spec-kit-critique](https://github.com/arunt14/spec-kit-critique) | | Spec Diagram | Auto-generate Mermaid diagrams of SDD workflow state, feature progress, and task dependencies | `visibility` | Read-only | [spec-kit-diagram-](https://github.com/Quratulain-bilal/spec-kit-diagram-) | +| Spec Kit Schedule | Optimal multi-agent task scheduling via CP-SAT — DAG precedence, hallucination-aware caps, file-conflict avoidance, stochastic durations, replanning, and interactive HTML output | `process` | Read+Write | [spec-kit-schedule](https://github.com/jfranc38/spec-kit-schedule) | | Spec Orchestrator | Cross-feature orchestration — track state, select tasks, and detect conflicts across parallel specs | `process` | Read-only | [spec-kit-orchestrator](https://github.com/Quratulain-bilal/spec-kit-orchestrator) | | Spec Refine | Update specs in-place, propagate changes to plan and tasks, and diff impact across artifacts | `process` | Read+Write | [spec-kit-refine](https://github.com/Quratulain-bilal/spec-kit-refine) | | Spec Scope | Effort estimation and scope tracking — estimate work, detect creep, and budget time per phase | `process` | Read-only | [spec-kit-scope-](https://github.com/Quratulain-bilal/spec-kit-scope-) | diff --git a/extensions/catalog.community.json b/extensions/catalog.community.json index 68f0933b5..00bac202a 100644 --- a/extensions/catalog.community.json +++ b/extensions/catalog.community.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "updated_at": "2026-05-07T15:37:14Z", + "updated_at": "2026-05-07T20:05:00Z", "catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/extensions/catalog.community.json", "extensions": { "aide": { @@ -2145,6 +2145,38 @@ "created_at": "2026-04-20T00:00:00Z", "updated_at": "2026-04-20T00:00:00Z" }, + "schedule": { + "name": "Spec Kit Schedule — CP-SAT Agent Orchestrator", + "id": "schedule", + "description": "Optimal multi-agent task scheduling via CP-SAT solver with DAG precedence, hallucination-aware caps, file-conflict avoidance, stochastic durations, replanning, and interactive HTML output", + "author": "Julio César Franco Ardila", + "version": "0.6.2", + "download_url": "https://github.com/jfranc38/spec-kit-schedule/archive/refs/tags/v0.6.2.zip", + "repository": "https://github.com/jfranc38/spec-kit-schedule", + "homepage": "https://github.com/jfranc38/spec-kit-schedule", + "documentation": "https://github.com/jfranc38/spec-kit-schedule/blob/main/README.md", + "changelog": "https://github.com/jfranc38/spec-kit-schedule/blob/main/CHANGELOG.md", + "license": "MIT", + "requires": { + "speckit_version": ">=0.4.0" + }, + "provides": { + "commands": 5, + "hooks": 1 + }, + "tags": [ + "scheduling", + "optimization", + "multi-agent", + "cp-sat", + "operations-research" + ], + "verified": false, + "downloads": 0, + "stars": 0, + "created_at": "2026-05-06T22:35:00Z", + "updated_at": "2026-05-07T17:25:00Z" + }, "scope": { "name": "Spec Scope", "id": "scope",