@mokoconsulting/mcp-mokosuite 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/.editorconfig +19 -0
  2. package/.gitattributes +94 -0
  3. package/.gitmessage +9 -0
  4. package/.mokogit/ISSUE_TEMPLATE/adr.md +110 -0
  5. package/.mokogit/ISSUE_TEMPLATE/bug_report.md +48 -0
  6. package/.mokogit/ISSUE_TEMPLATE/config.yml +18 -0
  7. package/.mokogit/ISSUE_TEMPLATE/documentation.md +52 -0
  8. package/.mokogit/ISSUE_TEMPLATE/feature_request.md +51 -0
  9. package/.mokogit/ISSUE_TEMPLATE/mcp_api_integration.md +48 -0
  10. package/.mokogit/ISSUE_TEMPLATE/mcp_connection_issue.md +69 -0
  11. package/.mokogit/ISSUE_TEMPLATE/mcp_tool_request.md +50 -0
  12. package/.mokogit/ISSUE_TEMPLATE/question.md +82 -0
  13. package/.mokogit/ISSUE_TEMPLATE/rfc.md +126 -0
  14. package/.mokogit/ISSUE_TEMPLATE/security.md +51 -0
  15. package/.mokogit/ISSUE_TEMPLATE/version.md +24 -0
  16. package/.mokogit/actions/resolve-source-dir/action.yml +108 -0
  17. package/.mokogit/workflows/auto-assign.yml +76 -0
  18. package/.mokogit/workflows/auto-bump.yml +78 -0
  19. package/.mokogit/workflows/auto-dev-issue.yml +207 -0
  20. package/.mokogit/workflows/auto-release.yml +596 -0
  21. package/.mokogit/workflows/branch-cleanup.yml +60 -0
  22. package/.mokogit/workflows/cascade-dev.yml +198 -0
  23. package/.mokogit/workflows/changelog-validation.yml +101 -0
  24. package/.mokogit/workflows/ci-generic.yml +203 -0
  25. package/.mokogit/workflows/ci-issue-reporter.yml +75 -0
  26. package/.mokogit/workflows/cleanup.yml +87 -0
  27. package/.mokogit/workflows/gitleaks.yml +94 -0
  28. package/.mokogit/workflows/issue-branch.yml +81 -0
  29. package/.mokogit/workflows/notify.yml +73 -0
  30. package/.mokogit/workflows/npm-build-test.yml +83 -0
  31. package/.mokogit/workflows/npm-publish.yml +126 -0
  32. package/.mokogit/workflows/npm-sdk-check.yml +110 -0
  33. package/.mokogit/workflows/npm-tool-inventory.yml +80 -0
  34. package/.mokogit/workflows/pr-branch-check.yml +90 -0
  35. package/.mokogit/workflows/pr-check.yml +565 -0
  36. package/.mokogit/workflows/pre-release.yml +413 -0
  37. package/.mokogit/workflows/push-notify.yml +43 -0
  38. package/.mokogit/workflows/rc-revert.yml +72 -0
  39. package/.mokogit/workflows/repo-health.yml +700 -0
  40. package/.mokogit/workflows/repository-cleanup.yml +525 -0
  41. package/.mokogit/workflows/standards-compliance.yml +2507 -0
  42. package/.mokogit/workflows/sync-version-on-merge.yml +130 -0
  43. package/.mokogit/workflows/version-set.yml +131 -0
  44. package/CHANGELOG.md +18 -0
  45. package/CLAUDE.md +52 -0
  46. package/CODE_OF_CONDUCT.md +70 -0
  47. package/CONTRIBUTING.md +161 -0
  48. package/LICENSE +696 -0
  49. package/Makefile +70 -0
  50. package/README.md +83 -0
  51. package/SECURITY.md +34 -0
  52. package/config.example.json +21 -0
  53. package/dist/client.d.ts +22 -0
  54. package/dist/client.js +124 -0
  55. package/dist/config.d.ts +4 -0
  56. package/dist/config.js +53 -0
  57. package/dist/index.d.ts +3 -0
  58. package/dist/index.js +181 -0
  59. package/dist/signing.d.ts +14 -0
  60. package/dist/signing.js +62 -0
  61. package/dist/types.d.ts +44 -0
  62. package/dist/types.js +16 -0
  63. package/docs/API.md +63 -0
  64. package/docs/ARCHITECTURE.md +73 -0
  65. package/docs/INSTALLATION.md +102 -0
  66. package/docs/index.md +12 -0
  67. package/package.json +35 -0
  68. package/src/client.ts +142 -0
  69. package/src/config.ts +63 -0
  70. package/src/index.ts +336 -0
  71. package/src/signing.ts +67 -0
  72. package/src/types.ts +63 -0
  73. package/tsconfig.json +19 -0
@@ -0,0 +1,130 @@
1
+ # Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
2
+ #
3
+ # This file is part of a Moko Consulting project.
4
+ #
5
+ # SPDX-License-Identifier: GPL-3.0-or-later
6
+ #
7
+ # FILE INFORMATION
8
+ # DEFGROUP: GitHub.Workflow
9
+ # INGROUP: MokoStandards.Automation
10
+ # REPO: https://github.com/mokoconsulting-tech/MokoStandards
11
+ # PATH: /templates/workflows/shared/sync-version-on-merge.yml.template
12
+ # VERSION: 04.06.00
13
+ # BRIEF: Auto-bump patch version on every push to main and propagate to all file headers
14
+ # NOTE: Synced via bulk-repo-sync to .mokogit/workflows/sync-version-on-merge.yml in all governed repos.
15
+ # README.md is the single source of truth for the repository version.
16
+
17
+ name: "Universal: Sync Version on Merge"
18
+
19
+ on:
20
+ push:
21
+ branches:
22
+ - main
23
+ - master
24
+ workflow_dispatch:
25
+ inputs:
26
+ dry_run:
27
+ description: 'Dry run (preview only, no commit)'
28
+ type: boolean
29
+ default: false
30
+
31
+ permissions:
32
+ contents: write
33
+ issues: write
34
+
35
+ env:
36
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
37
+
38
+ jobs:
39
+ sync-version:
40
+ name: Propagate README version
41
+ runs-on: ubuntu-latest
42
+
43
+ steps:
44
+ - name: Checkout repository
45
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
46
+ with:
47
+ token: ${{ secrets.GH_TOKEN || github.token }}
48
+ fetch-depth: 0
49
+
50
+ - name: Setup MokoStandards tools
51
+ run: |
52
+ # Use pre-installed mokoplatform on runner host (symlink /opt/mokoplatform -> /opt/moko-platform)
53
+ if [ -d /opt/mokoplatform/api/cli ] && [ -f /opt/mokoplatform/vendor/autoload.php ]; then
54
+ ln -sf /opt/mokoplatform /tmp/mokostandards
55
+ echo "Using pre-installed /opt/mokoplatform"
56
+ elif [ -d /opt/moko-platform/api/cli ]; then
57
+ ln -sf /opt/moko-platform /tmp/mokostandards
58
+ echo "Using pre-installed /opt/moko-platform"
59
+ else
60
+ echo "::warning::MokoStandards tools not found on runner - skipping"
61
+ echo "MOKO_SKIP=true" >> "$GITHUB_ENV"
62
+ fi
63
+
64
+ - name: Auto-bump patch version
65
+ if: ${{ github.event_name == 'push' && github.actor != 'github-actions[bot]' }}
66
+ run: |
67
+ if git diff --name-only HEAD~1 HEAD 2>/dev/null | grep -q '^README\.md$'; then
68
+ echo "README.md changed in this push — skipping auto-bump"
69
+ exit 0
70
+ fi
71
+
72
+ RESULT=$(php /tmp/mokostandards/api/cli/version_bump.php --path .) || {
73
+ echo "⚠️ Could not bump version — skipping"
74
+ exit 0
75
+ }
76
+ echo "Auto-bumping patch: $RESULT"
77
+ git config --local user.email "github-actions[bot]@users.noreply.github.com"
78
+ git config --local user.name "github-actions[bot]"
79
+ git add README.md
80
+ git commit -m "chore(version): auto-bump patch ${RESULT} [skip ci]" \
81
+ --author="github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
82
+ git push
83
+
84
+ - name: Extract version from README.md
85
+ id: readme_version
86
+ run: |
87
+ git pull --ff-only 2>/dev/null || true
88
+ VERSION=$(php /tmp/mokostandards/api/cli/version_read.php --path . 2>/dev/null)
89
+ if [ -z "$VERSION" ]; then
90
+ echo "⚠️ No VERSION in README.md — skipping propagation"
91
+ echo "skip=true" >> $GITHUB_OUTPUT
92
+ exit 0
93
+ fi
94
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
95
+ echo "skip=false" >> $GITHUB_OUTPUT
96
+ echo "✅ README.md version: $VERSION"
97
+
98
+ - name: Run version sync
99
+ if: ${{ steps.readme_version.outputs.skip != 'true' && inputs.dry_run != true }}
100
+ run: |
101
+ php /tmp/mokostandards/api/maintenance/update_version_from_readme.php \
102
+ --path . \
103
+ --create-issue \
104
+ --repo "${{ github.repository }}"
105
+ env:
106
+ GH_TOKEN: ${{ secrets.GH_TOKEN || github.token }}
107
+
108
+ - name: Commit updated files
109
+ if: ${{ steps.readme_version.outputs.skip != 'true' && inputs.dry_run != true }}
110
+ run: |
111
+ git pull --ff-only 2>/dev/null || true
112
+ if git diff --quiet; then
113
+ echo "ℹ️ No version changes needed — already up to date"
114
+ exit 0
115
+ fi
116
+ VERSION="${{ steps.readme_version.outputs.version }}"
117
+ git config --local user.email "github-actions[bot]@users.noreply.github.com"
118
+ git config --local user.name "github-actions[bot]"
119
+ git add -A
120
+ git commit -m "chore(version): sync badges and headers to ${VERSION} [skip ci]" \
121
+ --author="github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
122
+ git push
123
+
124
+ - name: Summary
125
+ run: |
126
+ VERSION="${{ steps.readme_version.outputs.version }}"
127
+ echo "## 📦 Version Sync — ${VERSION}" >> $GITHUB_STEP_SUMMARY
128
+ echo "" >> $GITHUB_STEP_SUMMARY
129
+ echo "**Source:** \`README.md\` FILE INFORMATION block" >> $GITHUB_STEP_SUMMARY
130
+ echo "**Version:** \`${VERSION}\`" >> $GITHUB_STEP_SUMMARY
@@ -0,0 +1,131 @@
1
+ # Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
2
+ #
3
+ # SPDX-License-Identifier: GPL-3.0-or-later
4
+ #
5
+ # FILE INFORMATION
6
+ # DEFGROUP: MokoGIT.Workflow.Template
7
+ # INGROUP: MokoCLI.CI
8
+ # REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla
9
+ # PATH: /.mokogit/workflows/version-set.yml
10
+ # VERSION: 01.00.00
11
+ # BRIEF: Set or reset the extension version across all version-bearing files
12
+
13
+ name: "Joomla: Set Version"
14
+
15
+ on:
16
+ workflow_dispatch:
17
+ inputs:
18
+ version:
19
+ description: "Version number (e.g. 01.00.00)"
20
+ required: true
21
+ type: string
22
+ branch:
23
+ description: "Branch to update (default: current)"
24
+ required: false
25
+ type: string
26
+
27
+ permissions:
28
+ contents: write
29
+
30
+ env:
31
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
32
+
33
+ jobs:
34
+ set-version:
35
+ name: Set Version to ${{ inputs.version }}
36
+ runs-on: ubuntu-latest
37
+ if: ${{ !startsWith(github.event.repository.name, 'Template-') }}
38
+
39
+ steps:
40
+ - name: Validate version format
41
+ run: |
42
+ VERSION="${{ inputs.version }}"
43
+ if ! echo "$VERSION" | grep -qP '^\d{2}\.\d{2}\.\d{2}$'; then
44
+ echo "::error::Invalid version format '${VERSION}' — expected XX.YY.ZZ (e.g. 01.00.00)"
45
+ exit 1
46
+ fi
47
+ echo "VERSION=${VERSION}" >> "$GITHUB_ENV"
48
+
49
+ - name: Checkout
50
+ uses: actions/checkout@v4
51
+ with:
52
+ token: ${{ secrets.MOKOGIT_TOKEN || github.token }}
53
+ ref: ${{ inputs.branch || github.ref }}
54
+ fetch-depth: 1
55
+
56
+ - name: Update manifest version
57
+ run: |
58
+ MANIFEST=""
59
+ for XML_FILE in $(find . -maxdepth 3 -name "*.xml" -not -path "./.git/*" -not -path "./vendor/*"); do
60
+ if grep -q "<extension" "$XML_FILE" 2>/dev/null; then
61
+ MANIFEST="$XML_FILE"
62
+ break
63
+ fi
64
+ done
65
+
66
+ if [ -z "$MANIFEST" ]; then
67
+ echo "::warning::No Joomla extension manifest found — skipping manifest update"
68
+ else
69
+ OLD_VER=$(grep -oP '<version>\K[^<]+' "$MANIFEST" | head -1)
70
+ sed -i "s|<version>${OLD_VER}</version>|<version>${VERSION}</version>|" "$MANIFEST"
71
+ echo "Manifest: ${OLD_VER} → ${VERSION} (${MANIFEST})"
72
+ fi
73
+
74
+ - name: Update README.md version
75
+ run: |
76
+ if [ -f "README.md" ]; then
77
+ if grep -qP '^\s*VERSION:\s*\d' README.md; then
78
+ sed -i -E "s/(VERSION:\s*)[0-9]{2}\.[0-9]{2}\.[0-9]{2}/\1${VERSION}/" README.md
79
+ echo "README.md version updated to ${VERSION}"
80
+ else
81
+ echo "::warning::No VERSION line found in README.md — skipping"
82
+ fi
83
+ fi
84
+
85
+ - name: Update CHANGELOG.md
86
+ run: |
87
+ if [ -f "CHANGELOG.md" ]; then
88
+ DATE=$(date +%Y-%m-%d)
89
+ # Check if this version already has an entry
90
+ if grep -q "^\#\# \[${VERSION}\]" CHANGELOG.md; then
91
+ echo "CHANGELOG.md already has entry for ${VERSION} — skipping"
92
+ else
93
+ # Insert new version entry after [Unreleased] or at the top after header
94
+ if grep -q '^\#\# \[Unreleased\]' CHANGELOG.md; then
95
+ sed -i "/^\#\# \[Unreleased\]/a\\\\n## [${VERSION}] --- ${DATE}" CHANGELOG.md
96
+ else
97
+ sed -i "/^\# Changelog/a\\\\n## [Unreleased]\n\n## [${VERSION}] --- ${DATE}" CHANGELOG.md
98
+ fi
99
+ echo "CHANGELOG.md: added entry for ${VERSION}"
100
+ fi
101
+ else
102
+ echo "::warning::No CHANGELOG.md found — skipping"
103
+ fi
104
+
105
+ - name: Update FILE INFORMATION blocks
106
+ run: |
107
+ # Update VERSION in file header blocks (# VERSION: XX.YY.ZZ)
108
+ find . -maxdepth 1 -type f \( -name "*.yml" -o -name "*.yaml" -o -name "*.php" -o -name "*.md" \) \
109
+ -not -path "./.git/*" -not -path "./vendor/*" -print0 2>/dev/null | \
110
+ while IFS= read -r -d '' FILE; do
111
+ if head -20 "$FILE" | grep -qP '^\s*#?\s*VERSION:\s*\d{2}\.\d{2}\.\d{2}'; then
112
+ sed -i -E "s/(#?\s*VERSION:\s*)[0-9]{2}\.[0-9]{2}\.[0-9]{2}/\1${VERSION}/" "$FILE"
113
+ echo "Updated FILE INFORMATION VERSION in ${FILE}"
114
+ fi
115
+ done
116
+
117
+ - name: Commit and push
118
+ run: |
119
+ git config user.name "Moko Consulting [bot]"
120
+ git config user.email "hello@mokoconsulting.tech"
121
+ git add -A
122
+ if git diff --cached --quiet; then
123
+ echo "No version changes detected — nothing to commit"
124
+ else
125
+ git commit -m "chore: set version to ${VERSION} [skip bump]
126
+
127
+ Authored-by: Moko Consulting"
128
+ git push
129
+ echo "### Version Set" >> $GITHUB_STEP_SUMMARY
130
+ echo "Version updated to \`${VERSION}\` on branch \`${GITHUB_REF_NAME}\`" >> $GITHUB_STEP_SUMMARY
131
+ fi
package/CHANGELOG.md ADDED
@@ -0,0 +1,18 @@
1
+
2
+
3
+ ## [Unreleased]
4
+
5
+ ### Changed
6
+ - Branding: Git -> MokoGIT in workflow DEFGROUP tags, committer identity (git-actions[bot] -> mokogit-actions[bot]), and platform prose. Functional tokens (GIT_TOKEN/GITHUB_TOKEN, GIT_ACTIONS_*, vars.GITEA_*, git.mokoconsulting.tech) preserved.
7
+
8
+ ### Removed
9
+ - CI: stripped GitHub-only workflows (DEFGROUP GitHub.Workflow), which do not run on MokoGIT Actions: auto-dev-issue.yml changelog-validation.yml standards-compliance.yml sync-version-on-merge.yml.
10
+
11
+ ### Changed
12
+ - Migrated all workflow and template paths from `.github/` to `.mokogit/`
13
+ - Template source paths updated: `templates/git/` to `templates/mokogit/`
14
+ - HCL definition files removed -- Template repos are now the canonical source
15
+
16
+ ### Added
17
+ - CI: gate build/CI/release/version workflows so they skip template repos; smart-gate the sync workflows to run only on Template-* repos; normalize mokocli/MokoCLI refs and drop the stale mokoconsulting-tech org slug.
18
+ - `branch-cleanup.yml`: auto-delete merged feature branches after PR merge
package/CLAUDE.md ADDED
@@ -0,0 +1,52 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code when working with this repository.
4
+
5
+ ## Project Overview
6
+
7
+ **Template-MCP** -- Template repository for creating MokoStandards-compliant MCP API servers
8
+
9
+ | Field | Value |
10
+ |---|---|
11
+ | **Platform** | mcp-server |
12
+ | **Language** | TypeScript |
13
+ | **Default branch** | main |
14
+ | **License** | GPL-3.0-or-later |
15
+ | **Wiki** | [Template-MCP Wiki](https://git.mokoconsulting.tech/MokoConsulting/Template-MCP/wiki) |
16
+ | **Standards** | [MokoStandards](https://git.mokoconsulting.tech/MokoConsulting/MokoCLI/wiki/Home) |
17
+
18
+ ## Common Commands
19
+
20
+ ```bash
21
+ make build # Build the project
22
+ make lint # Run linters
23
+ make validate # Validate structure
24
+ make release # Full release pipeline
25
+ make minify # Minify CSS/JS assets
26
+ make clean # Clean build artifacts
27
+ ```
28
+
29
+ ```bash
30
+ npm install # Install dependencies
31
+ npm run build # Compile TypeScript
32
+ npm run dev # Development mode
33
+ ```
34
+
35
+ ## Architecture
36
+
37
+ This is an MCP (Model Context Protocol) server. Key files:
38
+ - `src/index.ts` -- server entry point and tool registration
39
+ - `src/config.ts` -- configuration loading
40
+ - `src/tools/` -- individual tool implementations
41
+ - `dist/` -- compiled output (gitignored)
42
+
43
+ ## Rules
44
+
45
+ - **Workflow directory**: `.mokogit/` (not `.gitea/` or `.github/`)
46
+
47
+ - **Never commit** `.claude/`, `.gemini/`, `.mcp.json`, `TODO.md`, or `*.min.css`/`*.min.js`
48
+ - **Attribution**: use `Authored-by: Moko Consulting` in commits
49
+ - **Branch strategy**: develop on `dev`, merge to `main` for release
50
+ - **Minification**: handled at build time (CI) and runtime (MokoMinifyHelper for Joomla templates)
51
+ - **Wiki**: documentation lives in the MokoGIT wiki, not in `docs/` files
52
+ - **Standards**: this repo follows [MokoStandards](https://git.mokoconsulting.tech/MokoConsulting/MokoCLI/wiki/Home)
@@ -0,0 +1,70 @@
1
+ <!-- Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
2
+
3
+ This file is part of a Moko Consulting project.
4
+
5
+ SPDX-LICENSE-IDENTIFIER: GPL-3.0-or-later
6
+
7
+ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
10
+
11
+ You should have received a copy of the GNU General Public License (./LICENSE).
12
+
13
+ # FILE INFORMATION
14
+ DEFGROUP:
15
+ INGROUP: Project.Documentation
16
+ REPO: MokoConsulting/Template-MCP
17
+ VERSION: 00.00.01
18
+ PATH: ./CODE_OF_CONDUCT.md
19
+ BRIEF: Contributor Covenant Code of Conduct version 1.3.0
20
+ -->
21
+
22
+ # Contributor Covenant Code of Conduct
23
+
24
+ ## Our Pledge
25
+
26
+ In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
27
+
28
+ ## Our Standards
29
+
30
+ Examples of behavior that contributes to creating a positive environment include:
31
+
32
+ * Using welcoming and inclusive language
33
+ * Being respectful of differing viewpoints and experiences
34
+ * Gracefully accepting constructive criticism
35
+ * Focusing on what is best for the community
36
+ * Showing empathy towards other community members
37
+
38
+ Examples of unacceptable behavior by participants include:
39
+
40
+ * The use of sexualized language or imagery and unwelcome sexual attention or advances
41
+ * Trolling, insulting/derogatory comments, and personal or political attacks
42
+ * Public or private harassment
43
+ * Publishing others' private information, such as a physical or electronic address, without explicit permission
44
+ * Other conduct which could reasonably be considered inappropriate in a professional setting
45
+
46
+ ## Our Responsibilities
47
+
48
+ Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
49
+
50
+ Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
51
+
52
+ ## Scope
53
+
54
+ This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
55
+
56
+ ## Enforcement
57
+
58
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at hello@mokoconsulting.tech. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
59
+
60
+ Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
61
+
62
+ ## Attribution
63
+
64
+ This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.3.0, available at [http://contributor-covenant.org/version/1/3/0/](http://contributor-covenant.org/version/1/3/0/)
65
+
66
+ ## Revision History
67
+
68
+ | Date | Version | Author | Notes |
69
+ | --- | --- | --- | --- |
70
+ | 2026-01-16 | 1.3.0 | Copilot | Contributor Covenant v1.3.0 |
@@ -0,0 +1,161 @@
1
+ <!-- Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
2
+
3
+ This file is part of a Moko Consulting project.
4
+
5
+ SPDX-LICENSE-IDENTIFIER: GPL-3.0-or-later
6
+
7
+ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
10
+
11
+ You should have received a copy of the GNU General Public License (./LICENSE).
12
+
13
+ # FILE INFORMATION
14
+ DEFGROUP:
15
+ INGROUP: Project.Documentation
16
+ REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-MCP
17
+ VERSION: 00.00.01
18
+ PATH: ./CONTRIBUTING.md
19
+ BRIEF: Contribution guidelines for the project
20
+ -->
21
+
22
+ # Contributing to Template-MCP
23
+
24
+ We appreciate your interest in contributing to this project! This document provides guidelines for contributing.
25
+
26
+ ## Table of Contents
27
+
28
+ - [Code of Conduct](#code-of-conduct)
29
+ - [Getting Started](#getting-started)
30
+ - [How to Contribute](#how-to-contribute)
31
+ - [Development Workflow](#development-workflow)
32
+ - [Commit Messages](#commit-messages)
33
+ - [Pull Request Process](#pull-request-process)
34
+
35
+ ## Code of Conduct
36
+
37
+ This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to hello@mokoconsulting.tech.
38
+
39
+ ## Getting Started
40
+
41
+ 1. Fork the repository
42
+ 2. Clone your fork locally
43
+ 3. Set up the development environment
44
+ 4. Create a new branch for your work
45
+
46
+ ## How to Contribute
47
+
48
+ ### Reporting Bugs
49
+
50
+ - Use the GitHub issue tracker
51
+ - Describe the bug clearly with steps to reproduce
52
+ - Include relevant logs, screenshots, or error messages
53
+ - Specify your environment (OS, version, etc.)
54
+
55
+ ### Suggesting Enhancements
56
+
57
+ - Use the GitHub issue tracker
58
+ - Clearly describe the enhancement and its benefits
59
+ - Provide examples of how it would work
60
+
61
+ ### Contributing Code
62
+
63
+ - Pick an issue or create one
64
+ - Fork the repository and create a branch
65
+ - Make your changes following the project conventions
66
+ - Write or update tests as needed
67
+ - Submit a pull request
68
+
69
+ ## Development Workflow
70
+
71
+ 1. Ensure your fork is up to date with the main repository
72
+ 2. Create a feature branch from `main`
73
+ 3. Make your changes
74
+ 4. Test your changes thoroughly
75
+ 5. Commit your changes with clear messages
76
+ 6. Push to your fork
77
+ 7. Create a pull request
78
+
79
+ ## Commit Messages
80
+
81
+ Follow the conventional commit format:
82
+
83
+ ```
84
+ <type>(<scope>): <subject>
85
+
86
+ <body>
87
+
88
+ <footer>
89
+ ```
90
+
91
+ Types: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`, `ci`, `build`, `perf`, `revert`
92
+
93
+ Example:
94
+ ```
95
+ feat(docs): add contributing guidelines
96
+
97
+ Add comprehensive contributing guidelines to help new contributors
98
+ understand the development workflow and coding standards.
99
+ ```
100
+
101
+ ## Pull Request Process
102
+
103
+ 1. Update documentation for any new features
104
+ 2. Follow the project's coding style and conventions
105
+ 3. Ensure all tests pass
106
+ 4. Update the CHANGELOG.md with your changes
107
+ 5. Request review from maintainers
108
+ 6. Address any feedback promptly
109
+ 7. Once approved, your PR will be merged
110
+
111
+ ## Style Guidelines
112
+
113
+ - Follow the `.editorconfig` settings
114
+ - Use tabs for indentation (width: 2 spaces)
115
+ - Ensure files end with a newline
116
+ - Use LF line endings (except for Windows-specific files)
117
+ - Trim trailing whitespace (except in Markdown)
118
+
119
+ ## Questions?
120
+
121
+ If you have questions about contributing, feel free to open an issue or contact the maintainers.
122
+
123
+ ## Revision History
124
+
125
+ | Date | Version | Author | Notes |
126
+ | --- | --- | --- | --- |
127
+ | 2026-01-16 | 0.1.0 | Copilot | Initial contributing guidelines |
128
+
129
+ ## Infrastructure Standards
130
+
131
+ All repositories in the MokoConsulting org follow these conventions:
132
+
133
+ ### Release Tags
134
+
135
+ Every repo maintains 5 standard release channel tags:
136
+
137
+ - `development` - Active development builds
138
+ - `alpha` - Early internal testing
139
+ - `beta` - Broader testing / client UAT
140
+ - `release-candidate` - Final QA before production
141
+ - `stable` - Production release
142
+
143
+ ### Branch Protection
144
+
145
+ - `main` is protected; only `jmiller` can push directly
146
+ - All other contributors must use pull requests
147
+ - PRs are automatically reviewed by Claude Code
148
+
149
+ ### CI/CD
150
+
151
+ - MokoGIT Actions runs all CI workflows
152
+ - GitHub Actions are disabled on mirrored repos
153
+ - Workflows live in both `.github/workflows/` and `.gitea/workflows/`
154
+
155
+ ### Update Servers (Joomla)
156
+
157
+ In manifest `<updateservers>`, MokoGIT must be priority 1, GitHub priority 2.
158
+
159
+ ### Secrets
160
+
161
+ All repos have `GA_TOKEN` and `GH_TOKEN` as Actions secrets for API access.