Loading...
Loading...
Verify and enforce coding standards, AI guidelines, and workspace compliance across repositories. Use for standards propagation, compliance verification, and enforcing development best practices.
npx skill4agent add vamseeachanta/workspace-hub compliance-checkVerify and enforce coding standards, AI guidelines, and workspace compliance across all 26+ repositories.
# Quick compliance check
./scripts/compliance/verify_compliance.sh
# Check specific repository
./scripts/compliance/verify_compliance.sh --repo=digitalmodel
# Propagate standards to all repos
./scripts/compliance/propagate_claude_config.pyuser_prompt.md/src/tests/docs/config/scripts/data/reports./scripts/compliance/verify_compliance.sh./scripts/compliance/verify_compliance.sh --repo=digitalmodel./scripts/compliance/verify_compliance.sh --area=testing
./scripts/compliance/verify_compliance.sh --area=logging
./scripts/compliance/verify_compliance.sh --area=file-org## Structure Compliance
- [ ] /src directory exists and contains source code
- [ ] /tests directory exists with unit and integration tests
- [ ] /docs directory exists with documentation
- [ ] /config directory exists for configurations
- [ ] /scripts directory exists for utilities
- [ ] No files in root (except standard config files)
- [ ] CLAUDE.md exists and follows template
- [ ] .agent-os/ directory properly configured## Testing Compliance
- [ ] pytest configured as test framework
- [ ] Test coverage >= 80%
- [ ] Unit tests in /tests/unit/
- [ ] Integration tests in /tests/integration/
- [ ] No mock data (use real repository data)
- [ ] Performance tests exist
- [ ] Tests run in CI/CD pipeline## Logging Compliance
- [ ] All 5 log levels supported (DEBUG, INFO, WARNING, ERROR, CRITICAL)
- [ ] Standard log format used
- [ ] Log files in /logs directory
- [ ] Log rotation configured
- [ ] Sensitive data sanitized
- [ ] Structured logging for parsing## Reporting Compliance
- [ ] HTML reports generated (not static images)
- [ ] Interactive plots (Plotly, Bokeh, Altair)
- [ ] No matplotlib PNG exports
- [ ] CSV data uses relative paths
- [ ] Reports in /reports directory
- [ ] Responsive design## AI Compliance
- [ ] CLAUDE.md references AI_AGENT_GUIDELINES.md
- [ ] Interactive engagement enforced
- [ ] Question-asking pattern documented
- [ ] TDD workflow required
- [ ] No assumptions without clarification./scripts/compliance/propagate_claude_config.py./scripts/compliance/propagate_guidelines.sh./scripts/compliance/propagate_interactive_mode.sh./scripts/compliance/install_compliance_hooks.sh# .git/hooks/pre-commit
#!/bin/bash
set -e
echo "Running compliance checks..."
# Check file organization
./scripts/compliance/check_file_org.sh
# Check test coverage
coverage=$(./scripts/compliance/get_coverage.sh)
if [ "$coverage" -lt 80 ]; then
echo "ERROR: Test coverage $coverage% is below 80%"
exit 1
fi
# Check for static images in reports
if find reports/ -name "*.png" -o -name "*.jpg" | grep -q .; then
echo "ERROR: Static images found in reports. Use interactive HTML."
exit 1
fi
echo "Compliance checks passed!"| Issue | Cause | Resolution |
|---|---|---|
| Structure violation | Files in wrong directory | Move files to correct location |
| Low test coverage | Insufficient tests | Add unit/integration tests |
| Static images | matplotlib exports | Convert to Plotly/Bokeh HTML |
| Missing CLAUDE.md | New repo setup | Run propagation script |
| Hook not running | Permission issue | |
# Create missing directories
mkdir -p src tests docs config scripts data reports logs
# Move misplaced files
git mv root_file.py src/
git mv old_tests.py tests/unit/# Install pytest and coverage
pip install pytest pytest-cov
# Run tests with coverage
pytest --cov=src --cov-report=html --cov-fail-under=80# Add proper logging configuration
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s',
handlers=[
logging.FileHandler('logs/app.log'),
logging.StreamHandler()
]
)# Replace matplotlib with Plotly
# Before (non-compliant):
import matplotlib.pyplot as plt
plt.savefig('reports/chart.png')
# After (compliant):
import plotly.express as px
fig = px.line(df, x='x', y='y')
fig.write_html('reports/chart.html')# Make hook executable
chmod +x .git/hooks/pre-commit
# Check hook exists
ls -la .git/hooks/pre-commit# Add exceptions to compliance config
# config/compliance.yaml
exceptions:
- path: legacy/old_module.py
reason: "Legacy code, scheduled for refactoring in Q2"# Ensure coverage config exists
# pyproject.toml or .coveragerc
[tool.coverage.run]
source = ["src"]
omit = ["tests/*", "*/migrations/*"]./scripts/compliance/generate_report.sh > reports/compliance_report.html<!DOCTYPE html>
<html>
<head>
<title>Compliance Report</title>
<style>
.pass { color: green; }
.fail { color: red; }
.warn { color: orange; }
</style>
</head>
<body>
<h1>Workspace Compliance Report</h1>
<p>Generated: {{timestamp}}</p>
<h2>Summary</h2>
<table>
<tr><td>Total Repositories</td><td>{{total}}</td></tr>
<tr><td class="pass">Fully Compliant</td><td>{{compliant}}</td></tr>
<tr><td class="warn">Partial Compliance</td><td>{{partial}}</td></tr>
<tr><td class="fail">Non-Compliant</td><td>{{non_compliant}}</td></tr>
</table>
<h2>Repository Details</h2>
{{#each repositories}}
<h3>{{name}}</h3>
<ul>
{{#each checks}}
<li class="{{status}}">{{check}}: {{message}}</li>
{{/each}}
</ul>
{{/each}}
</body>
</html># .github/workflows/compliance.yml
name: Compliance Check
on: [push, pull_request]
jobs:
compliance:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Check File Organization
run: ./scripts/compliance/check_file_org.sh
- name: Check Test Coverage
run: |
pip install pytest pytest-cov
pytest --cov=src --cov-fail-under=80
- name: Check for Static Images
run: |
if find reports/ -name "*.png" | grep -q .; then
echo "Static images found in reports"
exit 1
fi
- name: Validate YAML Configs
run: ./scripts/compliance/validate_yaml.sh# Run weekly compliance scan
name: Weekly Compliance Scan
on:
schedule:
- cron: '0 9 * * 1' # Monday 9am
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Full Compliance Scan
run: ./scripts/compliance/full_scan.sh
- name: Upload Report
uses: actions/upload-artifact@v3
with:
name: compliance-report
path: reports/compliance_report.html# After pulling, verify compliance
./scripts/repository_sync pull all
./scripts/compliance/verify_compliance.sh