Add CDL onboarding Slack bot (#181)#183
Merged
jeremymanning merged 9 commits intomasterfrom Mar 12, 2026
Merged
Conversation
Implements automated onboarding/offboarding workflows: Services: - GitHubService: Org invitations, team management, username validation - CalendarService: Google Calendar sharing with configurable permissions - ImageService: Hand-drawn green border processing for profile photos - BioService: Claude API integration for bio editing to CDL style Handlers: - /cdl-onboard command with interactive forms - Admin approval workflow with team selection - /cdl-offboard command (generates checklist, doesn't auto-remove) Tests: - Model tests (13 passing) - Image service tests (19 passing) - GitHub service tests (requires API token) - Bio service tests (requires Anthropic key) See issue #181 for full implementation plan. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Documents setup process, usage, and architecture. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Fix UTF-8 encoding in test_bio_service.py special chars test - Fix test_github_service.py to access org property for validation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
slack-bolt doesn't have view_regex method, use app.view() with re.compile() instead. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
The file had embedded binary control characters that made it display incorrectly. Rewrote with clean UTF-8 text. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add workflow_listener.py to listen for "Join the lab!" workflow output messages sent to admin, parse form data, and create interactive approval forms - Add workflow_step.py with optional custom workflow steps for advanced integration - Update approval.py with workflow-specific approval/reject/request-changes handlers - Add workflow link to lab_manual.tex so new members can click to start onboarding - Update README with Workflow Builder integration documentation The bot now supports two onboarding methods: 1. Member-initiated via "Join the lab!" workflow (recommended) 2. Admin-initiated via /cdl-onboard @user command 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Website Integration: - Add WebsiteService for GitHub API operations on contextlab.github.io - Create/update PRs for people.xlsx, photos, and CV entries - Support all role types (Grad, Undergrad, Postdoc, Lab Manager, etc.) - Add website approval handlers with preview/edit modals Idempotency Fixes: - Check for existing members in people.xlsx before adding - Check for existing CV entries before inserting - Check alumni sheets before adding departing members State Persistence: - Add storage.py for JSON-based request persistence - Requests now survive bot restarts Startup Queue: - Scan admin DM history on startup for missed submissions - Track processed message timestamps - Add "Reprocess Now" and "Dismiss" buttons for missed items Documentation: - Add "Onboarding and offboarding" section to lab_manual.tex 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add 5 new lab members (Theo Larson, Jason Kang, Sam Haskel, Mak Kelly, Hye-Sung Kim) - Replace youcanbook.me with context-lab.com/scheduler - Make weekly snippets optional (remove paid employee requirement) - Remove LaTeX training task and self-add-to-manual instructions - Add HTML checklist/signature page option alongside PDF - Add cdl-slides to poster making tools - Add 3 new IRB protocols (Decision Making, Self-Concept, CalmNight) - Update CLAUDE.md with onboarding bot documentation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Dynamic form: conditionally show grad program fields based on role selection using Slack views.update (hide when not relevant) - Fix slash command user parsing: handle raw @username text from Slack (not just <@U...> format) by looking up users by name - Add openpyxl to requirements (missing dependency for website service) - Add local running instructions to README Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Member
Author
Updated PR SummaryOnboarding Bot
Lab Manual Changes
Testing
|
Member
Author
|
Addresses issue #183 ! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements a Slack bot for automating the CDL lab member onboarding and offboarding process.
Features
Onboarding (
/cdl-onboard @user)Offboarding (
/cdl-offboard)Implementation Details
Files Added
Test plan
/cdl-pingcommandCloses #181
🤖 Generated with Claude Code