Install
$ agentstack add skill-kirkruglov-claude-project-manager-send-email ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Skill: send-email
Internal service skill for sending project emails via Gmail MCP. Called exclusively by other agent skills — not directly by the user. Receives a rendered email from the calling skill, applies autonomy level rules, converts attachments if needed, and delivers via Gmail or saves a fallback draft.
Activation Context
This skill is activated when another agent skill instructs Claude to send an email. The calling skill provides all content; send-email handles delivery, autonomy logic, and fallback.
Calling skills: generate-questionnaire, generate-approval-letter, monitor-progress, coordinate-meeting, coordinate-executors.
Language Detection
Determine language from project-state.md field language. If absent: scan project artifacts for Cyrillic → RU. Default: EN.
Input
Parameters passed by the calling skill:
| Parameter | Required | Description | |-----------|:--------:|-------------| | email_type | yes | E1–E8 (email type from artifacts registry) | | to | yes | Recipient email(s) | | subject | yes | Email subject (already filled by caller) | | body_md | yes | Email body in Markdown (already rendered by caller) | | autonomy_level | yes | 1 / 2 / 3 | | attachments | no | File paths (.md, .xlsx) | | convert_to_docx | no | Convert .md attachments to .docx. Default: false | | cc_pm | no | PM email for Level 2 (if absent — read from project-state.md) |
Output
| Result | Path | Condition | |--------|------|-----------| | Email sent via Gmail | — (external) | Level 1/2, Gmail available; Level 3 confirmed | | drafts/email-draft-{type}-{YYYY-MM-DD}.md | drafts/ | Level 3 pending; Gmail unavailable | | Log entry in logs/log.md | logs/ | Always |
Instructions
Step 1 — Guard-rail
If called directly by a user (not as part of a skill chain): Detection: input is natural language without structured parameters — at least one of email_type, to, subject, body_md, autonomy_level is absent. Respond: "send-email is an internal service skill activated automatically during email delivery. To send a project email, trigger the relevant skill (e.g., coordinate-executors for reminders, generate-approval-letter for approvals)."
Caller contract (for calling skills): body_md MUST be fully rendered Markdown text — not a file path, template variable, or reference. The calling skill is responsible for loading its own template from templates/, populating all placeholders, and passing the result as a string. send-email has no templates/ folder of its own.
Step 2 — Validate Parameters
- Check required fields:
email_type,to,subject,body_md,autonomy_level.
- If any field is missing → ask PM for the missing data.
- If
email_typeis unknown or outside E1–E8 → default to autonomy level 3. - Read
project-state.md: getpm_email,project_name,language.
Step 3 — Convert Attachments
If attachments is set AND convert_to_docx = true:
- Level 1/2: convert here, before sending.
- Level 3: defer conversion until PM confirms — perform at the start of Step 5.
For each file (when converting):
.mdfiles → convert via Cowork docx skill → produce.docx(same filename)..xlsxfiles → use as-is.- Other formats → attach as-is, warn PM in chat.
- On conversion error → log error, attach original
.md, notify PM.
Step 4 — Apply Autonomy Level
| Level | Email Types | Action | |-------|------------|--------| | 1 — auto | E6, E7 | Send immediately, no preview | | 2 — CC PM | E4, E5 | Add PM to CC, send immediately | | 3 — confirm | E1, E2, E3, E8 | Show draft, wait for PM approval |
Level 3 flow:
- Save draft to
drafts/email-draft-{email_type}-{YYYY-MM-DD}.md. - Display in chat:
``` Draft ready ({email_type}): — To: {to} — Subject: {subject} — Attachments: {list or "none"} [body preview: first 5 lines or full if 10 recipients) requires explicit PM confirmation regardless of level
- Level 3 draft awaits confirmation within the current session; if session closes, draft remains in
drafts/ - Direct user invocation is not supported
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: KirKruglov
- Source: KirKruglov/claude-project-manager
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.