name: anubis-pro
description: "Anubis Pro -- Full Career Application Suite. Tailored resume + 3-tone cover letter + 10 interview Q&As + follow-up emails + application tracker. The only career tool you need."
version: "1.0.0"
metadata:
openclaw:
requires:
env: [JOBDESCRIPTION, RESUMEPATH, LICENSE_KEY]
bins: [python3, pip3]
primaryEnv: JOB_DESCRIPTION
emoji: "🐺⚡"
homepage: https://clawhub.ai/occupythemilkyway/anubis-pro
tags: [resume, career, job, cover-letter, interview, follow-up, tracker, ats, pro, anubis]
envVars:
required: true
description: "Your Anubis Pro license key. Get one at: ko-fi.com/occupythemilkyway"
required: true
description: "The full job description text"
required: true
description: "Path to your current resume file (.txt or .md)"
required: false
description: "Your full name"
default: ""
required: false
description: "Company name (auto-detected from JD if blank)"
default: ""
required: false
description: "Output folder (default: ./anubisprooutput)"
default: "./anubisprooutput"
Anubis Pro -- Full Career Application Suite
The complete application package. Tailored resume, 3 cover letter tones, 10 role-specific interview Q&As, 3 follow-up email templates, and an application tracker log.
Bundle deal: All 5 Egyptian skills for $29 -> ko-fi.com/s/7625accf3f (save $16)
Step 1 -- Install
pip3 install rich --break-system-packages --quiet
Step 2 -- Validate and load
import os, sys, re
from datetime import datetime
from rich.console import Console
from rich.panel import Panel
from rich.table import Table
from rich.rule import Rule
from rich import box
console = Console()
LICENSE_KEY = os.environ.get("LICENSE_KEY", "").strip()
if not LICENSE_KEY or not LICENSE_KEY.startswith("ANUBIS-PRO-"):
console.print(Panel(
"[red bold]Anubis Pro requires a license key.[/red bold]\n\n"
"Get your key at: [bold cyan]ko-fi.com/occupythemilkyway[/bold cyan]\n\n"
"Or try Anubis Standard ($5): [dim]openclaw skills install anubis[/dim]",
title="License Required",
border_style="red"
))
sys.exit(1)
JD = os.environ.get("JOB_DESCRIPTION", "").strip()
RESUME_PATH = os.environ.get("RESUME_PATH", "").strip()
YOUR_NAME = os.environ.get("YOUR_NAME", "[Your Name]").strip() or "[Your Name]"
COMPANY_NAME = os.environ.get("COMPANY_NAME", "").strip()
OUTPUT_DIR = os.environ.get("OUTPUT_DIR", "./anubis_pro_output").strip()
if not JD or not RESUME_PATH or not os.path.exists(RESUME_PATH):
console.print(Panel("[red]JOB_DESCRIPTION and valid RESUME_PATH are required.[/red]", title="Error", border_style="red"))
sys.exit(1)
os.makedirs(OUTPUT_DIR, exist_ok=True)
with open(RESUME_PATH, encoding="utf-8", errors="replace") as fh:
resume_text = fh.read()
# Auto-detect company
if not COMPANY_NAME:
m = re.search(r"(?:at|@|join)\s+([A-Z][a-zA-Z\s&]+?)(?:\s+is|\s+are|\s+we|\.|,)", JD)
COMPANY_NAME = m.group(1).strip() if m else "the company"
role_line = JD.split("\n")[0].strip()[:80]
console.print()
console.print(Panel.fit(
f"[bold magenta]🐺 Anubis Pro -- Full Career Suite[/bold magenta]\n"
f"Role: [cyan]{role_line}[/cyan]\n"
f"Company: [white]{COMPANY_NAME}[/white]\n"
f"Name: [white]{YOUR_NAME}[/white]\n"
f"Output: [green]{OUTPUT_DIR}/[/green]",
border_style="magenta"
))
console.print(Rule("[magenta]Generating full application package...[/magenta]"))
print(f"\n=== RESUME ===\n{resume_text}\n=== END RESUME ===")
print(f"\n=== JOB DESCRIPTION ===\n{JD}\n=== END JD ===")
Step 3 -- Generate the full application suite
Generate FIVE documents:
1. TAILORED_RESUME.md -- Full resume rewrite, ATS-optimised, achievement-focused bullets mirroring JD language
2. COVERLETTERPROFESSIONAL.md -- Formal, structured cover letter
3. COVERLETTERCONVERSATIONAL.md -- Warm, personality-forward version
4. COVERLETTEREXECUTIVE.md -- High-level, strategic, results-only version
5. INTERVIEW_PREP.md -- 10 role-specific interview questions with ideal answer frameworks:
- 3 behavioral (STAR format): based on the JD's key competencies
- 3 technical: based on the actual skills listed in the JD
- 2 situational: "What would you do if..." based on the role's challenges
- 2 questions FOR the interviewer: sharp questions that show deep interest
Each answer should include: the framework, 2-3 bullet points of what to cover, and a one-sentence power close.
6. FOLLOWUPEMAILS.md -- 3 follow-up email templates:
- 24-hour thank you email (post-interview)
- 1-week follow-up (if no response)
- 2-week final follow-up (polite close-loop)
7. APPLICATION_LOG.md -- Application tracker entry:
| Date | Company | Role | Status | Next Action | Deadline |
|------|---------|------|--------|-------------|----------|
| [TODAY] | [COMPANY] | [ROLE] | Applied | Follow up | +7 days |
Step 4 -- Save and confirm
import os
from datetime import datetime
from rich.console import Console
from rich.panel import Panel
from rich.table import Table
from rich import box
console = Console()
date_str = datetime.now().strftime("%Y%m%d")
outputs = [
(os.path.join(OUTPUT_DIR, f"tailored_resume_{date_str}.md"), "ATS-optimised resume"),
(os.path.join(OUTPUT_DIR, f"cover_letter_professional_{date_str}.md"), "Cover letter (professional)"),
(os.path.join(OUTPUT_DIR, f"cover_letter_conversational_{date_str}.md"), "Cover letter (conversational)"),
(os.path.join(OUTPUT_DIR, f"cover_letter_executive_{date_str}.md"), "Cover letter (executive)"),
(os.path.join(OUTPUT_DIR, f"interview_prep_{date_str}.md"), "10 interview Q&As"),
(os.path.join(OUTPUT_DIR, f"follow_up_emails_{date_str}.md"), "3 follow-up templates"),
(os.path.join(OUTPUT_DIR, f"application_log_{date_str}.md"), "Application tracker"),
]
tbl = Table(title="Anubis Pro -- Full Package Ready", box=box.SIMPLE, border_style="green")
tbl.add_column("File", style="cyan")
tbl.add_column("Contents", style="dim")
for path, desc in outputs:
tbl.add_row(path, desc)
console.print()
console.print(tbl)
console.print(Panel(
f"[bold green]Full career package generated.[/bold green]\n"
f"[yellow]{len(outputs)} documents[/yellow] saved to [cyan]{OUTPUT_DIR}[/cyan]",
border_style="green"
))
Save all 7 documents to OUTPUT_DIR using your file writing tool.