skills/beam/beam-tools/beam-feedback-automation/SKILL.md
Universal feedback collection automation for ANY Beam agent. Load when user mentions 'feedback automation', 'create feedback sheet', 'agent feedback', 'evaluation sheet', 'feedback for [agent-name]', or provides a Beam agent ID/URL. Dynamically analyzes agents via API, generates smart feedback fields, creates Google Apps Script, deploys to Sheets, and manages complete feedback workflow.
npx skillsauth add beam-ai-team/beam-next-skills beam-feedback-automationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Universal feedback collection system for ANY Beam agent.
Automate the complete feedback collection workflow you manually created for TA Interview Agent - but make it work for ANY Beam agent by dynamically analyzing the agent structure via API.
What it automates:
User can provide:
agent_xyz789https://beam.ai/agent/xyz7891. Analyze Agent (via Beam API)
↓
2. Generate Feedback Fields (smart logic based on outputs)
↓
3. Create Apps Script Template (customized)
↓
4. Deploy to Google Sheets
↓
5. Fetch Tasks & Pre-fill Sheets
↓
6. Send Email Requests
↓
7. Monitor & Aggregate Results
Trigger: User provides agent ID/URL or name
Steps:
python scripts/analyze_agent.py --agent-id <agent_id>
analysis/<agent_id>_schema.jsonAgent: TA Interview Agent
Inputs: 3 fields (candidate_email, job_title, resume_url)
Outputs: 5 fields (overall_score, technical_skills[], soft_skills[], strengths, weaknesses)
Ready to generate feedback fields!
API Endpoint: GET https://api.beam.ai/v1/agent/{agent_id}
Trigger: After successful agent analysis
Steps:
Run smart field generator:
python scripts/generate_feedback_fields.py --schema analysis/<agent_id>_schema.json
Logic applies these rules:
For NUMBER outputs (e.g., overall_score):
{field_name} Accuracy (rating 1-5){field_name} Comments (text feedback)For ARRAY outputs (e.g., technical_skills[]):
{field_name} Extraction Accuracy (rating 1-5)Missing {field_name} (checkbox list)Incorrect {field_name} (checkbox list)For TEXT outputs (e.g., strengths):
{field_name} Quality (rating 1-5){field_name} Accuracy (Yes/No/Partial){field_name} Comments (text feedback)For BOOLEAN outputs:
{field_name} Correct? (Yes/No)Save to analysis/<agent_id>_feedback_fields.json
Display preview:
Generated 12 feedback fields:
✓ Overall Score Accuracy (Rating 1-5)
✓ Overall Score Comments (Text)
✓ Technical Skills Extraction Accuracy (Rating 1-5)
✓ Missing Technical Skills (Checkbox)
✓ Incorrect Technical Skills (Checkbox)
...
Approve? (y/n)
Allow user to customize/approve before proceeding
Trigger: After feedback fields approved
Steps:
Run Apps Script generator:
python scripts/generate_apps_script.py \
--agent-id <agent_id> \
--fields analysis/<agent_id>_feedback_fields.json \
--output scripts/<agent_id>_apps_script.js
Generator creates customized Apps Script with:
onOpen() trigger → Custom menuprefillAgentData() → Fetch from Beam APIsendFeedbackEmail() → Email templateaggregateResults() → Collect all feedbackhighlightIncomplete() → Visual indicatorsDisplay script preview and save to scripts/<agent_id>_apps_script.js
Template Base: templates/apps_script_template.js
Trigger: After Apps Script generated
Steps:
python scripts/deploy_to_sheets.py \
--agent-id <agent_id> \
--template-id <google_sheets_template_id> \
--script scripts/<agent_id>_apps_script.js
✅ Sheet deployed successfully!
Sheet: https://docs.google.com/spreadsheets/d/abc123
Ready to create feedback requests!
Trigger: "Create feedback sheets for [N] tasks" or "Create sheets for task IDs [...]"
Steps:
python scripts/create_feedback_sheets.py \
--agent-id <agent_id> \
--sheet-id <sheet_id> \
--task-count 50 \
# OR
--task-ids task_abc,task_def,task_ghi
Creating feedback sheets...
✓ Task task_abc123 → Row 2
✓ Task task_def456 → Row 3
✓ Task task_ghi789 → Row 4
...
Created 50 feedback requests!
Beam API Endpoint: GET https://api.beam.ai/v1/task?agent_id={agent_id}&limit=50&status=completed
Trigger: "Send feedback requests" (after sheets created)
Steps:
python scripts/send_emails.py \
--sheet-id <sheet_id> \
--reviewer-email [email protected] \
--template templates/email_template.html
Sending feedback requests...
✓ Task task_abc123 → [email protected]
✓ Task task_def456 → [email protected]
...
Sent 50 email requests!
Email Template: templates/email_template.html
Trigger: "Aggregate feedback results" or "Show feedback summary"
Steps:
Run results aggregator:
python scripts/aggregate_results.py \
--sheet-id <sheet_id> \
--output reports/<agent_id>_feedback_report.json
Script performs:
Display summary:
📊 Feedback Results Summary
Responses: 47/50 (94% completion)
Average Scores:
- Overall Score Accuracy: 4.2/5
- Technical Skills Extraction: 3.8/5 ⚠️
- Soft Skills Extraction: 4.5/5
Top Issues:
- Missing Technical Skills: "Python" (12 occurrences)
- Incorrect assessment of leadership (8 occurrences)
💡 Suggested Improvements:
1. Enhance technical skills extraction prompt
2. Add leadership evaluation criteria
Save detailed report to reports/<agent_id>_feedback_report.json
$ beam-feedback-automation agent_xyz789 --tasks 50
This runs the complete workflow:
Analyze Agent:
$ beam-feedback-automation analyze --agent-id agent_xyz789
$ beam-feedback-automation analyze --url https://beam.ai/agent/xyz789
$ beam-feedback-automation analyze --name "TA Interview Agent"
Generate Feedback Fields:
$ beam-feedback-automation generate-fields --agent-id agent_xyz789
Deploy to Sheets:
$ beam-feedback-automation deploy --agent-id agent_xyz789
Create Feedback Sheets:
$ beam-feedback-automation create-sheets --agent-id agent_xyz789 --tasks 50
$ beam-feedback-automation create-sheets --agent-id agent_xyz789 --task-ids task_a,task_b,task_c
Send Emails:
$ beam-feedback-automation send-emails --sheet-id abc123 --reviewer [email protected]
Aggregate Results:
$ beam-feedback-automation aggregate --sheet-id abc123
Required Environment Variables:
BEAM_API_KEY=your_beam_api_key
GOOGLE_SHEETS_CREDENTIALS=path/to/credentials.json
Optional Settings (config.yaml):
default_reviewer_email: "[email protected]"
email_template: "templates/custom_email.html"
sheets_template_id: "1abc123_template_id"
batch_size: 50
auto_send_emails: true
beam-feedback-automation/
├── SKILL.md # This file
├── config.yaml # Configuration
├── scripts/
│ ├── analyze_agent.py # Fetch & parse agent graph
│ ├── generate_feedback_fields.py # Smart field generation logic
│ ├── generate_apps_script.py # Apps Script generator
│ ├── deploy_to_sheets.py # Google Sheets deployment
│ ├── create_feedback_sheets.py # Batch sheet creator
│ ├── send_emails.py # Email distribution
│ └── aggregate_results.py # Results analysis
├── templates/
│ ├── apps_script_template.js # Base Apps Script
│ └── email_template.html # Email template
├── analysis/ # Generated agent schemas
│ ├── agent_xyz_schema.json
│ └── agent_xyz_feedback_fields.json
├── reports/ # Feedback reports
│ └── agent_xyz_feedback_report.json
└── examples/
└── usage.md # Usage examples
$ beam-feedback-automation agent_ta_interview --tasks 50
✅ Analyzed agent: TA Interview Agent
✅ Generated 12 feedback fields
✅ Created Apps Script
✅ Deployed to Google Sheets
✅ Created 50 feedback requests
✅ Sent 50 emails to [email protected]
📊 View results: https://docs.google.com/spreadsheets/d/abc123
$ beam-feedback-automation analyze --name "Email Classifier"
$ beam-feedback-automation generate-fields --agent-id agent_email_classifier
$ beam-feedback-automation deploy --agent-id agent_email_classifier
$ beam-feedback-automation create-sheets --agent-id agent_email_classifier --task-ids task_1,task_2,task_3
$ beam-feedback-automation send-emails --sheet-id xyz789 --reviewer [email protected]
$ beam-feedback-automation aggregate --sheet-id abc123
📊 Feedback Results Summary
Responses: 48/50 (96% completion)
Average Accuracy: 4.3/5
Top Issue: Missing email categories (15 occurrences)
💡 Suggested Improvements:
1. Expand category taxonomy
2. Add confidence scores to classifications
| Agent Output Type | Generated Feedback Fields |
|-------------------|---------------------------|
| number (score) | Accuracy (rating 1-5), Comments (text) |
| array (list) | Extraction Accuracy (rating 1-5), Missing Items (checkbox), Incorrect Items (checkbox) |
| text (long) | Quality (rating 1-5), Accuracy (Yes/No/Partial), Comments (text) |
| boolean | Correct? (Yes/No) |
| object (structured) | Per-field breakdown (recursive logic) |
Agent Output:
{
"overall_score": 85,
"technical_skills": ["Python", "SQL", "React"],
"strengths": "Strong problem-solving abilities...",
"hire_recommendation": true
}
Generated Feedback Fields:
[
{"name": "Overall Score Accuracy", "type": "rating", "scale": 5},
{"name": "Overall Score Comments", "type": "text"},
{"name": "Technical Skills Extraction Accuracy", "type": "rating", "scale": 5},
{"name": "Missing Technical Skills", "type": "checkbox_list"},
{"name": "Incorrect Technical Skills", "type": "checkbox_list"},
{"name": "Strengths Quality", "type": "rating", "scale": 5},
{"name": "Strengths Accuracy", "type": "select", "options": ["Yes", "No", "Partial"]},
{"name": "Strengths Comments", "type": "text"},
{"name": "Hire Recommendation Correct?", "type": "select", "options": ["Yes", "No"]}
]
GET /v1/agent/{agent_id} - Fetch agent graphGET /v1/task?agent_id={id}&limit=N - Fetch tasks for feedback| Error | Solution |
|-------|----------|
| Agent not found | Verify agent ID or search by name |
| No completed tasks | Wait for tasks or use different agent |
| Google Sheets auth failed | Re-authenticate with gcloud auth |
| Email sending failed | Check SMTP credentials or use Gmail API |
| Invalid output schema | Manually define feedback fields |
Phase 2:
Phase 3:
Version: 1.0 Created: 2025-02-02 Author: AI Agent Engineer at Beam AI
This skill automates everything you manually did for TA Interview Agent feedback - but works for ANY agent!
testing
Audit registry.yaml against disk, validate SKILL.md frontmatter, find duplicates and orphans. Load when user says 'audit skills registry', 'validate beam-next-skills', 'registry drift', 'skills catalog audit', 'check registry yaml'.
tools
All Workable ATS operations — fetch JDs, search candidates, post assessments/reviews. Load when user says "fetch JD", "search workable", "push to workable", "post review", "rate candidate", "workable", "push assessment", "list jobs", or after interview-coach completes an evaluation. Replaces workable-fetch-jd and workable-push-assessment.
data-ai
Load when user mentions "tavily research", "market intelligence", "competitive research", "GTM research", or needs real-time market data for sales, marketing, or vertical strategy.
development
Shared resource library for Slack integration skills. DO NOT load directly - provides common references (setup, API docs, error handling, authentication) and scripts used by slack-connect and individual Slack skills.