mr.zeroandClaude Opus 5 bab8bacf33 Follow the workspace and wiki reshuffle
The workspace folders now match the Gitea orgs one-to-one, so the note
that they deliberately differ no longer holds. wiki-pages sits under
infra/, and the wiki gained an engines/ section for our own engines and
libraries.

Also records that moving a wiki page means adding a redirect in
config/site.yaml, which is how the engine pages kept their old URLs
working.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-16 16:06:04 +02:00

TTG Marketplace

Claude Code plugin marketplace with three plugins:

  • redmine-mcp — dependency-free Node.js MCP server for the Redmine REST API
  • grav-mcp — dependency-free Node.js MCP server for the Grav CMS REST API
  • ttg-ops — skills for running the forge estate: releasing libraries, moving and creating repos, enrolling CI, auditing consistency, and updating the docs after a change

Installation

/plugin marketplace add /Users/tasi/Work/TTG/ttg-marketplace
/plugin install redmine-mcp@ttg-marketplace
/plugin install grav-mcp@ttg-marketplace
/plugin install ttg-ops@ttg-marketplace

(From a git repo: /plugin marketplace add <git-url>.)

After installing: /reload-plugins or start a new session.

redmine-mcp

Settings requested at install time:

Setting Description
redmine_url Base URL of the Redmine instance, e.g. https://redmine.example.com
redmine_api_key My account → "API access key" on the right (the administrator must enable it: Administration → Settings → API → Enable REST web service)

Issues: redmine_list_issues, redmine_get_issue (with journals/attachments/relations includes), redmine_create_issue, redmine_update_issue (fields + comment via notes), redmine_delete_issue

Projects: redmine_list_projects, redmine_get_project, redmine_list_versions

Time tracking: redmine_list_time_entries, redmine_create_time_entry, redmine_update_time_entry, redmine_delete_time_entry

Users: redmine_list_users (admin), redmine_get_user (id="current" = own account)

Reference data: redmine_list_metadata — statuses, trackers, priorities, activities, custom fields, roles, saved queries, groups, project categories, memberships

Wiki and search: redmine_list_wiki_pages, redmine_get_wiki_page, redmine_update_wiki_page (upsert), redmine_search

grav-mcp

Settings requested at install time:

Setting Description
grav_url Base URL of the Grav site, e.g. https://example.com (/api/v1 is appended automatically)
grav_api_key API key — created for your user account in the Grav admin, sent as the X-API-Key header

Pages: grav_list_pages (search, template/parent/published filters), grav_get_page (markdown or rendered HTML, children, translation metadata), grav_create_page, grav_update_page, grav_delete_page, grav_move_page, grav_copy_page, grav_reorder_pages, grav_translate_page, grav_list_taxonomy

Media: grav_list_media (site- or page-level), grav_upload_media (uploads a local file via multipart), grav_delete_media, grav_manage_media (rename file, create/delete/rename folders)

Configuration: grav_get_config, grav_update_config (deep-merge; system, site, plugins/{name}, themes/{name} scopes)

Users: grav_list_users, grav_get_user (username="me" = own account), grav_create_user, grav_update_user, grav_delete_user

System: grav_system_info, grav_clear_cache, grav_get_logs, grav_manage_backups

Blueprints: grav_get_blueprint — page templates, user, permissions, config, plugin, theme and flex schemas

Package manager (GPM): grav_list_packages (installed or repository), grav_check_updates, grav_manage_package (install/remove/update/update-all/core upgrade)

Other: grav_scheduler (jobs, status, history, run), grav_dashboard (stats, popularity, notifications), grav_manage_webhooks, flex objects: grav_list_flex, grav_get_flex_object, grav_save_flex_object, grav_delete_flex_object

ttg-ops

No settings — the skills drive the tools that are already on the machine: the tea CLI (Gitea API, login ttg), git, go and gem.

Skill What it does
ttg-publish-module Releases a library: checks the module path against the repo's org, tags, and verifies from a clean external project that the release is fetchable. Knows that Gitea's redirect does not cover Go module paths or package namespaces.
ttg-move-repo Moves or renames a repo and follows the change through: clone list, local remotes, wiki links and link text, go.mod, Gemfile, CI config, docs.
ttg-new-repo Creates a repo in the right org and registers it everywhere — clone list, WIKI_CONNECTION.md, wiki page, CI. Includes the org/team setup a new org needs.
ttg-ci-enroll Wires a repo into the Woodpecker build and proves it runs. Covers the usual failure: the config is there, the repo is not registered, nothing happens silently.
ttg-audit-forge Audits drift between forge, clone list, wiki, catalog and CI. Reports first, fixes only on approval.
ttg-update-docs After a change, updates the README of the repo that changed, its wiki page in wiki-pages, and the public site in teletypegames (Vue page plus both locale files).

The rules these skills follow are not duplicated inside them: the org taxonomy lives in devarea/REPO_REFACT.md, the repo→wiki mapping in devarea/WIKI_CONNECTION.md, and the ecosystem status in devarea/ECOSYSTEM_PLAN.md. The skills read those rather than carry a second copy that drifts.

Notes

  • Neither MCP server has any npm dependencies (Node 18+ built-in fetch), and there is no build step.
  • Manual testing without the plugin:
    REDMINE_URL=https://redmine.example.com REDMINE_API_KEY=xxx \
      node plugins/redmine-mcp/server/index.js
    
    GRAV_URL=https://example.com GRAV_API_KEY=xxx \
      node plugins/grav-mcp/server/index.js
    
S
Description
Claude Marketplace for our solutions
Readme
105 KiB
Languages
JavaScript 100%