Retrofit the ECHO Protocol into an existing project.
# From your project root
git clone https://github.com/fame0528/savant-protocol.git /tmp/echo-protocol
cp -r /tmp/echo-protocol/ECHO.md .
cp -r /tmp/echo-protocol/protocol.config.yaml .
cp -r /tmp/echo-protocol/STARTER-PROMPT.md .
cp -r /tmp/echo-protocol/MIGRATION.md .
cp -r /tmp/echo-protocol/VERSION .
cp -r /tmp/echo-protocol/CHANGELOG.md .
cp -r /tmp/echo-protocol/LICENSE .
cp -r /tmp/echo-protocol/README.md .
cp -r /tmp/echo-protocol/.markdownlint.json .
cp -r /tmp/echo-protocol/overview.jpg .
cp -r /tmp/echo-protocol/templates/ ./templates/
cp -r /tmp/echo-protocol/coding-standards/ ./coding-standards/mkdir -p dev/fids/archive dev/session-summariesAdd these lines to your .gitignore:
# ECHO Protocol runtime state
dev/session-summaries/*
dev/fids/*
!dev/fids/.gitkeep
!dev/fids/archive/
!dev/fids/archive/.gitkeep
!.gitkeep
# Keep LEARNINGS.md tracked
!dev/LEARNINGS.md
cat > dev/LEARNINGS.md << 'EOF'
# LEARNINGS
<!-- Add new entries above this line -->
EOFEdit protocol.config.yaml and set:
protocol:
version: "0.1.0"
strict_mode: true
project:
name: "your-project-name"
description: "Your project description"
version: "your-project-version"
language: "rust" # rust | typescript | python | go | java | csharp
commands:
build: "your-build-command"
test: "your-test-command"
type_check: "your-type-check-command"
lint: "your-lint-command"
format: "your-format-command"
clean: "your-clean-command"Your project root should now contain:
your-project/
├── ECHO.md
├── protocol.config.yaml # Configured with your language + commands
├── STARTER-PROMPT.md
├── MIGRATION.md # This file
├── README.md # Landing page
├── VERSION
├── CHANGELOG.md
├── LICENSE
├── .markdownlint.json
├── overview.jpg # Protocol overview diagram
├── templates/
│ ├── FID-TEMPLATE.md
│ └── SESSION-SUMMARY.md
├── coding-standards/
│ └── {your-language}.md
├── dev/
│ ├── LEARNINGS.md
│ ├── fids/
│ │ └── archive/
│ └── session-summaries/
└── [your existing project files]
Copy the appropriate starter prompt from STARTER-PROMPT.md into your
AI agent's system prompt. The agent will boot, prove compliance, and
begin working under full protocol discipline.
Use this checklist when adding the protocol to an existing project:
- All protocol files copied to project root
-
dev/fids/anddev/session-summaries/directories created -
.gitignoreupdated with protocol runtime paths -
dev/LEARNINGS.mdcreated -
protocol.config.yamlconfigured with correct language -
protocol.config.yamlconfigured with correct build/test commands -
protocol.config.yamlproject name and version set - Starter prompt copied to agent system prompt
- Boot sequence verified (agent confirms all laws and config)
The protocol is designed to be forked into each project independently.
Each project gets its own protocol.config.yaml with project-specific
commands and settings, but shares the same underlying discipline.
- Maintain a "golden copy" of the protocol (this repo)
- When starting a new project, copy the golden copy into the project
- Configure
protocol.config.yamlfor that project's language/toolchain - Each project evolves independently — customize as needed
When the protocol gets a new version:
- Check the CHANGELOG for breaking changes
- Copy updated protocol files into your project
- Preserve your
protocol.config.yaml(don't overwrite project-specific settings) - Preserve your
dev/directory (contains your session history) - Update
VERSIONto match the new protocol version
If your project already has its own CHANGELOG.md, README.md, or
coding-standards/ directory, protocol files will collide with yours at
the project root. Use a protocol/ subdirectory to keep them clean:
your-project/
├── protocol/ # All protocol files live here
│ ├── ECHO.md
│ ├── protocol.config.yaml
│ ├── STARTER-PROMPT.md
│ ├── MIGRATION.md
│ ├── VERSION
│ ├── CHANGELOG.md # Protocol changelog (not yours)
│ ├── LICENSE
│ ├── .markdownlint.json
│ ├── overview.jpg
│ ├── templates/
│ ├── coding-standards/
│ └── dev/
├── CHANGELOG.md # Your project's changelog
├── README.md # Your project's readme
├── coding-standards/ # Your project's standards (if any)
└── [your existing project files]
When using this layout, update protocol.config.yaml paths to point
to protocol/dev/ instead of dev/. The starter prompt should reference
protocol/ECHO.md and protocol/protocol.config.yaml.
Recommendation: Use the
protocol/namespace if your project already has a CHANGELOG.md, README.md, or coding-standards/ at the root. This prevents file collisions and keeps protocol updates clean — you can overwrite the entireprotocol/directory without touching your project files.