From 5409670c13bde173651596705d972e8c37e4372d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2026 10:58:49 -0500 Subject: [PATCH] [extension] Add Figma Starter extension to community catalog (#3547) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add Figma Starter extension to community catalog Add figma-starter extension submitted by @vibhus to: - extensions/catalog.community.json (alphabetical order) - docs/community/extensions.md community extensions table Closes #3545 Assisted-by: GitHub Copilot (model: claude-sonnet-4.6, autonomous) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: add missing python3 >=3.8 version constraint in figma-starter catalog entry Assisted-by: GitHub Copilot (model: claude-sonnet-4.5, autonomous) * fix(agent-context): reduce Python subprocess overhead in PS 5.1 YAML fallback The PowerShell update-agent-context.ps1 script falls back to Python when PS 5.1 (which lacks ConvertFrom-Yaml and cannot parse YAML as JSON) reads the extension config. It previously launched Python twice: once to verify that Python 3 + PyYAML were available, and once to run a temp script file that parsed the YAML and printed JSON. On Windows CI each Python startup—plus potential Windows Defender scanning of a freshly-created .tmp file—can take several seconds. With two launches plus PS 5.1's own startup time the subprocess.run(timeout=30) threshold in test_powershell_script_discovers_nested_plan was regularly exceeded, causing the CI job to fail. Replace the two-phase approach with a single Python -c one-liner that verifies PyYAML availability, parses the YAML file, and emits JSON in one process. This halves the number of Python launches and eliminates the temp file entirely, keeping total execution time well under 30 s. Assisted-by: GitHub Copilot (model: claude-sonnet-4.5, autonomous) * revert(agent-context): restore update-agent-context.ps1 to pre-optimization state The runtime optimization (one-liner Python fallback, stderr suppression) was unrelated to the Figma Starter catalog addition (issue #3545) and removed the actionable PyYAML/parse diagnostic messages. Revert the file so the PR only contains the catalog-entry and documentation changes. Assisted-by: GitHub Copilot (model: claude-sonnet-4.6, autonomous) --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- docs/community/extensions.md | 1 + extensions/catalog.community.json | 37 +++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/docs/community/extensions.md b/docs/community/extensions.md index b529c2e52..3d2005a69 100644 --- a/docs/community/extensions.md +++ b/docs/community/extensions.md @@ -54,6 +54,7 @@ The following community-contributed extensions are available in [`catalog.commun | DocGuard — CDD Enforcement | Doc-integrity engine with MCP server, SARIF output, and zero-LLM core. Validates, scores, and traces documentation against code — 24 validators, stable finding codes, spec-kit hooks. Pure Node.js. | `docs` | Read+Write | [spec-kit-docguard](https://github.com/raccioly/docguard) | | EARS Requirements Syntax | Author, lint, and convert requirements using EARS - the five industry-standard sentence patterns for unambiguous, testable requirements | `docs` | Read+Write | [spec-kit-ears](https://github.com/dhruv-15-03/spec-kit-ears) | | Extensify | Create and validate extensions and extension catalogs | `process` | Read+Write | [extensify](https://github.com/mnriem/spec-kit-extensions/tree/main/extensify) | +| Figma Starter | Turns a Figma section's screens into per-screen spec.md files, an app-level user-stories.md, and a build-order.md, then hands off to /speckit.specify | `integration` | Read+Write | [spec-kit-figma-starter](https://github.com/wavemaker/spec-kit-figma-starter) | | Fix Findings | Automated analyze-fix-reanalyze loop that resolves spec findings until clean | `code` | Read+Write | [spec-kit-fix-findings](https://github.com/Quratulain-bilal/spec-kit-fix-findings) | | FixIt Extension | Spec-aware bug fixing — maps bugs to spec artifacts, proposes a plan, applies minimal changes | `code` | Read+Write | [spec-kit-fixit](https://github.com/speckit-community/spec-kit-fixit) | | Fleet Orchestrator | Orchestrate a full feature lifecycle with human-in-the-loop gates across all SpecKit phases | `process` | Read+Write | [spec-kit-fleet](https://github.com/sharathsatish/spec-kit-fleet) | diff --git a/extensions/catalog.community.json b/extensions/catalog.community.json index 477adeac5..1da026596 100644 --- a/extensions/catalog.community.json +++ b/extensions/catalog.community.json @@ -1355,6 +1355,43 @@ "created_at": "2026-07-08T00:00:00Z", "updated_at": "2026-07-08T00:00:00Z" }, + "figma-starter": { + "name": "Figma Starter", + "id": "figma-starter", + "description": "Turns a Figma section's screens into per-screen spec.md files, an app-level user-stories.md, and a build-order.md, then hands off to /speckit.specify.", + "author": "WaveMaker", + "version": "1.0.0", + "download_url": "https://github.com/wavemaker/spec-kit-figma-starter/archive/refs/tags/v1.0.0.zip", + "repository": "https://github.com/wavemaker/spec-kit-figma-starter", + "homepage": "https://github.com/wavemaker/spec-kit-figma-starter", + "documentation": "https://github.com/wavemaker/spec-kit-figma-starter/blob/main/README.md", + "changelog": "https://github.com/wavemaker/spec-kit-figma-starter/blob/main/CHANGELOG.md", + "license": "MIT", + "category": "integration", + "effect": "read-write", + "requires": { + "speckit_version": ">=0.1.0", + "tools": [ + { "name": "python3", "version": ">=3.8", "required": true } + ] + }, + "provides": { + "commands": 1, + "hooks": 1 + }, + "tags": [ + "figma", + "design", + "design-to-spec", + "ui", + "frontend" + ], + "verified": false, + "downloads": 0, + "stars": 0, + "created_at": "2026-07-15T00:00:00Z", + "updated_at": "2026-07-15T00:00:00Z" + }, "fix-findings": { "name": "Fix Findings", "id": "fix-findings",