repo-forge is a Python-powered standards automation toolkit for applying a shared repository workflow across multiple repos.
It solves repetitive setup by rendering generic templates (docs, issue forms, and GitHub Actions workflows) into target repositories using placeholder values from a local settings file.
- Keeps reusable templates in
templates/ - Replaces
{{TOKENS}}with project-specific values - Applies templates to one or many sibling repositories
- Supports dry-run and strict token validation modes
- Adds overwrite guardrails with optional
--override - Generates a local markdown diff report by default
- Initialize local settings:
python3 forge.py --init-settings-
Edit
settings.json(local-only file; ignored by git). -
Preview changes:
python3 forge.py --dry-run --strict- Apply templates:
python3 forge.py --yes --strict- Overwrite existing differing files only when intentional:
python3 forge.py --yes --strict --overrideworkspace/
repo-forge/
target-repo-a/
target-repo-b/
Example targets for Journals are already included in example-settings.json.
All placeholders in template files use this shape:
{{TOKEN_NAME}}
Example: {{PROJECT_NAME}}, {{DEVELOPMENT_BRANCH}}, {{PROJECT_BOARD_TITLE}}.
settings.jsonis intentionally untracked.- Existing files in targets are protected by default if they differ from rendered templates.
- Use
--overrideto overwrite existing differing files. - A markdown diff report is written to
.repo-forge/diff-report.mdby default. - Disable report generation with
--no-diff-reportor set a custom path with--diff-report. - The tool does not run git commits automatically.
Apache-2.0 (see templates/LICENSE).