From 788c82ba6fb5d7b9d0fd7f517d1ef96644a4a8c1 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sun, 10 May 2026 19:48:58 +0000 Subject: [PATCH 1/9] chore: remove deprecated .mokostandards (now .moko-platform) [skip ci] --- .gitea/.mokostandards | 78 ------------------------------------------- 1 file changed, 78 deletions(-) delete mode 100644 .gitea/.mokostandards diff --git a/.gitea/.mokostandards b/.gitea/.mokostandards deleted file mode 100644 index bf04b01..0000000 --- a/.gitea/.mokostandards +++ /dev/null @@ -1,78 +0,0 @@ - - - - - joomla-api-mcp - MokoConsulting - MCP server for Joomla Web Services API operations - GNU General Public License v3 - - - mcp-server - 04.07.00 - https://git.mokoconsulting.tech/MokoConsulting/MokoStandards - 2026-05-07T19:13:00+00:00 - - - TypeScript - mcp-server - - - - ${{ secrets.DEV_HOST }} - ${{ secrets.DEV_PATH }} - sftp - dev/** - src/ - - - ${{ secrets.DEMO_HOST }} - ${{ secrets.DEMO_PATH }} - sftp - main - src/ - - - - - - - - - - - - -- 2.52.0 From 2093b9f651ad318d3f56fb28f6e9f4806d49230e Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sun, 10 May 2026 19:51:10 +0000 Subject: [PATCH 2/9] chore: add .moko-platform manifest [skip ci] --- .gitea/.moko-platform | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .gitea/.moko-platform diff --git a/.gitea/.moko-platform b/.gitea/.moko-platform new file mode 100644 index 0000000..6a1ab3d --- /dev/null +++ b/.gitea/.moko-platform @@ -0,0 +1,25 @@ + + + + + joomla-api-mcp + MokoConsulting + MCP server for Joomla Web Services API operations + GNU General Public License v3 + + + nodejs + 04.07.00 + https://git.mokoconsulting.tech/MokoConsulting/moko-platform + 2026-05-10T19:51:10+00:00 + + + TypeScript + mcp-server + src/ + + -- 2.52.0 From 42b471c7fe9b1486a5a49fbd2c1596685335c7b0 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sun, 10 May 2026 19:55:22 +0000 Subject: [PATCH 3/9] docs: add CLAUDE.md for Claude Code context [skip ci] --- CLAUDE.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..d212449 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,41 @@ +# CLAUDE.md + +This file provides guidance to Claude Code when working with this repository. + +## Project Overview + +**joomla-api-mcp** -- MCP server for Joomla Web Services API operations + +| Field | Value | +|---|---| +| **Platform** | mcp-server | +| **Language** | TypeScript | +| **Default branch** | main | +| **License** | GPL-3.0-or-later | +| **Wiki** | [joomla-api-mcp Wiki](https://git.mokoconsulting.tech/MokoConsulting/joomla-api-mcp/wiki) | +| **Standards** | [MokoStandards](https://git.mokoconsulting.tech/MokoConsulting/moko-platform/wiki/Home) | + +## Common Commands + +```bash +npm install # Install dependencies +npm run build # Compile TypeScript +npm run dev # Development mode +``` + +## Architecture + +This is an MCP (Model Context Protocol) server. Key files: +- `src/index.ts` -- server entry point and tool registration +- `src/config.ts` -- configuration loading +- `src/tools/` -- individual tool implementations +- `dist/` -- compiled output (gitignored) + +## Rules + +- **Never commit** `.claude/`, `.mcp.json`, `TODO.md`, or `*.min.css`/`*.min.js` +- **Attribution**: use `Authored-by: Moko Consulting` in commits +- **Branch strategy**: develop on `dev`, merge to `main` for release +- **Minification**: handled at build time (CI) and runtime (MokoMinifyHelper for Joomla templates) +- **Wiki**: documentation lives in the Gitea wiki, not in `docs/` files +- **Standards**: this repo follows [MokoStandards](https://git.mokoconsulting.tech/MokoConsulting/moko-platform/wiki/Home) -- 2.52.0 From c47b1afd848453ac1228c4865224f27abec9582f Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sun, 10 May 2026 19:57:25 +0000 Subject: [PATCH 4/9] chore: remove renovate.json [skip ci] --- renovate.json | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 renovate.json diff --git a/renovate.json b/renovate.json deleted file mode 100644 index 15c6a10..0000000 --- a/renovate.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "config:recommended", - "schedule:weekly", - ":disableDependencyDashboard" - ], - "labels": ["dependencies"], - "automerge": false, - "platformAutomerge": false, - "rangeStrategy": "bump", - "packageRules": [ - { - "matchUpdateTypes": ["patch"], - "automerge": true - }, - { - "matchManagers": ["composer"], - "enabled": true - }, - { - "matchManagers": ["npm"], - "enabled": true - } - ] -} -- 2.52.0 From cf88c15a1b37bbded41dfb27c8a47aebb3942600 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Mon, 11 May 2026 16:36:16 +0000 Subject: [PATCH 5/9] security: add permissions block to mcp-build-test.yml [skip ci] --- .gitea/workflows/mcp-build-test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitea/workflows/mcp-build-test.yml b/.gitea/workflows/mcp-build-test.yml index cb631c7..5d8b97b 100644 --- a/.gitea/workflows/mcp-build-test.yml +++ b/.gitea/workflows/mcp-build-test.yml @@ -15,6 +15,10 @@ on: branches: [main] paths: ['src/**', 'package.json', 'tsconfig.json'] + +permissions: + contents: read + jobs: build: runs-on: ubuntu-latest -- 2.52.0 From 0144e1e440f9c0a1259e065c373801220c125805 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Mon, 11 May 2026 16:36:16 +0000 Subject: [PATCH 6/9] security: add permissions block to mcp-sdk-check.yml [skip ci] --- .gitea/workflows/mcp-sdk-check.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitea/workflows/mcp-sdk-check.yml b/.gitea/workflows/mcp-sdk-check.yml index b926cd3..752eccc 100644 --- a/.gitea/workflows/mcp-sdk-check.yml +++ b/.gitea/workflows/mcp-sdk-check.yml @@ -12,6 +12,10 @@ on: - cron: '0 9 * * 1' # Every Monday at 9am UTC workflow_dispatch: + +permissions: + contents: read + jobs: check-sdk: runs-on: ubuntu-latest -- 2.52.0 From 57ba1053f5dc5042fecb51e1402c848830d05287 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Mon, 11 May 2026 16:36:16 +0000 Subject: [PATCH 7/9] security: add permissions block to mcp-tool-inventory.yml [skip ci] --- .gitea/workflows/mcp-tool-inventory.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitea/workflows/mcp-tool-inventory.yml b/.gitea/workflows/mcp-tool-inventory.yml index f935b0c..cc4c614 100644 --- a/.gitea/workflows/mcp-tool-inventory.yml +++ b/.gitea/workflows/mcp-tool-inventory.yml @@ -13,6 +13,10 @@ on: paths: ['src/index.ts'] workflow_dispatch: + +permissions: + contents: read + jobs: inventory: runs-on: ubuntu-latest -- 2.52.0 From 7072493fe2a20548bd06e5f561012c4213caae45 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Mon, 11 May 2026 17:16:03 +0000 Subject: [PATCH 8/9] chore: add PR branch policy check workflow [skip ci] --- .gitea/workflows/pr-branch-check.yml | 90 ++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 .gitea/workflows/pr-branch-check.yml diff --git a/.gitea/workflows/pr-branch-check.yml b/.gitea/workflows/pr-branch-check.yml new file mode 100644 index 0000000..b8d9742 --- /dev/null +++ b/.gitea/workflows/pr-branch-check.yml @@ -0,0 +1,90 @@ +# Copyright (C) 2026 Moko Consulting +# SPDX-License-Identifier: GPL-3.0-or-later +# +# Enforces branch merge policy: +# feature/* → dev only +# fix/* → dev only +# hotfix/* → dev or main (emergency) +# dev → main only +# alpha/* → dev only +# beta/* → dev only +# rc/* → main only + +name: Branch Policy Check + +on: + pull_request: + types: [opened, synchronize, reopened, edited] + +jobs: + check-target: + name: Verify merge target + runs-on: ubuntu-latest + steps: + - name: Check branch policy + run: | + HEAD="${{ github.head_ref }}" + BASE="${{ github.base_ref }}" + + echo "PR: ${HEAD} → ${BASE}" + + ALLOWED=true + REASON="" + + case "$HEAD" in + feature/*|feat/*) + if [ "$BASE" != "dev" ]; then + ALLOWED=false + REASON="Feature branches must target 'dev', not '${BASE}'" + fi + ;; + fix/*|bugfix/*) + if [ "$BASE" != "dev" ]; then + ALLOWED=false + REASON="Fix branches must target 'dev', not '${BASE}'" + fi + ;; + hotfix/*) + if [ "$BASE" != "dev" ] && [ "$BASE" != "main" ]; then + ALLOWED=false + REASON="Hotfix branches can only target 'dev' or 'main', not '${BASE}'" + fi + ;; + alpha/*|beta/*) + if [ "$BASE" != "dev" ]; then + ALLOWED=false + REASON="Pre-release branches must target 'dev', not '${BASE}'" + fi + ;; + rc/*) + if [ "$BASE" != "main" ]; then + ALLOWED=false + REASON="Release candidate branches must target 'main', not '${BASE}'" + fi + ;; + dev) + if [ "$BASE" != "main" ]; then + ALLOWED=false + REASON="Dev branch can only merge into 'main', not '${BASE}'" + fi + ;; + esac + + if [ "$ALLOWED" = false ]; then + echo "::error::${REASON}" + echo "" + echo "## Branch Policy Violation" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "${REASON}" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "### Allowed merge paths:" >> $GITHUB_STEP_SUMMARY + echo "- \`feature/*\` → \`dev\`" >> $GITHUB_STEP_SUMMARY + echo "- \`fix/*\` → \`dev\`" >> $GITHUB_STEP_SUMMARY + echo "- \`hotfix/*\` → \`dev\` or \`main\`" >> $GITHUB_STEP_SUMMARY + echo "- \`dev\` → \`main\`" >> $GITHUB_STEP_SUMMARY + echo "- \`rc/*\` → \`main\`" >> $GITHUB_STEP_SUMMARY + exit 1 + fi + + echo "Branch policy: OK (${HEAD} → ${BASE})" + echo "## Branch Policy: Passed" >> $GITHUB_STEP_SUMMARY -- 2.52.0 From db487fdd57c5972e38a74dd6e641918edec6084c Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Mon, 11 May 2026 21:18:15 +0000 Subject: [PATCH 9/9] =?UTF-8?q?chore:=20remove=20ROADMAP.md=20=E2=80=94=20?= =?UTF-8?q?moved=20to=20issues-based=20roadmap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ROADMAP.md | 142 ----------------------------------------------------- 1 file changed, 142 deletions(-) delete mode 100644 ROADMAP.md diff --git a/ROADMAP.md b/ROADMAP.md deleted file mode 100644 index dc01995..0000000 --- a/ROADMAP.md +++ /dev/null @@ -1,142 +0,0 @@ - - -# [Project Name] Roadmap - -## Scope and Intent - -This document defines the roadmap for [Project Name] starting with version **[X.Y.Z]**. It establishes the sequencing, intent, and maturity expectations for deliverables governed by this project. - -This roadmap is forward-looking by design. Completed work prior to the current baseline version is considered foundational and is intentionally excluded. This file tracks **current and future-state development only**. - -## Version [X.Y.Z] — [Phase Name] ✅ COMPLETED / 🔄 IN PROGRESS / 📋 PLANNED - -Focus: [Brief description of this version's primary focus] - -### Completed Deliverables - -* ✅ **[Category Name]** - * ✅ [Specific deliverable or feature] - * ✅ [Specific deliverable or feature] -* ✅ **[Category Name]** - * ✅ [Specific deliverable or feature] - -### In Progress - -* 🔄 [Item currently being worked on] -* 🔄 [Item currently being worked on] - -### Planned Deliverables - -* [Future planned item] -* [Future planned item] - -### Achieved Outcomes - -* ✅ [Measurable outcome or benefit] -* ✅ [Measurable outcome or benefit] -* 🔄 [Partially achieved outcome] - -## Version [X.Y+1.Z] — [Next Phase Name] - -Focus: [Brief description of next version's primary focus] - -### In-Scope Deliverables - -* [Deliverable for next version] -* [Deliverable for next version] - -### Outcomes - -* [Expected outcome or benefit] -* [Expected outcome or benefit] - -## Version [X.Y+2.Z] — [Future Phase Name] - -Focus: [Brief description of future version's primary focus] - -### Planned Deliverables - -* [Future deliverable] -* [Future deliverable] - -### Outcomes - -* [Expected outcome] -* [Expected outcome] - -## Version [X.Y+3.Z] and Beyond — [Long-term Vision] - -Focus: [Long-term strategic direction] - -### Forward-Looking Initiatives - -* [Strategic initiative] -* [Strategic initiative] - -### Outcomes - -* [Long-term goal] -* [Long-term goal] - ---- - -This roadmap is intentionally conservative and additive. New versions extend prior guarantees without breaking existing contracts. - -## Guidelines for Version Planning - -### Version Numbering - -Use semantic versioning for clarity: -- **Major versions** (X.0.0): Breaking changes, major architectural shifts -- **Minor versions** (X.Y.0): New features, significant enhancements -- **Patch versions** (X.Y.Z): Bug fixes, minor improvements - -### Planning Horizon - -- **Current Version**: Actively being delivered -- **Next 2-3 Versions**: Clearly defined with specific deliverables -- **Future Versions**: High-level themes and strategic direction - -### Status Indicators - -- ✅ **COMPLETED**: Delivered and validated -- 🔄 **IN PROGRESS**: Active development underway -- 📋 **PLANNED**: Scheduled but not yet started -- ⏸️ **PAUSED**: Temporarily on hold -- ❌ **CANCELLED**: No longer pursuing - -## Metadata - -``` -Owner: [Owner Name/Role] -Reviewers: [Reviewer Names/Roles] -Status: Active -Last Updated: [YYYY-MM-DD] -Next Review: [YYYY-MM-DD] -``` - -## Revision History - -| Date | Version | Author | Notes | -| ---------- | -------- | -------------- | ------------------------------- | -| YYYY-MM-DD | X.Y.Z | [Author Name] | [Description of changes] | -| YYYY-MM-DD | X.Y.Z | [Author Name] | [Description of changes] | -- 2.52.0