Skip to content

[Extension]: Add openproject #4887

Description

@ringind

Extension ID

openproject

Extension Name

OpenProject Integration

Version

0.1.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

https://github.com/Nachklang-io/speckit-openproject/releases/download/extension-v0.1.0/openproject-extension-0.1.0.zip

License

MIT

Homepage (optional)

https://github.com/Nachklang-io/speckit-openproject

Documentation URL (optional)

https://github.com/Nachklang-io/speckit-openproject/blob/extension-v0.1.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 CLI

Number 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.yml after a diff
  • speckit.openproject.sync-status: syncs task checkboxes in tasks.md with work package statuses (OpenProject wins conflicts; never reopens)
  • speckit.openproject.sync-docs: attaches spec.md, plan.md and other design documents to the feature work package and keeps a summary block in its description
  • speckit.openproject.sync-version: creates or reuses the feature's OpenProject version and assigns the work packages
  • speckit.openproject.log-time: logs time entries against the feature's work packages, without duplicates on re-run
  • Optional after_implement hook that offers sync-status
  • Every write command supports --dry-run and 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.yml manifest 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:

  • macOS with spec-kit 1.1.1, Claude Code in skills mode
  • Self-hosted OpenProject Community Edition, MCP server openproject-ce-mcp 0.4.1

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):

  1. Installed from the GitHub release URL and with --dev; both installs behave the same (S26, S27, S33)
  2. discover-fields: bootstrap, re-run after hand edits, dry run, stop conditions (S10–S13)
  3. sync-status: baseline, both directions, restricted workflow, stop conditions (S14–S17)
  4. sync-docs: first upload, changed document, interrupted run, stop conditions (S18–S21)
  5. sync-version and log-time: dry run, real run, re-run, interruption, missing write flags (S22–S25)

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) are listed in the README.

Example Usage

# Install extension
specify extension add openproject --from https://github.com/Nachklang-io/speckit-openproject/releases/download/extension-v0.1.0/openproject-extension-0.1.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-feature

Proposed 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.1.0",
    "download_url": "https://github.com/Nachklang-io/speckit-openproject/releases/download/extension-v0.1.0/openproject-extension-0.1.0.zip",
    "sha256": "68011188bd41cfd98f8ea1590a3a7a63862696eede938bb17c6652745ba2f2a4",
    "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.1.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

Activity

  1. added
    triage-nice-to-haveVerdict: evidence-backed fix or greenlit feature — land after review
    triage-must-haveVerdict: high-value, important work for Spec Kit — do first
    and removed
    triage-nice-to-haveVerdict: evidence-backed fix or greenlit feature — land after review
    on Oct 8, 2026
  2. github-actions commented on Oct 9, 2026

    @github-actions
    Contributor

    cc @github/spec-kit-maintainers — new catalog submission for review.

  3. added a commit that references this issue on Oct 9, 2026
    e4dea2d
  4. github-actions commented on Oct 9, 2026

    @github-actions
    Contributor

    Pull request created: #4893

    Generated by Add Community Extension from Issue Submission · copilot · gpt52codex · 4.25 AIC · ⌖ 0.688 AIC · ⊞ 25K

  5. mnriem commented on Oct 9, 2026

    @mnriem
    Collaborator

    Thank you!

  6. added a commit that references this issue on Oct 9, 2026
    34d460f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions