Repository navigation
[Extension]: Update openproject to 0.2.0 #4920
Description
Extension ID
openproject
Extension Name
OpenProject Integration
Version
0.2.0
Description
Sync fields, status, docs, versions and time between spec-kit and OpenProject via MCP
Author
Daniel Ring
Repository URL
https://github.com/Nachklang-io/speckit-openproject
Download URL
License
MIT
Homepage (optional)
https://github.com/Nachklang-io/speckit-openproject
Documentation URL (optional)
https://github.com/Nachklang-io/speckit-openproject/blob/extension-v0.2.0/extension/README.md
Changelog URL (optional)
https://github.com/Nachklang-io/speckit-openproject/blob/main/CHANGELOG.md
Required Spec Kit Version
=1.1.0
Required Tools (optional)
- openproject-ce-mcp (>=0.4.1) - required; an MCP server configured in the AI agent's MCP client (https://github.com/jtauschl/openproject-ce-mcp), not a CLINumber of Commands
5
Number of Hooks (optional)
1
Tags
openproject, project-management, mcp
Key Features
speckit.openproject.discover-fields: reads types, statuses and mandatory custom fields of an OpenProject project and writes.specify/openproject/config.ymlafter a diffspeckit.openproject.sync-status: syncs task checkboxes intasks.mdwith work package statuses (OpenProject wins conflicts; never reopens); new in 0.2.0: rolls the status of the phase and feature work packages up from their tasks (open / in progress / done), on by default, switchrollup_parents: falsein the configspeckit.openproject.sync-docs: attachesspec.md,plan.mdand other design documents to the feature work package and keeps a summary block in its descriptionspeckit.openproject.sync-version: creates or reuses the feature's OpenProject version and assigns the work packagesspeckit.openproject.log-time: logs time entries against the feature's work packages, without duplicates on re-run- Optional
after_implementhook that offerssync-status - Every write command supports
--dry-runand is idempotent through a per-feature mapping file - All OpenProject access goes through an MCP server; the extension never calls the REST API and never stores tokens
Testing Checklist
- Extension installs successfully via download URL
- All commands execute without errors
- Documentation is complete and accurate
- No security vulnerabilities identified
- Tested on at least one real project
Submission Requirements
- Valid
extension.ymlmanifest included - README.md with installation and usage instructions
- LICENSE file included
- GitHub release created with version tag
- All command files exist and are properly formatted
- Extension ID follows naming conventions (lowercase-with-hyphens)
Testing Details
Tested on:
- 0.1.0: macOS with spec-kit 1.1.1, Claude Code in skills mode, MCP server
openproject-ce-mcp0.4.1 - 0.2.0: Linux with spec-kit CLI 1.1.4.dev0, Claude Code in skills mode (headless sessions), MCP server
openproject-ce-mcp0.4.2 (0.4.1 is the version named as required); self-hosted OpenProject Community Edition
Test project: a scratch spec-kit project against a sandbox OpenProject project; the extension's own repository is developed with spec-kit as well.
Test scenarios (full list with dates and results: https://github.com/Nachklang-io/speckit-openproject/blob/main/docs/TESTING.md):
- Installed from the GitHub release URL and with
--dev; both installs behave the same (S26, S27, S33) discover-fields: bootstrap, re-run after hand edits, dry run, stop conditions (S10–S13)sync-status: baseline, both directions, restricted workflow, stop conditions (S14–S17)sync-docs: first upload, changed document, interrupted run, stop conditions (S18–S21)sync-versionandlog-time: dry run, real run, re-run, interruption, missing write flags (S22–S25)- New in 0.2.0, the parent roll-up of
sync-status(S34–S40): all done, mixed progress, parents in other closed or unmapped statuses, switched off, a workflow that forbids the transition (blocked with the server's reason), membership by parent,## Phase 01headings; all run live in the sandbox with a dry run first. Not run: a confirm rejected after a valid preview
Security: no secrets are stored by the extension (tokens live only in the MCP client config); writes are limited by the MCP server's project allowlist. No third-party security audit was done.
Known untested paths (command mode, other MCP servers, accepting the hook from inside /speckit-implement, a confirm rejected after a valid preview) are listed in the README and in docs/TESTING.md.
Example Usage
# Install extension
specify extension add openproject --from https://github.com/Nachklang-io/speckit-openproject/releases/download/extension-v0.2.0/openproject-extension-0.2.0.zip
# Create the config from the OpenProject project
/speckit.openproject.discover-fields my-project --dry-run
# Sync task progress between tasks.md and OpenProject
/speckit.openproject.sync-status 001-my-featureProposed Catalog Entry
{
"openproject": {
"name": "OpenProject Integration",
"id": "openproject",
"description": "Sync fields, status, docs, versions and time between spec-kit and OpenProject via MCP",
"author": "Daniel Ring",
"version": "0.2.0",
"download_url": "https://github.com/Nachklang-io/speckit-openproject/releases/download/extension-v0.2.0/openproject-extension-0.2.0.zip",
"sha256": "252d0d822d76fa8ba942aa3b8078ca074d47ec783b841210b40057e599fbd23f",
"repository": "https://github.com/Nachklang-io/speckit-openproject",
"homepage": "https://github.com/Nachklang-io/speckit-openproject",
"documentation": "https://github.com/Nachklang-io/speckit-openproject/blob/extension-v0.2.0/extension/README.md",
"changelog": "https://github.com/Nachklang-io/speckit-openproject/blob/main/CHANGELOG.md",
"license": "MIT",
"requires": {
"speckit_version": ">=1.1.0",
"tools": [
{
"name": "openproject-ce-mcp",
"version": ">=0.4.1",
"required": true
}
]
},
"provides": {
"commands": 5,
"hooks": 1
},
"tags": [
"openproject",
"project-management",
"mcp"
]
}
}Additional Context
The extension lives in the extension/ directory of a monorepo that also holds the companion openproject preset (submitted separately; it overrides speckit.taskstoissues). The release asset is a self-contained archive with extension.yml at its root. Submission checklist: https://github.com/Nachklang-io/speckit-openproject/blob/main/docs/catalog/extension-checklist.md
This is an update to the existing catalog entry (submitted as #4887, merged in #4893; the catalog lists 0.1.0). Version 0.2.0 adds the parent status roll-up to speckit.openproject.sync-status. It is on by default: after a sync, phase and feature work packages follow their tasks, so a run can write more than 0.1.0 did. Set rollup_parents: false to keep the 0.1.0 behaviour. The new configuration key is optional; no existing key was renamed or removed. Changelog: https://github.com/Nachklang-io/speckit-openproject/blob/main/CHANGELOG.md. sha256 of the release asset: 252d0d822d76fa8ba942aa3b8078ca074d47ec783b841210b40057e599fbd23f.
Activity
github-actions commentedon Oct 12, 2026
cc @github/spec-kit-maintainers — new catalog submission for review.
Update OpenProject Integration extension to v0.2.0
github-actions commentedon Oct 12, 2026
Pull request created: #4929
Update OpenProject Integration extension to v0.2.0 (#4929)