← 返回 Skills 市场
occupythemilkyway

Anubis

作者 OccupyTheMilkyWay · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
42
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install anubis
功能描述
Anubis Standard -- Career Application Engine. Full resume rewrite + cover letter tailored to a specific job. ATS-optimised. Saved to files.
使用说明 (SKILL.md)

Anubis Standard -- Career Application Engine

Full resume rewrite tailored to a job description. ATS-optimised. Complete cover letter. All saved to files ready to submit.


Step 1 -- Install

pip3 install rich --break-system-packages --quiet

Step 2 -- Validate and load documents

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-STD-"):
    console.print(Panel(
        "[red bold]Anubis Standard requires a license key.[/red bold]\
\
"
        "Get your key at: [bold cyan]ko-fi.com/occupythemilkyway[/bold cyan]\
\
"
        "Or use the free version: [dim]openclaw skills install anubis-lite[/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", "").strip()
COVER_TONE  = os.environ.get("COVER_TONE", "professional").lower().strip()
OUTPUT_DIR  = os.environ.get("OUTPUT_DIR", "./anubis_output").strip()

if not JD:
    console.print(Panel("[red]JOB_DESCRIPTION is required.[/red]", title="Error", border_style="red"))
    sys.exit(1)
if not RESUME_PATH or not os.path.exists(RESUME_PATH):
    console.print(Panel(f"[red]RESUME_PATH not found: {RESUME_PATH}[/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()

# ATS keyword extraction
TECH_KW = ["python","javascript","typescript","react","node","sql","aws","azure","gcp","docker",
           "kubernetes","machine learning","ai","data","api","rest","agile","scrum","product",
           "management","leadership","analytics","excel","tableau","salesforce","java","go"]
SOFT_KW = ["communication","collaboration","problem-solving","leadership","analytical",
           "strategic","cross-functional","stakeholder","detail-oriented"]

jd_lower = JD.lower()
ats_tech = [k for k in TECH_KW if k in jd_lower]
ats_soft = [k for k in SOFT_KW if k in jd_lower]
exp_match = re.findall(r"(\d+)\+?\s*years?", JD, re.IGNORECASE)
exp_req   = exp_match[0] + "+ years" if exp_match else "Not specified"
role_line = JD.split("\
")[0].strip()[:80]

console.print()
console.print(Panel.fit(
    f"[bold magenta]🐺 Anubis Standard -- Career Application Engine[/bold magenta]\
"
    f"Role:   [cyan]{role_line}[/cyan]\
"
    f"Exp:    [white]{exp_req}[/white]\
"
    f"Tone:   [white]{COVER_TONE}[/white]\
"
    f"Output: [green]{OUTPUT_DIR}/[/green]",
    border_style="magenta"
))

tbl = Table(title="ATS Analysis", box=box.SIMPLE, border_style="magenta")
tbl.add_column("Category", style="dim", width=20)
tbl.add_column("Keywords", style="cyan")
tbl.add_row("Technical", ", ".join(ats_tech) or "None detected")
tbl.add_row("Soft skills", ", ".join(ats_soft) or "None detected")
console.print(tbl)

console.print(Rule("[magenta]Loading documents...[/magenta]"))
print(f"\
=== CURRENT RESUME ===\
{resume_text}\
=== END RESUME ===")
print(f"\
=== JOB DESCRIPTION ===\
{JD}\
=== END JD ===")

Step 3 -- Generate tailored application

Based on the resume and job description above, generate two complete documents:

Document 1: TAILORED_RESUME.md Rewrite the candidate's resume to be perfectly tailored for this job:

  • Reorder and rewrite ALL bullet points using action verbs from the JD
  • Add/emphasize every ATS keyword found in the JD that legitimately applies
  • Rewrite the summary/objective to match the role exactly
  • Restructure sections if needed for this role type
  • Preserve all true facts -- only reframe, never fabricate
  • Format cleanly in markdown

Document 2: COVER_LETTER.md Write a complete cover letter in the {COVER_TONE} tone:

  • Opening: specific hook referencing something about the company or role
  • Body paragraph 1: your strongest alignment with their top 2-3 requirements
  • Body paragraph 2: a specific achievement that proves you can do the job
  • Body paragraph 3: why THIS company specifically (research the company from JD clues)
  • Closing: confident call to action
  • Sign off with {YOUR_NAME} or "[Your Name]" if not provided

Both documents must be submission-ready. No placeholders unless genuinely unknown.


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")
resume_out  = os.path.join(OUTPUT_DIR, f"tailored_resume_{date_str}.md")
letter_out  = os.path.join(OUTPUT_DIR, f"cover_letter_{date_str}.md")

tbl = Table(title="Anubis -- Application Package Ready", box=box.SIMPLE, border_style="green")
tbl.add_column("File", style="cyan")
tbl.add_column("Description", style="dim")
tbl.add_row(resume_out, "ATS-optimised tailored resume")
tbl.add_row(letter_out, f"Cover letter ({COVER_TONE} tone)")
console.print()
console.print(tbl)
console.print(Panel(
    "[bold green]Application package complete.[/bold green]\
\
"
    "Upgrade to [magenta]Anubis Pro ($9)[/magenta] for interview Q&As, follow-up email templates, and application tracking.\
"
    "-> [cyan]ko-fi.com/occupythemilkyway[/cyan]",
    border_style="green"
))

Save both files to OUTPUT_DIR using your file writing tool, then display the confirmation.

安全使用建议
Install only if you are comfortable with the agent displaying your full resume and job description in the console and potentially using external research to personalize the cover letter. Avoid using this in shared terminals, logged sessions, synced output folders, or with resumes containing information you would not want exposed.
能力评估
Purpose & Capability
The core purpose is coherent: it rewrites a resume and cover letter from a user-provided resume and job description. However, it also prints the full resume and job description to the console and asks the agent to research the company from job-description clues, which expands handling of sensitive career data beyond a simple local rewrite workflow.
Instruction Scope
The instructions do not include clear user control or opt-in before echoing full personal documents in plaintext or before doing external company research for the cover letter.
Install Mechanism
The only dependency action is `pip3 install rich --break-system-packages --quiet`; this is not malicious, but it is a broad environment mutation for a display dependency and should be visible to users.
Credentials
Requiring a resume path, job description, and license key is consistent with the stated purpose, but plaintext console exposure of the resume and job description is not clearly disclosed in the manifest or summary.
Persistence & Privilege
The skill writes tailored resume and cover-letter files to `OUTPUT_DIR`, which is disclosed in the description and environment variable metadata. There is no background persistence or privilege escalation, though same-day filenames could overwrite prior outputs depending on execution behavior.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install anubis
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /anubis 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
- Initial release: Anubis Standard Career Application Engine. - Full resume rewrite tailored to a specific job description, with ATS keyword optimization. - Generates a submission-ready cover letter in a selectable tone, personalized to the job. - Outputs both documents (resume and cover letter) to a chosen directory. - License key required for usage; user guidance and rich CLI output provided. - Includes built-in ATS analysis and clear step-by-step instructions.
元数据
Slug anubis
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Anubis 是什么?

Anubis Standard -- Career Application Engine. Full resume rewrite + cover letter tailored to a specific job. ATS-optimised. Saved to files. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 42 次。

如何安装 Anubis?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install anubis」即可一键安装,无需额外配置。

Anubis 是免费的吗?

是的,Anubis 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Anubis 支持哪些平台?

Anubis 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Anubis?

由 OccupyTheMilkyWay(@occupythemilkyway)开发并维护,当前版本 v1.0.0。

💬 留言讨论