docs: add comprehensive submodule usage guide
Details how to use this repository as a Git submodule in other projects. Includes: - Setup instructions - Script usage examples - CI/CD integration - Customization guide - Troubleshooting 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
398
SUBMODULE_USAGE.md
Normal file
398
SUBMODULE_USAGE.md
Normal file
@@ -0,0 +1,398 @@
|
|||||||
|
# Using This Repository as a Git Submodule
|
||||||
|
|
||||||
|
This repository can be included in other projects as a Git submodule to provide comprehensive audit and testing infrastructure.
|
||||||
|
|
||||||
|
## Repository Information
|
||||||
|
|
||||||
|
**Submodule URL:** `ssh://git@194.163.145.241:2222/administrator/ai-toolset`
|
||||||
|
|
||||||
|
## What This Provides
|
||||||
|
|
||||||
|
### 🔧 Audit & Testing Scripts (4 comprehensive scripts)
|
||||||
|
|
||||||
|
1. **scripts/audit.sh** - 12-section codebase audit
|
||||||
|
- SPEC.md compliance
|
||||||
|
- Go code quality
|
||||||
|
- Security scanning
|
||||||
|
- Concurrency safety
|
||||||
|
- Error handling
|
||||||
|
- Documentation coverage
|
||||||
|
- Test coverage
|
||||||
|
- Dependencies
|
||||||
|
- Contract bindings
|
||||||
|
- Build verification
|
||||||
|
- File organization
|
||||||
|
- Git status
|
||||||
|
|
||||||
|
2. **scripts/test.sh** - 7 test types
|
||||||
|
- Unit tests
|
||||||
|
- Integration tests
|
||||||
|
- Race detection
|
||||||
|
- Benchmarks
|
||||||
|
- Coverage reports
|
||||||
|
- Contract tests
|
||||||
|
- Package-specific tests
|
||||||
|
|
||||||
|
3. **scripts/check-compliance.sh** - SPEC.md validation
|
||||||
|
- 8 MUST DO requirements
|
||||||
|
- 7 MUST NOT DO violations
|
||||||
|
- Architecture requirements
|
||||||
|
- Foundry integration
|
||||||
|
- Development scripts
|
||||||
|
|
||||||
|
4. **scripts/check-docs.sh** - Documentation coverage
|
||||||
|
- Package documentation
|
||||||
|
- Exported function comments
|
||||||
|
- Exported type comments
|
||||||
|
- README files
|
||||||
|
- Inline comment density
|
||||||
|
- API documentation
|
||||||
|
- Example code
|
||||||
|
|
||||||
|
### 📚 Comprehensive Documentation (1,700+ lines)
|
||||||
|
|
||||||
|
- **SPEC.md** - Technical specification and requirements
|
||||||
|
- **docs/AUDIT_AND_TESTING.md** - Complete testing guide (600+ lines)
|
||||||
|
- **docs/SCRIPTS_REFERENCE.md** - All scripts documented (700+ lines)
|
||||||
|
- **docs/README.md** - Documentation index and navigation
|
||||||
|
- **docs/DEVELOPMENT_SETUP.md** - Environment setup guide
|
||||||
|
- **docs/REFACTORING_PLAN.md** - Systematic refactoring plan
|
||||||
|
|
||||||
|
### 🛠️ Development Infrastructure
|
||||||
|
|
||||||
|
- **scripts/dev.sh** - Unified development script
|
||||||
|
- Container-based development (Podman/Docker)
|
||||||
|
- Foundry integration for contracts
|
||||||
|
- Go binding generation
|
||||||
|
- Complete development workflow
|
||||||
|
|
||||||
|
## Adding as a Submodule
|
||||||
|
|
||||||
|
### Option 1: Add to Parent Repository
|
||||||
|
|
||||||
|
From your parent repository:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Add as submodule
|
||||||
|
git submodule add ssh://git@194.163.145.241:2222/administrator/ai-toolset tools/ai-toolset
|
||||||
|
|
||||||
|
# Initialize and update
|
||||||
|
git submodule update --init --recursive
|
||||||
|
|
||||||
|
# Commit the submodule
|
||||||
|
git add .gitmodules tools/ai-toolset
|
||||||
|
git commit -m "Add ai-toolset submodule for audit/testing infrastructure"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Option 2: Clone Repository with Submodules
|
||||||
|
|
||||||
|
If cloning a repository that already includes this submodule:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone with submodules
|
||||||
|
git clone --recursive <parent-repo-url>
|
||||||
|
|
||||||
|
# Or if already cloned
|
||||||
|
git submodule update --init --recursive
|
||||||
|
```
|
||||||
|
|
||||||
|
## Using the Scripts
|
||||||
|
|
||||||
|
Once added as a submodule, you can use the scripts from your parent repository:
|
||||||
|
|
||||||
|
### Direct Usage
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run audit
|
||||||
|
./tools/ai-toolset/scripts/audit.sh
|
||||||
|
|
||||||
|
# Run tests
|
||||||
|
./tools/ai-toolset/scripts/test.sh all
|
||||||
|
|
||||||
|
# Check compliance
|
||||||
|
./tools/ai-toolset/scripts/check-compliance.sh
|
||||||
|
|
||||||
|
# Check documentation
|
||||||
|
./tools/ai-toolset/scripts/check-docs.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Symlink Setup (Recommended)
|
||||||
|
|
||||||
|
Create symlinks in your parent repository for easier access:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Create scripts directory in parent repo
|
||||||
|
mkdir -p scripts
|
||||||
|
|
||||||
|
# Symlink audit scripts
|
||||||
|
ln -s ../tools/ai-toolset/scripts/audit.sh scripts/audit.sh
|
||||||
|
ln -s ../tools/ai-toolset/scripts/test.sh scripts/test.sh
|
||||||
|
ln -s ../tools/ai-toolset/scripts/check-compliance.sh scripts/check-compliance.sh
|
||||||
|
ln -s ../tools/ai-toolset/scripts/check-docs.sh scripts/check-docs.sh
|
||||||
|
|
||||||
|
# Now use from parent repo
|
||||||
|
./scripts/audit.sh
|
||||||
|
./scripts/test.sh all
|
||||||
|
```
|
||||||
|
|
||||||
|
### Copy and Customize
|
||||||
|
|
||||||
|
If you need to customize the scripts for your project:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Copy scripts to your repository
|
||||||
|
cp -r tools/ai-toolset/scripts/* ./scripts/
|
||||||
|
|
||||||
|
# Customize as needed
|
||||||
|
vim scripts/audit.sh
|
||||||
|
|
||||||
|
# Commit your customized versions
|
||||||
|
git add scripts/
|
||||||
|
git commit -m "Add customized audit scripts"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Updating the Submodule
|
||||||
|
|
||||||
|
### Update to Latest Version
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Navigate to submodule
|
||||||
|
cd tools/ai-toolset
|
||||||
|
|
||||||
|
# Pull latest changes
|
||||||
|
git pull origin v2-master-dev
|
||||||
|
|
||||||
|
# Go back to parent repo
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
# Commit the submodule update
|
||||||
|
git add tools/ai-toolset
|
||||||
|
git commit -m "Update ai-toolset to latest version"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update All Submodules
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Update all submodules to latest
|
||||||
|
git submodule update --remote --merge
|
||||||
|
|
||||||
|
# Commit updates
|
||||||
|
git add .
|
||||||
|
git commit -m "Update all submodules"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Adapting to Your Project
|
||||||
|
|
||||||
|
### 1. SPEC.md Customization
|
||||||
|
|
||||||
|
The included `SPEC.md` is specific to the MEV bot project. For your project:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Copy as template
|
||||||
|
cp tools/ai-toolset/SPEC.md ./SPEC.md
|
||||||
|
|
||||||
|
# Customize for your project
|
||||||
|
vim SPEC.md
|
||||||
|
|
||||||
|
# The check-compliance.sh script will use your SPEC.md
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Script Configuration
|
||||||
|
|
||||||
|
Most scripts are project-agnostic, but you can configure them:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Set environment variables
|
||||||
|
export GO_CONTAINER=your-go-container
|
||||||
|
export COVERAGE_THRESHOLD=80
|
||||||
|
|
||||||
|
# Run with custom settings
|
||||||
|
./tools/ai-toolset/scripts/test.sh coverage
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Documentation Structure
|
||||||
|
|
||||||
|
Use the documentation structure as a template:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Copy documentation structure
|
||||||
|
cp -r tools/ai-toolset/docs/* ./docs/
|
||||||
|
|
||||||
|
# Customize for your project
|
||||||
|
vim docs/README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## CI/CD Integration
|
||||||
|
|
||||||
|
### GitHub Actions Example
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# .github/workflows/audit.yml
|
||||||
|
name: Code Audit
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
audit:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Run Audit
|
||||||
|
run: ./tools/ai-toolset/scripts/audit.sh
|
||||||
|
|
||||||
|
- name: Check Compliance
|
||||||
|
run: ./tools/ai-toolset/scripts/check-compliance.sh
|
||||||
|
|
||||||
|
- name: Run Tests
|
||||||
|
run: ./tools/ai-toolset/scripts/test.sh all
|
||||||
|
```
|
||||||
|
|
||||||
|
### GitLab CI Example
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# .gitlab-ci.yml
|
||||||
|
audit:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- git submodule update --init --recursive
|
||||||
|
- ./tools/ai-toolset/scripts/audit.sh
|
||||||
|
- ./tools/ai-toolset/scripts/check-compliance.sh
|
||||||
|
- ./tools/ai-toolset/scripts/test.sh all
|
||||||
|
```
|
||||||
|
|
||||||
|
## Available Documentation
|
||||||
|
|
||||||
|
All documentation is available in the `docs/` directory:
|
||||||
|
|
||||||
|
- **Start Here:** `docs/README.md` - Documentation index
|
||||||
|
- **Setup:** `docs/DEVELOPMENT_SETUP.md` - Environment setup
|
||||||
|
- **Testing:** `docs/AUDIT_AND_TESTING.md` - Complete testing guide
|
||||||
|
- **Scripts:** `docs/SCRIPTS_REFERENCE.md` - All scripts documented
|
||||||
|
- **Planning:** `docs/REFACTORING_PLAN.md` - Refactoring guide
|
||||||
|
|
||||||
|
## Script Capabilities Summary
|
||||||
|
|
||||||
|
### audit.sh
|
||||||
|
|
||||||
|
✓ 12 comprehensive checks
|
||||||
|
✓ Colored output with severity levels
|
||||||
|
✓ SPEC.md compliance validation
|
||||||
|
✓ Security scanning
|
||||||
|
✓ Code quality analysis
|
||||||
|
|
||||||
|
### test.sh
|
||||||
|
|
||||||
|
✓ 7 test types
|
||||||
|
✓ Container-based execution
|
||||||
|
✓ Coverage reports (HTML + percentage)
|
||||||
|
✓ Verbose mode support
|
||||||
|
✓ Package-specific testing
|
||||||
|
|
||||||
|
### check-compliance.sh
|
||||||
|
|
||||||
|
✓ MUST DO requirements (8 checks)
|
||||||
|
✓ MUST NOT DO violations (7 checks)
|
||||||
|
✓ Architecture validation
|
||||||
|
✓ Foundry integration check
|
||||||
|
✓ Development script verification
|
||||||
|
|
||||||
|
### check-docs.sh
|
||||||
|
|
||||||
|
✓ Package documentation
|
||||||
|
✓ Exported symbols coverage
|
||||||
|
✓ README file validation
|
||||||
|
✓ Comment density analysis
|
||||||
|
✓ >80% coverage target
|
||||||
|
|
||||||
|
## Exit Codes
|
||||||
|
|
||||||
|
All scripts use consistent exit codes:
|
||||||
|
|
||||||
|
- **0** - Success (all checks passed)
|
||||||
|
- **1** - Failure (violations found, tests failed)
|
||||||
|
- **127** - Command not found
|
||||||
|
- **255** - Container error
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
1. **Keep Submodule Updated**
|
||||||
|
- Regularly pull latest changes
|
||||||
|
- Review release notes before updating
|
||||||
|
|
||||||
|
2. **Run Before Commits**
|
||||||
|
```bash
|
||||||
|
# Pre-commit hook
|
||||||
|
./tools/ai-toolset/scripts/test.sh unit
|
||||||
|
./tools/ai-toolset/scripts/check-compliance.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Run Before Push**
|
||||||
|
```bash
|
||||||
|
# Pre-push validation
|
||||||
|
./tools/ai-toolset/scripts/test.sh all
|
||||||
|
./tools/ai-toolset/scripts/audit.sh
|
||||||
|
./tools/ai-toolset/scripts/check-docs.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **CI/CD Integration**
|
||||||
|
- Run audit on every push
|
||||||
|
- Block merges on failures
|
||||||
|
- Generate coverage reports
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Submodule Not Initialized
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git submodule update --init --recursive
|
||||||
|
```
|
||||||
|
|
||||||
|
### Permission Denied on Scripts
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chmod +x tools/ai-toolset/scripts/*.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Container Not Found
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Update container name in environment
|
||||||
|
export GO_CONTAINER=your-container-name
|
||||||
|
./tools/ai-toolset/scripts/test.sh unit
|
||||||
|
```
|
||||||
|
|
||||||
|
### Custom Script Directory
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Scripts look for Go code in ./pkg/ by default
|
||||||
|
# For different structure, customize scripts or use symlinks
|
||||||
|
```
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
For issues or questions:
|
||||||
|
|
||||||
|
1. Check documentation in `docs/`
|
||||||
|
2. Review `docs/SCRIPTS_REFERENCE.md`
|
||||||
|
3. Check `docs/AUDIT_AND_TESTING.md` for testing guidance
|
||||||
|
4. Review commit history for examples
|
||||||
|
|
||||||
|
## Version Information
|
||||||
|
|
||||||
|
This infrastructure includes:
|
||||||
|
|
||||||
|
- **Scripts:** 4 audit/test scripts + 5 development scripts
|
||||||
|
- **Documentation:** 1,700+ lines across 5 comprehensive guides
|
||||||
|
- **Code Quality:** Fixed race conditions, added validation, eliminated silent failures
|
||||||
|
- **Build Status:** ✅ All packages compile
|
||||||
|
- **Test Coverage:** >70% target with detailed reports
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Repository:** `ssh://git@194.163.145.241:2222/administrator/ai-toolset`
|
||||||
|
**Branch:** `v2-master-dev`
|
||||||
|
**Last Updated:** 2025-11-11
|
||||||
|
**Status:** Production Ready ✅
|
||||||
Reference in New Issue
Block a user