Thank you for your interest in contributing! This guide will help you get started.
# Clone the repository
git clone https://github.com/broomva/symphony-forge.git
cd symphony-forge
# Install dependencies
bun install
# Build the CLI
npx tsup
# Test locally
node dist/index.js --helpscripts/
index.ts # CLI entry point (Commander.js)
initialize.ts # next-forge clone + setup
update.ts # Version update handler
scaffold.ts # Layer orchestration
layer-cmd.ts # `layer` subcommand
audit-cmd.ts # `audit` subcommand
layers/
types.ts # Interfaces (Layer, ProjectConfig, FileEntry)
utils.ts # Template helpers (bash headers, PM commands)
index.ts # Layer registry
control.ts # .control/*.yaml generators
harness.ts # scripts/harness/*.sh generators
knowledge.ts # docs/ skeleton generators
consciousness.ts # CLAUDE.md + AGENTS.md generators
autoany.ts # EGRI config generator
skills/
symphony-forge/ # Agent skill definition
- Create
scripts/layers/my-layer.tsimplementing theLayerinterface - Register it in
scripts/layers/index.ts - Add it to
LAYER_NAMESinscripts/layers/types.ts - Update the consciousness layer to handle the new layer conditionally
- Add tests
- Templates are inline — All generated content uses TypeScript template literals, not separate files. This ensures tsup bundles everything into a single
dist/index.js. - Package manager agnostic — Use helpers from
scripts/layers/utils.ts(pmRun,pmExec,pmInstall) instead of hardcodingbun/npmcommands. - Soft dependencies — Layers reference each other in content but don't require each other.
- Bash strict mode — All generated scripts use
set -euo pipefail. - Test locally — Build with
npx tsup, then testlayerandauditcommands in a temp directory.
# Build
npx tsup
# Test in a temp directory
TMPDIR=$(mktemp -d) && cd "$TMPDIR"
git init && echo '{"name":"test"}' > package.json
mkdir -p apps/app packages/database
node /path/to/symphony-forge/dist/index.js layer all --force
node /path/to/symphony-forge/dist/index.js auditFollow conventional commits:
feat:new featuresfix:bug fixesdocs:documentation changesrefactor:code changes that neither fix bugs nor add featurestest:adding or updating tests
- Fork the repository
- Create a feature branch from
main - Make your changes
- Run
npx tsupto verify the build - Test the CLI commands locally
- Open a PR with a clear description
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.