Install
$ agentstack add skill-davidalecrim1-chameleon-cover-letter ✓ 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
/cover-letter
Write a concise cover letter tailored to a job posting.
Usage
/cover-letter [--cv ] [--resume ]
Examples:
/cover-letter https://example.com/jobs/123 --cv david_alecrim_cv/cover-letter --resume templates/david_alecrim_semiotic_labs_rust_engineer_cv.yaml "Rust Engineer at Semiotic Labs..."
Workflow
Follow these steps exactly in order:
Step 1 — Obtain the job description
If the argument is a URL, fetch its content using WebFetch. If it is pasted text, use it directly.
Step 2 — Resolve the source resume
Use the strongest available resume source for the letter.
- If
--resumewas passed, use that exact YAML file. - If
--cvwas passed, usetemplates/_cv.yaml. If it does not exist, report the error and stop. - If the current thread already produced a tailored YAML for the same role, prefer that tailored YAML.
- In all other cases, list the candidate
*_cv.yamlfiles and ask the user which one to use. Never guess silently when multiple reasonable options exist.
Step 3 — Pull the writing inputs
From the job description, extract:
- employer name
- role title
- product or protocol names
- mission or problem-space signals
- the most important requirements and responsibilities
From the selected resume YAML, extract:
- the strongest matching summary points
- the most relevant experience bullets
- one or two concrete impact details or metrics
- any grounded product, mission, or domain fit
Step 4 — Write the cover letter
Use these rules:
- Default to exactly 2 paragraphs unless the user asks for a different length.
- Start with
Hey, - End with:
Regards,
David
- Write in the first person.
- Use simple, direct language.
- Keep it concise.
- Make it eye catching by leading with the strongest fit for the role, not with a stack list.
- Avoid generic throat-clearing openings like
I'm a strong fit for this roleorI believe I am a good match. Start with concrete experience, scope, or impact instead. - Use assertive framing when the resume supports it. Sell strongly without inventing.
- Ground every claim in the selected resume or the job description.
- Use the company name correctly. If the posting mentions a product or protocol, do not confuse it with the employer.
- Prefer one strong metric or impact detail over a long list of technologies.
- Mention mission, product, or domain motivation only when the job description and resume support it.
- Do not turn the letter into a resume summary or ATS keyword dump.
Human quality bar
The letter must feel human-written.
- Avoid inflated language, generic enthusiasm, and abstract filler.
- Avoid em dashes.
- Avoid phrases that sound like sales copy or AI copy.
- Prefer natural sentence rhythm over overly tidy structure.
- Use plain statements like
I built,I improved,I want, andI’d be excited to.
Paragraph guidance
For the default 2-paragraph format:
- Paragraph 1: why I fit this role, using the strongest relevant experience and one concrete result when possible.
- Paragraph 1 should open with concrete work context or impact, not a generic claim that I fit the role.
- Paragraph 2: why I want this company, product, or problem space, and what I would bring.
Step 5 — Humanize the draft
Run the draft through the humanizer skill before returning it.
- Keep the exact requested structure after the humanizer pass.
- If the user asked for
one paragraph, the final result must still be one paragraph. - If the user asked for
two paragraphs, the final result must still be two paragraphs. - Preserve the exact greeting and sign-off format after the humanizer pass.
- Keep the language simple, direct, and grounded in the resume and JD.
Step 6 — Report only the final letter
Return only the final cover letter text. Do not include analysis, notes, bullets, or alternative drafts unless the user explicitly asks for them.
Non-negotiable rules
- Never fabricate experience, metrics, skills, or motivation.
- Never confuse the company name with the product name.
- If the user asks for
one paragraph, write one paragraph. - If the user asks for
two paragraphs, write exactly two paragraphs. - If the user gives a greeting or sign-off format, preserve it exactly.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: davidalecrim1
- Source: davidalecrim1/chameleon
- 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.