Serverless automated code analysis system that generates documentation and insights through GitHub pull requests.
Development follows Micromanaged Driven Development (MDD) with systematic unit breakdown:
- Units represent major development phases (architecture, implementation, deployment)
- Subunits capture discrete build moments within each unit
- Files follow naming convention:
<sequence>_<unitname>[_subunit<number|name>].md - Chronological tracking enables AI-assisted development with clear context
An automated code analysis pipeline triggered by GitHub webhooks. When code is committed, the system clones the repository, performs analysis using Strands, generates reports and metrics, then creates a pull request with the analysis results. This provides continuous code insights directly integrated into the development workflow.
Professional team metaphor with specialized services:
- Gatekeeper (API Gateway) - Webhook endpoint security and validation
- Receptionist (Lambda) - Webhook processing and repository cloning
- Telephonist (EventBridge) - Event routing and coordination
- Analyst (Lambda) - Code analysis using Strands
- Drawer (S3 Private) - Private document storage and retrieval
- Deliverer (Lambda) - Analysis results packaging and delivery
- Showroom (S3 Public) - Public documentation delivery via website
- Hermes (Lambda) - Event logging and status tracking bureaucrat
- Cabinet (S3 Public) - Public event logs and pipeline status
- GitHub Diplomat - Repository interaction layer
GitHub Repo
|
| Webhook
↓
Gatekeeper (API Gateway)
| Validate & Authenticate
↓
Drawer (S3 Private) ────── Receptionist (Lambda) ─────┐
- Cloned repositories | Clone Code │
- Analysis files ↓ │
- Temporary storage ─┐ Telephonist (EventBridge) ───┤
│ | Route: "Repo Ready" │
│ ↓ │
├─── Analyst (Lambda) │ Hermes (Lambda)
│ Analyze │ - Log events to Cabinet
│ ↓ │
│ Telephonist (EventBridge) ─────┤
│ Route: "Analysis Complete" │
│ ↓ │
└── Deliverer (Lambda) ──────────┤
| Package & Deliver │
↓ ↓
Showroom (S3 Public) Cabinet (S3 Public)
- Analysis documentation - Event logs & status
- Docsify website - Pipeline monitoring
- Direct download links
- AWS Lambda - Serverless compute for Receptionist, Analyst, Deliverer
- AWS EventBridge - Event routing and service coordination
- AWS S3 - Repository and analysis file storage
- GitHub API - Repository operations and PR creation
- Strands - Code analysis engine
- Python - Lambda runtime environments
Problem: Development on macOS ARM64 vs Production on AWS Lambda Linux x86_64
Development Environment:
- macOS ARM64 (Apple Silicon) with darwin_arm64 binaries (Mach-O format)
Production Environment:
- AWS Lambda Linux x86_64 runtime requiring manylinux2014_x86_64 binaries (ELF format)
Solution: Platform-targeted dependency installation for Lambda compatibility:
# ❌ Standard installation (uses local platform)
pip install strands-agents boto3
# ✅ Platform-targeted installation for Lambda
pip install \
--platform manylinux2014_x86_64 \
--only-binary=:all: \
--target python \
strands-agents>=0.1.0 \
strands-agents-tools>=0.1.0 \
boto3Key parameters:
--platform manylinux2014_x86_64: Force Linux x86_64 binaries--only-binary=:all:: Prevent source compilation--target python: Install to Lambda layer directory structure
This ensures ARM64 development machines install x86_64 binaries compatible with Lambda's runtime.
All AWS services and resources must be tagged with:
- Project:
coderipple
This applies to all components: Lambda functions, API Gateway, EventBridge rules, S3 buckets, IAM roles, etc.
All components must implement comprehensive task logging through EventBridge events:
Every component (Receptionist, Telephonist, Analyst, Deliverer, etc.) must publish EventBridge events to record:
-
Task Start Acknowledgment - When a component begins processing a task
- Event type:
task_started - Include: component name, task type, task ID, relevant context (repo info, etc.)
- Event type:
-
Task Completion - When a task finishes successfully
- Event type:
task_completed - Include: task ID, results summary, output locations
- Event type:
-
Task Failure - When a task fails for any reason
- Event type:
task_failed - Include: task ID, error details, failure context
- Event type:
This logging standard ensures complete observability across the pipeline, enabling debugging, monitoring, and audit trails for all system operations. Components should log both the start and end of every discrete task they perform, regardless of success or failure outcome.
100% - Core pipeline operational with real AI-powered analysis deployed via Lambda Layers, ready for final testing
- Architecture design and service definitions
- Event flow specification and professional team service mapping
- API Gateway webhook endpoint (Gatekeeper)
- EventBridge event routing system (Telephonist)
- Event logging and monitoring system (Hermes + Cabinet)
- Repository storage and processing (Receptionist + Drawer)
- Real AI-powered code analysis engine (Analyst with Strands Magic Mirror deployed via Lambda Layers)
- Public documentation delivery website (Showroom with shared assets)
- Analysis packaging and delivery system (Deliverer)
- User onboarding documentation and webhook instructions
- 000: Foundations - Architecture design, service definitions, and event flow specification
- 001: Gatekeeper Implementation - API Gateway REST API for GitHub webhook endpoint
- 002: Telephonist Implementation - EventBridge configuration for event routing and service coordination
- 003: Hermes Implementation - Event logging Lambda with Cabinet S3 bucket and Docsify integration
- 004: Repository Processing System - Drawer S3 storage with Receptionist webhook processing Lambda
- 005: Analyst Implementation - Code analysis engine with mock implementation and EventBridge integration
- Subunit 5.1: ✅ Analyst Foundation and EventBridge Integration
- Subunit 5.2: ✅ Mock Analysis Implementation
- Subunit 5.3: Analysis Results Storage and Event Publishing (integrated in 5.2)
- Subunit 5.4: Performance Optimization and Error Resilience (integrated in 5.2)
- Subunit 5.5: ✅ Real Strands Integration (Final Implementation - COMPLETED)
- Subunit 5.6: ✅ Testing and Validation (COMPLETED)
- Subunit 5.7: ✅ Lambda Layers Implementation for Strands Dependencies (COMPLETED)
- 006: Showroom Implementation - Public S3 bucket with Docsify website for analysis delivery
- Subunit 6.1: ✅ CodeRipple UI Content Enhancement
- Subunit 6.2: ✅ Shared Assets Architecture Implementation
- Subunit 6.3: Cabinet Bucket Shared Assets Integration (integrated)
- 007: Deliverer Implementation - Analysis packaging and Showroom delivery
- 008: System Tuning - User onboarding and documentation improvements
- Subunit 8.1: ✅ User Onboarding Documentation
- Subunit 8.2: ✅ URL Color Scheme Inversion (Fix Docsify CSS Specificity)
- Subunit 8.3: ✅ Table Empty Line Cleanup Fix
- Subunit 8.4: ✅ Sample Integration & Download URL Fixes
- 009: Documentation - Comprehensive README.md creation based on source code analysis
- 010: Integration Testing - End-to-end workflow validation and system optimization
- 011: Production Deployment - Final deployment and monitoring setup
1. GitHub webhook → Receptionist (push events only)
2. Clone full repository with git CLI (public repos only)
3. Checkout specific commit from webhook
4. Create clean working copy via git archive
5. Upload workingcopy + repohistory to Drawer S3 bucket
6. Publish "repo_ready" event to Telephonist
6. Telephonist notifies Analyst
7. Ask Librarian to retrieve repo from S3 to /tmp
8. Run Strands analysis on code
9. Generate analysis files (reports, metrics)
10. Ask Librarian to store generated files in S3
11. Tell Telephonist: "Analysis Complete"
12. Telephonist notifies Deliverer
13. Ask Librarian to retrieve generated files from S3
14. Package analysis files into structured ZIP archive
15. Upload to Showroom S3 bucket with public access
16. Generate direct download links for analysis results
17. Update Showroom website with new analysis entry
Context: Pivoted from GitHub Pull Request delivery to S3 bucket delivery for simplified serverless implementation.
Key Decision Points:
- Complexity Reduction: Eliminates GitHub API authentication, branch creation, PR management, and git operations on delivery side
- Architecture Benefits: Cleaner serverless flow, removes external API dependencies, eliminates GitHub rate limiting concerns
- User Experience: Direct download access, no GitHub permissions needed, works with any git hosting platform
- Technical Implementation: Public S3 bucket with structured paths
/{repo-owner}/{repo-name}/{commit-sha}/analysis-files
Flow Change:
- Before: Webhook → Analysis → GitHub PR with results
- After: Webhook → Analysis → Public S3 storage → Direct download links
Value Preservation: Maintains all core serverless architecture (Lambda orchestration, EventBridge routing, automated analysis) while simplifying delivery mechanism. Results in faster implementation, cleaner demo, and better scalability through S3's native download capabilities.
Strategic Rationale: Focus serverless complexity on AWS-native services rather than external API integration, allowing more time for core pipeline quality and analysis functionality.
Event 1: {type: "repo_ready", s3_location: "bucket/repo-123/"}
Event 2: {type: "analysis_complete", s3_files: ["report.md", "metrics.json"]}