596 lines
22 KiB
XML
596 lines
22 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<repository-structure xmlns="http://mokoconsulting.com/schemas/repository-structure"
|
|
version="1.0"
|
|
schema-version="1.0">
|
|
<metadata>
|
|
<name>Default Repository Structure</name>
|
|
<description>Default repository structure applicable to all repository types with minimal requirements</description>
|
|
<repository-type>library</repository-type>
|
|
<platform>multi-platform</platform>
|
|
<last-updated>2026-01-16T00:00:00Z</last-updated>
|
|
<maintainer>Moko Consulting</maintainer>
|
|
</metadata>
|
|
|
|
<structure>
|
|
<!-- Root level files -->
|
|
<root-files>
|
|
<file extension="md">
|
|
<name>README.md</name>
|
|
<description>Project overview and documentation</description>
|
|
<requirement-status>required</requirement-status>
|
|
<audience>general</audience>
|
|
<source>
|
|
<path>templates/docs/required</path>
|
|
<filename>template-README.md</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.</path>
|
|
<filename>README.md</filename>
|
|
<create-path>false</create-path>
|
|
</destination>
|
|
<template>templates/docs/required/template-README.md</template>
|
|
</file>
|
|
|
|
<file extension="">
|
|
<name>LICENSE</name>
|
|
<description>License file (GPL-3.0-or-later)</description>
|
|
<requirement-status>required</requirement-status>
|
|
<audience>general</audience>
|
|
<source>
|
|
<path>templates/licenses</path>
|
|
<filename>GPL-3.0</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.</path>
|
|
<filename>LICENSE</filename>
|
|
<create-path>false</create-path>
|
|
</destination>
|
|
<template>templates/licenses/GPL-3.0</template>
|
|
</file>
|
|
|
|
<file extension="md">
|
|
<name>CHANGELOG.md</name>
|
|
<description>Version history and changes</description>
|
|
<requirement-status>required</requirement-status>
|
|
<audience>general</audience>
|
|
<source>
|
|
<path>templates/docs/required</path>
|
|
<filename>template-CHANGELOG.md</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.</path>
|
|
<filename>CHANGELOG.md</filename>
|
|
<create-path>false</create-path>
|
|
</destination>
|
|
<template>templates/docs/required/template-CHANGELOG.md</template>
|
|
</file>
|
|
|
|
<file extension="md">
|
|
<name>CONTRIBUTING.md</name>
|
|
<description>Contribution guidelines</description>
|
|
<requirement-status>required</requirement-status>
|
|
<audience>contributor</audience>
|
|
<source>
|
|
<path>templates/docs/required</path>
|
|
<filename>template-CONTRIBUTING.md</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.</path>
|
|
<filename>CONTRIBUTING.md</filename>
|
|
<create-path>false</create-path>
|
|
</destination>
|
|
<template>templates/docs/required/template-CONTRIBUTING.md</template>
|
|
</file>
|
|
|
|
<file extension="md">
|
|
<name>SECURITY.md</name>
|
|
<description>Security policy and vulnerability reporting</description>
|
|
<requirement-status>required</requirement-status>
|
|
<audience>general</audience>
|
|
<source>
|
|
<path>templates/docs/required</path>
|
|
<filename>template-SECURITY.md</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.</path>
|
|
<filename>SECURITY.md</filename>
|
|
<create-path>false</create-path>
|
|
</destination>
|
|
<template>templates/docs/required/template-SECURITY.md</template>
|
|
</file>
|
|
|
|
<file extension="md">
|
|
<name>CODE_OF_CONDUCT.md</name>
|
|
<description>Community code of conduct</description>
|
|
<requirement-status>required</requirement-status>
|
|
<always-overwrite>true</always-overwrite>
|
|
<audience>contributor</audience>
|
|
<source>
|
|
<path>templates/docs/extra</path>
|
|
<filename>template-CODE_OF_CONDUCT.md</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.</path>
|
|
<filename>CODE_OF_CONDUCT.md</filename>
|
|
<create-path>false</create-path>
|
|
</destination>
|
|
<template>templates/docs/extra/template-CODE_OF_CONDUCT.md</template>
|
|
</file>
|
|
|
|
<file extension="md">
|
|
<name>ROADMAP.md</name>
|
|
<description>Project roadmap with version goals and milestones</description>
|
|
<requirement-status>suggested</requirement-status>
|
|
<audience>general</audience>
|
|
<source>
|
|
<path>templates/docs/extra</path>
|
|
<filename>template-ROADMAP.md</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.</path>
|
|
<filename>ROADMAP.md</filename>
|
|
<create-path>false</create-path>
|
|
</destination>
|
|
<template>templates/docs/extra/template-ROADMAP.md</template>
|
|
</file>
|
|
|
|
<file extension="gitignore">
|
|
<name>.gitignore</name>
|
|
<description>Git ignore patterns</description>
|
|
<requirement-status>required</requirement-status>
|
|
<always-overwrite>false</always-overwrite>
|
|
<audience>developer</audience>
|
|
</file>
|
|
|
|
<file extension="gitattributes">
|
|
<name>.gitattributes</name>
|
|
<description>Git attributes configuration</description>
|
|
<requirement-status>required</requirement-status>
|
|
<audience>developer</audience>
|
|
</file>
|
|
|
|
<file extension="editorconfig">
|
|
<name>.editorconfig</name>
|
|
<description>Editor configuration for consistent coding style</description>
|
|
<requirement-status>required</requirement-status>
|
|
<always-overwrite>false</always-overwrite>
|
|
<audience>developer</audience>
|
|
</file>
|
|
|
|
<file>
|
|
<name>Makefile</name>
|
|
<description>Build automation</description>
|
|
<requirement-status>required</requirement-status>
|
|
<always-overwrite>true</always-overwrite>
|
|
<audience>developer</audience>
|
|
<source>
|
|
<path>templates/makefiles</path>
|
|
<filename>Makefile.generic.template</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.</path>
|
|
<filename>Makefile</filename>
|
|
<create-path>false</create-path>
|
|
</destination>
|
|
<template>templates/makefiles/Makefile.generic.template</template>
|
|
</file>
|
|
</root-files>
|
|
|
|
<!-- Directory structure -->
|
|
<directories>
|
|
<!-- Documentation directory -->
|
|
<directory path="docs">
|
|
<name>docs</name>
|
|
<description>Documentation directory</description>
|
|
<requirement-status>required</requirement-status>
|
|
<purpose>Contains comprehensive project documentation</purpose>
|
|
|
|
<files>
|
|
<file extension="md">
|
|
<name>index.md</name>
|
|
<description>Documentation index</description>
|
|
<requirement-status>suggested</requirement-status>
|
|
<template>templates/docs/index.md</template>
|
|
</file>
|
|
|
|
<file extension="md">
|
|
<name>INSTALLATION.md</name>
|
|
<description>Installation and setup instructions</description>
|
|
<requirement-status>required</requirement-status>
|
|
<audience>general</audience>
|
|
<source>
|
|
<path>templates/docs/required</path>
|
|
<filename>template-INSTALLATION.md</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>docs</path>
|
|
<filename>INSTALLATION.md</filename>
|
|
<create-path>true</create-path>
|
|
</destination>
|
|
<template>templates/docs/required/template-INSTALLATION.md</template>
|
|
</file>
|
|
|
|
<file extension="md">
|
|
<name>API.md</name>
|
|
<description>API documentation</description>
|
|
<requirement-status>suggested</requirement-status>
|
|
</file>
|
|
|
|
<file extension="md">
|
|
<name>ARCHITECTURE.md</name>
|
|
<description>Architecture documentation</description>
|
|
<requirement-status>suggested</requirement-status>
|
|
</file>
|
|
</files>
|
|
</directory>
|
|
|
|
<!-- Scripts directory -->
|
|
<directory path="scripts">
|
|
<name>scripts</name>
|
|
<description>Build and automation scripts</description>
|
|
<requirement-status>required</requirement-status>
|
|
<purpose>Contains scripts for building, testing, and deploying</purpose>
|
|
|
|
<files>
|
|
<file extension="sh">
|
|
<name>validate_structure.sh</name>
|
|
<description>Repository structure validation script</description>
|
|
<requirement-status>suggested</requirement-status>
|
|
<template>templates/scripts/validate/structure.sh</template>
|
|
</file>
|
|
|
|
<file extension="xml">
|
|
<name>MokoStandards.override.xml</name>
|
|
<description>MokoStandards sync override configuration</description>
|
|
<requirement-status>optional</requirement-status>
|
|
<always-overwrite>false</always-overwrite>
|
|
</file>
|
|
</files>
|
|
</directory>
|
|
|
|
<!-- Source directory -->
|
|
<directory path="src">
|
|
<name>src</name>
|
|
<description>Source code directory</description>
|
|
<requirement-status>required</requirement-status>
|
|
<purpose>Contains application source code</purpose>
|
|
</directory>
|
|
|
|
<!-- Tests directory -->
|
|
<directory path="tests">
|
|
<name>tests</name>
|
|
<description>Test files</description>
|
|
<requirement-status>suggested</requirement-status>
|
|
<purpose>Contains unit tests, integration tests, and test fixtures</purpose>
|
|
|
|
<subdirectories>
|
|
<directory path="tests/unit">
|
|
<name>unit</name>
|
|
<description>Unit tests</description>
|
|
<requirement-status>suggested</requirement-status>
|
|
</directory>
|
|
|
|
<directory path="tests/integration">
|
|
<name>integration</name>
|
|
<description>Integration tests</description>
|
|
<requirement-status>optional</requirement-status>
|
|
</directory>
|
|
</subdirectories>
|
|
</directory>
|
|
|
|
<!-- .github directory -->
|
|
<directory path=".github">
|
|
<name>.github</name>
|
|
<description>GitHub-specific configuration</description>
|
|
<requirement-status>required</requirement-status>
|
|
<purpose>Contains GitHub Actions workflows, issue templates, etc.</purpose>
|
|
|
|
<subdirectories>
|
|
<directory path=".github/workflows">
|
|
<name>workflows</name>
|
|
<description>GitHub Actions workflows</description>
|
|
<requirement-status>required</requirement-status>
|
|
|
|
<files>
|
|
<file extension="yml">
|
|
<name>ci.yml</name>
|
|
<description>Continuous integration workflow</description>
|
|
<requirement-status>required</requirement-status>
|
|
<always-overwrite>true</always-overwrite>
|
|
<source>
|
|
<path>templates/workflows/generic</path>
|
|
<filename>ci.yml.template</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.github/workflows</path>
|
|
<filename>ci.yml</filename>
|
|
<create-path>true</create-path>
|
|
</destination>
|
|
<template>templates/workflows/generic/ci.yml.template</template>
|
|
</file>
|
|
|
|
<file extension="yml">
|
|
<name>test.yml</name>
|
|
<description>Comprehensive testing workflow</description>
|
|
<requirement-status>optional</requirement-status>
|
|
<always-overwrite>true</always-overwrite>
|
|
<source>
|
|
<path>templates/workflows/generic</path>
|
|
<filename>test.yml.template</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.github/workflows</path>
|
|
<filename>test.yml</filename>
|
|
<create-path>true</create-path>
|
|
</destination>
|
|
<template>templates/workflows/generic/test.yml.template</template>
|
|
</file>
|
|
|
|
<file extension="yml">
|
|
<name>code-quality.yml</name>
|
|
<description>Code quality and linting workflow</description>
|
|
<requirement-status>required</requirement-status>
|
|
<always-overwrite>true</always-overwrite>
|
|
<source>
|
|
<path>templates/workflows/generic</path>
|
|
<filename>code-quality.yml.template</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.github/workflows</path>
|
|
<filename>code-quality.yml</filename>
|
|
<create-path>true</create-path>
|
|
</destination>
|
|
<template>templates/workflows/generic/code-quality.yml.template</template>
|
|
</file>
|
|
|
|
<file extension="yml">
|
|
<name>codeql-analysis.yml</name>
|
|
<description>CodeQL security analysis workflow</description>
|
|
<requirement-status>required</requirement-status>
|
|
<always-overwrite>true</always-overwrite>
|
|
<source>
|
|
<path>templates/workflows/generic</path>
|
|
<filename>codeql-analysis.yml.template</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.github/workflows</path>
|
|
<filename>codeql-analysis.yml</filename>
|
|
<create-path>true</create-path>
|
|
</destination>
|
|
<template>templates/workflows/generic/codeql-analysis.yml.template</template>
|
|
</file>
|
|
|
|
<file extension="yml">
|
|
<name>deploy.yml</name>
|
|
<description>Deployment workflow</description>
|
|
<requirement-status>optional</requirement-status>
|
|
<always-overwrite>true</always-overwrite>
|
|
<source>
|
|
<path>templates/workflows/generic</path>
|
|
<filename>deploy.yml.template</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.github/workflows</path>
|
|
<filename>deploy.yml</filename>
|
|
<create-path>true</create-path>
|
|
</destination>
|
|
<template>templates/workflows/generic/deploy.yml.template</template>
|
|
</file>
|
|
|
|
<file extension="yml">
|
|
<name>repo-health.yml</name>
|
|
<description>Repository health monitoring</description>
|
|
<requirement-status>required</requirement-status>
|
|
<always-overwrite>true</always-overwrite>
|
|
<source>
|
|
<path>templates/workflows/generic</path>
|
|
<filename>repo_health.yml.template</filename>
|
|
<type>template</type>
|
|
</source>
|
|
<destination>
|
|
<path>.github/workflows</path>
|
|
<filename>repo-health.yml</filename>
|
|
<create-path>true</create-path>
|
|
</destination>
|
|
<template>templates/workflows/generic/repo_health.yml.template</template>
|
|
</file>
|
|
|
|
<file extension="yml">
|
|
<name>release-cycle.yml</name>
|
|
<description>Release management workflow with automated release flow</description>
|
|
<requirement-status>required</requirement-status>
|
|
<always-overwrite>true</always-overwrite>
|
|
<source>
|
|
<path>.github/workflows</path>
|
|
<filename>release-cycle.yml</filename>
|
|
<type>copy</type>
|
|
</source>
|
|
<destination>
|
|
<path>.github/workflows</path>
|
|
<filename>release-cycle.yml</filename>
|
|
<create-path>true</create-path>
|
|
</destination>
|
|
<template>.github/workflows/release-cycle.yml</template>
|
|
</file>
|
|
|
|
<file extension="yml">
|
|
<name>standards-compliance.yml</name>
|
|
<description>MokoStandards compliance validation</description>
|
|
<requirement-status>required</requirement-status>
|
|
<always-overwrite>true</always-overwrite>
|
|
<source>
|
|
<path>.github/workflows</path>
|
|
<filename>standards-compliance.yml</filename>
|
|
<type>copy</type>
|
|
</source>
|
|
<destination>
|
|
<path>.github/workflows</path>
|
|
<filename>standards-compliance.yml</filename>
|
|
<create-path>true</create-path>
|
|
</destination>
|
|
<template>.github/workflows/standards-compliance.yml</template>
|
|
</file>
|
|
</files>
|
|
</directory>
|
|
</subdirectories>
|
|
</directory>
|
|
|
|
<!-- Not-allowed directories (generated/build artifacts) -->
|
|
<directory path="node_modules">
|
|
<name>node_modules</name>
|
|
<description>Node.js dependencies (generated)</description>
|
|
<requirement-status>not-allowed</requirement-status>
|
|
<purpose>Generated directory that should not be committed</purpose>
|
|
</directory>
|
|
|
|
<directory path="vendor">
|
|
<name>vendor</name>
|
|
<description>PHP dependencies (generated)</description>
|
|
<requirement-status>not-allowed</requirement-status>
|
|
<purpose>Generated directory that should not be committed</purpose>
|
|
</directory>
|
|
|
|
<directory path="build">
|
|
<name>build</name>
|
|
<description>Build artifacts (generated)</description>
|
|
<requirement-status>not-allowed</requirement-status>
|
|
<purpose>Generated directory that should not be committed</purpose>
|
|
</directory>
|
|
|
|
<directory path="dist">
|
|
<name>dist</name>
|
|
<description>Distribution files (generated)</description>
|
|
<requirement-status>not-allowed</requirement-status>
|
|
<purpose>Generated directory that should not be committed</purpose>
|
|
</directory>
|
|
</directories>
|
|
|
|
<!-- Repository Requirements -->
|
|
<repository-requirements>
|
|
<!-- Required Secrets -->
|
|
<secrets>
|
|
<secret>
|
|
<name>GITHUB_TOKEN</name>
|
|
<description>GitHub API token (automatically provided)</description>
|
|
<required>true</required>
|
|
<scope>repository</scope>
|
|
<used-in>GitHub Actions workflows</used-in>
|
|
</secret>
|
|
|
|
<secret>
|
|
<name>CODECOV_TOKEN</name>
|
|
<description>Codecov upload token for code coverage reporting</description>
|
|
<required>false</required>
|
|
<scope>repository</scope>
|
|
<used-in>CI workflow code coverage step</used-in>
|
|
</secret>
|
|
</secrets>
|
|
|
|
<!-- Required Variables -->
|
|
<variables>
|
|
<variable>
|
|
<name>NODE_VERSION</name>
|
|
<description>Node.js version for CI/CD</description>
|
|
<default-value>18</default-value>
|
|
<required>false</required>
|
|
<scope>repository</scope>
|
|
</variable>
|
|
|
|
<variable>
|
|
<name>PYTHON_VERSION</name>
|
|
<description>Python version for CI/CD</description>
|
|
<default-value>3.9</default-value>
|
|
<required>false</required>
|
|
<scope>repository</scope>
|
|
</variable>
|
|
</variables>
|
|
|
|
<!-- Branch Protections -->
|
|
<branch-protections>
|
|
<branch-protection>
|
|
<branch-pattern>main</branch-pattern>
|
|
<require-pull-request>true</require-pull-request>
|
|
<required-approvals>1</required-approvals>
|
|
<require-code-owner-review>false</require-code-owner-review>
|
|
<dismiss-stale-reviews>true</dismiss-stale-reviews>
|
|
<require-status-checks>true</require-status-checks>
|
|
<required-status-checks>
|
|
<check>ci</check>
|
|
<check>code-quality</check>
|
|
</required-status-checks>
|
|
<enforce-admins>false</enforce-admins>
|
|
<restrict-pushes>true</restrict-pushes>
|
|
</branch-protection>
|
|
|
|
<branch-protection>
|
|
<branch-pattern>master</branch-pattern>
|
|
<require-pull-request>true</require-pull-request>
|
|
<required-approvals>1</required-approvals>
|
|
<require-code-owner-review>false</require-code-owner-review>
|
|
<dismiss-stale-reviews>true</dismiss-stale-reviews>
|
|
<require-status-checks>true</require-status-checks>
|
|
<required-status-checks>
|
|
<check>ci</check>
|
|
</required-status-checks>
|
|
<enforce-admins>false</enforce-admins>
|
|
<restrict-pushes>true</restrict-pushes>
|
|
</branch-protection>
|
|
</branch-protections>
|
|
|
|
<!-- Repository Settings -->
|
|
<repository-settings>
|
|
<has-issues>true</has-issues>
|
|
<has-projects>true</has-projects>
|
|
<has-wiki>false</has-wiki>
|
|
<has-discussions>false</has-discussions>
|
|
<allow-merge-commit>true</allow-merge-commit>
|
|
<allow-squash-merge>true</allow-squash-merge>
|
|
<allow-rebase-merge>false</allow-rebase-merge>
|
|
<delete-branch-on-merge>true</delete-branch-on-merge>
|
|
<allow-auto-merge>false</allow-auto-merge>
|
|
</repository-settings>
|
|
|
|
<!-- Required Labels -->
|
|
<labels>
|
|
<label>
|
|
<name>bug</name>
|
|
<color>d73a4a</color>
|
|
<description>Something isn't working</description>
|
|
</label>
|
|
|
|
<label>
|
|
<name>enhancement</name>
|
|
<color>a2eeef</color>
|
|
<description>New feature or request</description>
|
|
</label>
|
|
|
|
<label>
|
|
<name>documentation</name>
|
|
<color>0075ca</color>
|
|
<description>Improvements or additions to documentation</description>
|
|
</label>
|
|
|
|
<label>
|
|
<name>security</name>
|
|
<color>ee0701</color>
|
|
<description>Security vulnerability or concern</description>
|
|
</label>
|
|
</labels>
|
|
</repository-requirements>
|
|
</structure>
|
|
</repository-structure>
|