@mokoconsulting/mokoabs-mcp 0.0.0-stage → 4.0.2
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.
- package/.editorconfig +41 -0
- package/.gitattributes +94 -0
- package/.gitmessage +9 -0
- package/.mokogit/ISSUE_TEMPLATE/adr.md +110 -0
- package/.mokogit/ISSUE_TEMPLATE/bug_report.md +48 -0
- package/.mokogit/ISSUE_TEMPLATE/config.yml +18 -0
- package/.mokogit/ISSUE_TEMPLATE/documentation.md +52 -0
- package/.mokogit/ISSUE_TEMPLATE/feature_request.md +51 -0
- package/.mokogit/ISSUE_TEMPLATE/mcp_api_integration.md +48 -0
- package/.mokogit/ISSUE_TEMPLATE/mcp_connection_issue.md +69 -0
- package/.mokogit/ISSUE_TEMPLATE/mcp_tool_request.md +50 -0
- package/.mokogit/ISSUE_TEMPLATE/question.md +82 -0
- package/.mokogit/ISSUE_TEMPLATE/rfc.md +126 -0
- package/.mokogit/ISSUE_TEMPLATE/security.md +51 -0
- package/.mokogit/ISSUE_TEMPLATE/version.md +24 -0
- package/.mokogit/actions/resolve-source-dir/action.yml +72 -0
- package/.mokogit/workflows/apidocs.yml +132 -0
- package/.mokogit/workflows/auto-assign.yml +76 -0
- package/.mokogit/workflows/auto-dev-issue.yml +207 -0
- package/.mokogit/workflows/auto-release.yml +1787 -0
- package/.mokogit/workflows/branch-cleanup.yml +63 -0
- package/.mokogit/workflows/cascade.yml +645 -0
- package/.mokogit/workflows/ci-issue-reporter.yml +100 -0
- package/.mokogit/workflows/cleanup.yml +112 -0
- package/.mokogit/workflows/makefile-lint.yml +240 -0
- package/.mokogit/workflows/npm-build-test.yml +507 -0
- package/.mokogit/workflows/npm-sdk-check.yml +110 -0
- package/.mokogit/workflows/npm-tool-inventory.yml +81 -0
- package/.mokogit/workflows/pr-branch-check.yml +92 -0
- package/.mokogit/workflows/pre-release.yml +1134 -0
- package/.mokogit/workflows/rc-revert.yml +75 -0
- package/AGENTS.md +48 -0
- package/CHANGELOG.md +37 -0
- package/CODE_OF_CONDUCT.md +70 -0
- package/CONTRIBUTING.md +164 -0
- package/LICENSE +696 -0
- package/Makefile +94 -0
- package/README.md +109 -2
- package/SECURITY.md +245 -0
- package/build/README.md +7 -0
- package/dist/README.md +7 -0
- package/dist/index.js +153 -0
- package/package.json +34 -5
- package/sample/config.example.json +15 -0
- package/source/client.ts +132 -0
- package/source/config.ts +139 -0
- package/source/credentialStore.ts +216 -0
- package/source/index.ts +235 -0
- package/source/tokenReader.ts +120 -0
- package/source/types.ts +63 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1,75 @@
|
|
|
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
|
|
7
|
+
# INGROUP: MokoCLI.Universal
|
|
8
|
+
# REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Generic
|
|
9
|
+
# PATH: /.mokogit/workflows/rc-revert.yml
|
|
10
|
+
# VERSION: 09.23.00
|
|
11
|
+
# BRIEF: Rename rc/ branch back to dev/ when PR is closed without merge
|
|
12
|
+
|
|
13
|
+
name: "RC Revert"
|
|
14
|
+
|
|
15
|
+
on:
|
|
16
|
+
pull_request:
|
|
17
|
+
types: [closed]
|
|
18
|
+
|
|
19
|
+
permissions:
|
|
20
|
+
contents: write
|
|
21
|
+
|
|
22
|
+
env:
|
|
23
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
revert:
|
|
27
|
+
name: Rename rc/ back to dev/
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
if: >-
|
|
30
|
+
github.event.pull_request.merged == false &&
|
|
31
|
+
startsWith(github.event.pull_request.head.ref, 'rc/') &&
|
|
32
|
+
!startsWith(github.event.repository.name, 'Template-')
|
|
33
|
+
|
|
34
|
+
steps:
|
|
35
|
+
- name: Rename branch
|
|
36
|
+
env:
|
|
37
|
+
BRANCH: ${{ github.event.pull_request.head.ref }}
|
|
38
|
+
REPO: ${{ github.repository }}
|
|
39
|
+
GIT_URL: ${{ vars.MOKOGIT_URL || 'https://git.mokoconsulting.tech' }}
|
|
40
|
+
TOKEN: ${{ github.token }}
|
|
41
|
+
run: |
|
|
42
|
+
set -euo pipefail
|
|
43
|
+
# BRANCH is attacker-controlled (PR head ref). Strict allowlist before ANY use.
|
|
44
|
+
if ! printf '%s' "$BRANCH" | grep -Eq '^rc/[A-Za-z0-9._/-]+$'; then
|
|
45
|
+
echo "::error::Refusing unsafe branch name: $BRANCH"; exit 1
|
|
46
|
+
fi
|
|
47
|
+
SUFFIX="${BRANCH#rc/}"
|
|
48
|
+
DEV_BRANCH="dev/${SUFFIX}"
|
|
49
|
+
API="${GIT_URL}/api/v1/repos/${REPO}/branches"
|
|
50
|
+
|
|
51
|
+
# Create dev/ branch from rc/ branch
|
|
52
|
+
STATUS=$(curl -sf -o /dev/null -w "%{http_code}" -X POST \
|
|
53
|
+
-H "Authorization: token ${TOKEN}" \
|
|
54
|
+
-H "Content-Type: application/json" \
|
|
55
|
+
-d "{\"new_branch_name\": \"${DEV_BRANCH}\", \"old_branch_name\": \"${BRANCH}\"}" \
|
|
56
|
+
"${API}" 2>/dev/null || true)
|
|
57
|
+
if [ "$STATUS" = "201" ]; then
|
|
58
|
+
echo "Created branch: ${DEV_BRANCH}" >> "$GITHUB_STEP_SUMMARY"
|
|
59
|
+
else
|
|
60
|
+
echo "::error::Failed to create ${DEV_BRANCH} from ${BRANCH} (HTTP ${STATUS})"; exit 1
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
# Read BRANCH from the environment inside PHP (getenv, no string interpolation -> no PHP injection)
|
|
64
|
+
ENCODED=$(php -r 'echo rawurlencode(getenv("BRANCH"));')
|
|
65
|
+
STATUS=$(curl -sf -o /dev/null -w "%{http_code}" -X DELETE \
|
|
66
|
+
-H "Authorization: token ${TOKEN}" \
|
|
67
|
+
"${API}/${ENCODED}" 2>/dev/null || true)
|
|
68
|
+
if [ "$STATUS" = "204" ]; then
|
|
69
|
+
echo "Deleted branch: ${BRANCH}" >> "$GITHUB_STEP_SUMMARY"
|
|
70
|
+
else
|
|
71
|
+
echo "::warning::Failed to delete ${BRANCH} (HTTP ${STATUS})"
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
echo "### RC Reverted" >> "$GITHUB_STEP_SUMMARY"
|
|
75
|
+
echo "${BRANCH} → ${DEV_BRANCH}" >> "$GITHUB_STEP_SUMMARY"
|
package/AGENTS.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Copyright 2026 Moko Consulting
|
|
3
|
+
SPDX-License-Identifier: GPL-3.0-or-later
|
|
4
|
+
|
|
5
|
+
Brief: Agent instructions for the Template-NPM repository. This is the
|
|
6
|
+
authoritative, repo-specific guidance for AI agents. For company-wide
|
|
7
|
+
standards, follow the pointers referenced below rather than duplicating
|
|
8
|
+
them here.
|
|
9
|
+
-->
|
|
10
|
+
|
|
11
|
+
# Template-NPM — Agent Instructions
|
|
12
|
+
|
|
13
|
+
Template-NPM is the scaffold template used to generate new MokoCLI-compliant
|
|
14
|
+
MCP / npm API server repositories. Files committed here seed generated
|
|
15
|
+
npm/MCP-server repos, so keep the scaffolding generic and ready to be renamed
|
|
16
|
+
and filled in for a specific server.
|
|
17
|
+
|
|
18
|
+
> Pointers: standards, contribution rules, and governance live in the
|
|
19
|
+
> repository docs (CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md) and in
|
|
20
|
+
> the MokoCLI standards wiki.
|
|
21
|
+
|
|
22
|
+
## Platform & Layout
|
|
23
|
+
|
|
24
|
+
- Role: scaffold template for npm/MCP servers (TypeScript/Node).
|
|
25
|
+
- Seed source: scaffolding under `source/`; docs under `docs/`.
|
|
26
|
+
- Tooling: npm (`package.json`), TypeScript (`tsconfig.json`), `Makefile`.
|
|
27
|
+
- Config: `config.example.json` documents server configuration.
|
|
28
|
+
- History: `CHANGELOG.md`.
|
|
29
|
+
- Workflow/automation config lives under `.mokogit/`.
|
|
30
|
+
|
|
31
|
+
## Commands
|
|
32
|
+
|
|
33
|
+
- `npm install` — install dependencies.
|
|
34
|
+
- `npm run build` — compile TypeScript (see `package.json` scripts).
|
|
35
|
+
- `npm test` — run the test suite (see `package.json` scripts).
|
|
36
|
+
|
|
37
|
+
## Rules
|
|
38
|
+
|
|
39
|
+
- Never commit agent/tooling scratch: `.claude/`, `.gemini/`, `.mokoai/`,
|
|
40
|
+
`.mcp.json`, `TODO.md`, or minified/built assets.
|
|
41
|
+
- Never commit real secrets — use `config.example.json` as the template only.
|
|
42
|
+
- Repository workflow/automation configuration belongs under `.mokogit/`.
|
|
43
|
+
- Attribute machine-authored commits with a trailer:
|
|
44
|
+
`Authored-by: Moko Consulting`.
|
|
45
|
+
- Because this is a Template-* repo, CI is guarded to skip template repos; the
|
|
46
|
+
npm/MCP CI it defines runs in the generated child repos.
|
|
47
|
+
- Standards: follow MokoCLI conventions —
|
|
48
|
+
https://git.mokoconsulting.tech/MokoConsulting/mokocli/wiki/Home
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
## [Unreleased]
|
|
2
|
+
|
|
3
|
+
## [04.00.00] --- 2026-09-11
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- **Stop reading the per-repo metadata API.** `resolve-source-dir` now resolves the
|
|
8
|
+
source dir purely from the Makefile `SRC_DIR` (source/ default); `pre-release.yml`
|
|
9
|
+
sources the platform from `platform_detect.php` (Makefile `PLATFORM`) instead of
|
|
10
|
+
`GET /repos/.../metadata`. The global platform registry (`GET /api/v1/platforms`)
|
|
11
|
+
is unchanged. Part of retiring the repo metadata tab/API.
|
|
12
|
+
|
|
13
|
+
- CI (`auto-release.yml` / `pre-release.yml`): adopt the **bump-on-dev** release flow. The base version + CHANGELOG `[Unreleased]` promotion now happen on `dev` pre-promotion (promote-rc calls `release_bump_dev.php --branch dev --bump minor`); the RC and stable publishes run `--bump none --no-commit`, so `main` inherits the promoted version via the merge and never mints a divergent `chore(release): build` commit. The main changelog step is now an idempotent safety-net reconcile (no-op on the dev path, still promotes on `fix`/`hotfix`->main). `pre-release.yml`'s dev-push trigger skips `[skip ci]`/`[skip bump]` so the dev base-bump commit does not spawn a redundant dev build.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- Root `Makefile` with native build/test/lint/package/release logic. Its identity block (`PROJECT_NAME`/`PROJECT_VERSION`/`PLATFORM`) is the version source of truth, auto-filled per repo by the mokocli workflow sync (`--makefiles`).
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- CI (`npm-build-test.yml`): removed the stranded `ci-summary` job (`needs: [build]`, `if: always()`). The Gitea act_runner never schedules a `needs:`+`if: always()` job — it parks in `waiting` (runner_id 0) forever, so under the org-governance `main` rule (`status_check_contexts: ["*"]`) it silently blocked every PR into `main`. Per-job status is already on the Actions run page and `wiki-reminder` posts its own sticky comment, so the aggregation job was redundant. Replaced with a NOTE comment (matches `ci-go.yml`). No other job changed.
|
|
20
|
+
- CI (`cascade-dev.yml`): the main->dev cascade now authenticates its `git push origin dev` with the bypass-capable PAT (`secrets.MOKOGIT_TOKEN`) instead of the per-job action token. On repos where `dev` is branch-protected, the action token is not on dev's push-bypass allowlist, so the pre-receive hook declined the push and `dev` stranded behind `main`. Each of the three push sites (clean-merge, inline-resolved, cascade_resolve paths) reconfigures the `origin` remote to the PAT immediately before pushing, falling back to the action token when the secret is empty. Merge/resolve logic and all API-call tokens are unchanged. (#257)
|
|
21
|
+
|
|
22
|
+
- CI: the stable release now prunes superseded-major `version/*` branches after publishing — keeps every `version/*` branch of the current major, retires older majors (no-op until a major bump). Same-repo deletes use the per-repo `github.token`.
|
|
23
|
+
|
|
24
|
+
- CI: retire the generic `ci-generic.yml` (npm-build-test.yml is the platform CI).
|
|
25
|
+
|
|
26
|
+
- 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.
|
|
27
|
+
|
|
28
|
+
### Removed
|
|
29
|
+
- CI: stripped the retired GitHub Composer auth (`GH_MIRROR_TOKEN`/`GH_PAT` github-oauth) from the workflows — Composer installs the public dev-tools anonymously.
|
|
30
|
+
- 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.
|
|
31
|
+
|
|
32
|
+
- Migrated all workflow and template paths from `.github/` to `.mokogit/`
|
|
33
|
+
- Template source paths updated: `templates/git/` to `templates/mokogit/`
|
|
34
|
+
- HCL definition files removed -- Template repos are now the canonical source
|
|
35
|
+
|
|
36
|
+
- 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.
|
|
37
|
+
- `branch-cleanup.yml`: auto-delete merged feature branches after PR merge
|
|
@@ -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-NPM
|
|
17
|
+
VERSION: 01.01.00
|
|
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 |
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
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-NPM
|
|
17
|
+
VERSION: 01.01.00
|
|
18
|
+
PATH: ./CONTRIBUTING.md
|
|
19
|
+
BRIEF: Contribution guidelines for the project
|
|
20
|
+
-->
|
|
21
|
+
|
|
22
|
+
# Contributing to Template-NPM
|
|
23
|
+
|
|
24
|
+
> **Reporting issues:** This repository's issue tracker is disabled. All bugs, feature requests, and questions for MokoConsulting templates and shared tooling are tracked centrally in **[mokocli](https://git.mokoconsulting.tech/MokoConsulting/mokocli/issues)** — please open issues there, not in the individual template repos.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
We appreciate your interest in contributing to this project! This document provides guidelines for contributing.
|
|
28
|
+
|
|
29
|
+
## Table of Contents
|
|
30
|
+
|
|
31
|
+
- [Code of Conduct](#code-of-conduct)
|
|
32
|
+
- [Getting Started](#getting-started)
|
|
33
|
+
- [How to Contribute](#how-to-contribute)
|
|
34
|
+
- [Development Workflow](#development-workflow)
|
|
35
|
+
- [Commit Messages](#commit-messages)
|
|
36
|
+
- [Pull Request Process](#pull-request-process)
|
|
37
|
+
|
|
38
|
+
## Code of Conduct
|
|
39
|
+
|
|
40
|
+
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.
|
|
41
|
+
|
|
42
|
+
## Getting Started
|
|
43
|
+
|
|
44
|
+
1. Fork the repository
|
|
45
|
+
2. Clone your fork locally
|
|
46
|
+
3. Set up the development environment
|
|
47
|
+
4. Create a new branch for your work
|
|
48
|
+
|
|
49
|
+
## How to Contribute
|
|
50
|
+
|
|
51
|
+
### Reporting Bugs
|
|
52
|
+
|
|
53
|
+
- Use the GitHub issue tracker
|
|
54
|
+
- Describe the bug clearly with steps to reproduce
|
|
55
|
+
- Include relevant logs, screenshots, or error messages
|
|
56
|
+
- Specify your environment (OS, version, etc.)
|
|
57
|
+
|
|
58
|
+
### Suggesting Enhancements
|
|
59
|
+
|
|
60
|
+
- Use the GitHub issue tracker
|
|
61
|
+
- Clearly describe the enhancement and its benefits
|
|
62
|
+
- Provide examples of how it would work
|
|
63
|
+
|
|
64
|
+
### Contributing Code
|
|
65
|
+
|
|
66
|
+
- Pick an issue or create one
|
|
67
|
+
- Fork the repository and create a branch
|
|
68
|
+
- Make your changes following the project conventions
|
|
69
|
+
- Write or update tests as needed
|
|
70
|
+
- Submit a pull request
|
|
71
|
+
|
|
72
|
+
## Development Workflow
|
|
73
|
+
|
|
74
|
+
1. Ensure your fork is up to date with the main repository
|
|
75
|
+
2. Create a feature branch from `main`
|
|
76
|
+
3. Make your changes
|
|
77
|
+
4. Test your changes thoroughly
|
|
78
|
+
5. Commit your changes with clear messages
|
|
79
|
+
6. Push to your fork
|
|
80
|
+
7. Create a pull request
|
|
81
|
+
|
|
82
|
+
## Commit Messages
|
|
83
|
+
|
|
84
|
+
Follow the conventional commit format:
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
<type>(<scope>): <subject>
|
|
88
|
+
|
|
89
|
+
<body>
|
|
90
|
+
|
|
91
|
+
<footer>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Types: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`, `ci`, `build`, `perf`, `revert`
|
|
95
|
+
|
|
96
|
+
Example:
|
|
97
|
+
```
|
|
98
|
+
feat(docs): add contributing guidelines
|
|
99
|
+
|
|
100
|
+
Add comprehensive contributing guidelines to help new contributors
|
|
101
|
+
understand the development workflow and coding standards.
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Pull Request Process
|
|
105
|
+
|
|
106
|
+
1. Update documentation for any new features
|
|
107
|
+
2. Follow the project's coding style and conventions
|
|
108
|
+
3. Ensure all tests pass
|
|
109
|
+
4. Update the CHANGELOG.md with your changes
|
|
110
|
+
5. Request review from maintainers
|
|
111
|
+
6. Address any feedback promptly
|
|
112
|
+
7. Once approved, your PR will be merged
|
|
113
|
+
|
|
114
|
+
## Style Guidelines
|
|
115
|
+
|
|
116
|
+
- Follow the `.editorconfig` settings
|
|
117
|
+
- Use tabs for indentation (width: 2 spaces)
|
|
118
|
+
- Ensure files end with a newline
|
|
119
|
+
- Use LF line endings (except for Windows-specific files)
|
|
120
|
+
- Trim trailing whitespace (except in Markdown)
|
|
121
|
+
|
|
122
|
+
## Questions?
|
|
123
|
+
|
|
124
|
+
If you have questions about contributing, feel free to open an issue or contact the maintainers.
|
|
125
|
+
|
|
126
|
+
## Revision History
|
|
127
|
+
|
|
128
|
+
| Date | Version | Author | Notes |
|
|
129
|
+
| --- | --- | --- | --- |
|
|
130
|
+
| 2026-01-16 | 0.1.0 | Copilot | Initial contributing guidelines |
|
|
131
|
+
|
|
132
|
+
## Infrastructure Standards
|
|
133
|
+
|
|
134
|
+
All repositories in the MokoConsulting org follow these conventions:
|
|
135
|
+
|
|
136
|
+
### Release Tags
|
|
137
|
+
|
|
138
|
+
Every repo maintains 5 standard release channel tags:
|
|
139
|
+
|
|
140
|
+
- `development` - Active development builds
|
|
141
|
+
- `alpha` - Early internal testing
|
|
142
|
+
- `beta` - Broader testing / client UAT
|
|
143
|
+
- `release-candidate` - Final QA before production
|
|
144
|
+
- `stable` - Production release
|
|
145
|
+
|
|
146
|
+
### Branch Protection
|
|
147
|
+
|
|
148
|
+
- `main` is protected; only `jmiller` can push directly
|
|
149
|
+
- All other contributors must use pull requests
|
|
150
|
+
- PRs are automatically reviewed by Claude Code
|
|
151
|
+
|
|
152
|
+
### CI/CD
|
|
153
|
+
|
|
154
|
+
- MokoGIT Actions runs all CI workflows
|
|
155
|
+
- GitHub Actions are disabled on mirrored repos
|
|
156
|
+
- Workflows live in both `.github/workflows/` and `.mokogit/workflows/`
|
|
157
|
+
|
|
158
|
+
### Update Servers (Joomla)
|
|
159
|
+
|
|
160
|
+
In manifest `<updateservers>`, MokoGIT must be priority 1, GitHub priority 2.
|
|
161
|
+
|
|
162
|
+
### Secrets
|
|
163
|
+
|
|
164
|
+
All repos have `GA_TOKEN` and `GH_TOKEN` as Actions secrets for API access.
|