agentleFS
eklavyagoyaleklavyagoyal/wingman/skills/evaluate/SKILL.md

evaluate

Skill0 starsChanged 2 months agoMITView on GitHub

Score one German job posting into a structured A-H report with a 1-5 fit score

25 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use outreach, compare and 6 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • QuixiAISkill

    outreach

    Decide whether a message is worth someone's attention, then reach the user through the outbox, or people on a connected chat channel, on their behalf or your own initiative

    Also in 4 projects that use this

  • n24q02mSkill

    compare

    Structured comparison of 2+ alternatives with consistent criteria and decision matrix

    Also in 3 projects that use this

  • dazuckSkill

    interview

    Interview me about a plan to flesh out requirements before implementation. Asks non-obvious questions one at a time until all ambiguities are resolved.

    Also in 3 projects that use this

  • Google CloudSkill

    triage

    Gather context on a change or bug and plan the implementation.

    Also in 4 projects that use this

  • BlockSkill

    plan

    Draft a TDD, PRD, or lightweight plan in the conversation without committing it.

    Also in 3 projects that use this

  • SentrySkill

    review

    Fixture review skill.

    Also in 4 projects that use this

The file

We split this skill into the rules it gives an agent

3 rules. 0 are common, 1 is distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 24 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If the page cannot be read, stop and ask the user to paste it.

    line 23
  2. Very specific:

    Run shared/references/language-decision.md and write language.md.

    line 31
  3. Very specific:

    Write blocks A–H per shared/references/evaluation.md:

    line 35

“Common” is measured: kept by at least 6 in 10 of the 24 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Evaluate

Scoring rules: shared/references/evaluation.md · Priority hierarchy: shared/references/priority-hierarchy.md

Turns one posting into a decision: apply, skip, or a question for the user. Replaces High/Medium/Low with a 1–5 score, because "Medium" does not tell anyone whether to spend an evening.

Step 0: Prerequisites

Per shared/references/prerequisites.md: CV and profile both required. Scoring a role against an unknown candidate produces a number that means nothing — if there is no profile, say so and run /wingman:setup interview instead.

Step 1: Get the posting

  • URL → node "${CLAUDE_PLUGIN_ROOT}/tools/posting.mjs" <url> first. It reads the JSON-LD that Personio and softgarden both publish, and it exits 3 rather than hand you a page that returned HTTP 200 with no job in it. Only if it exits 3 for "no structured data" do you fall back to a scoped selector per shared/references/web-extraction.md. Never get_page_text.
  • Pasted text → use it directly.
  • last → the most recently modified job folder.

If the page cannot be read, stop and ask the user to paste it. Never evaluate from a job title alone, and never fill gaps by guessing what an employer probably wants.

If the extractor reports the posting expired or closed, say so plainly and stop — that is a finished answer, not a setback. Offer to look for the role on the employer's current vacancies page. Any WARN it prints (a validThrough in the past, a posting open for many months) goes into Block G, where it is reported and left score-neutral.

Save to DATA_DIR/jobs/[company-slug]-[date]/posting.md, employer URL at the top.

Step 2: Language decision

Run shared/references/language-decision.md and write language.md. Do this before any document work, because it changes every downstream artifact. If language.md already exists, use it silently.

Step 3: Build the report

Write blocks A–H per shared/references/evaluation.md:

  • A Role — title exactly as advertised, employer type, contract, Tarif band, Kennziffer, location, remote policy
  • B Requirement match — one row per requirement, each marked quoted / inferred / gap. Never write a row you cannot source.
  • C Language — the decision and any level gap
  • D Work authorization — per work-authorization.md, and do not flag a permit holder as blocked by a "no sponsorship" line
  • E Compensation — Jahresbrutto including the 13th month, Urlaub, bAV/VWL, versus researched market rate. Name sources and the date.
  • F Employer signal — kununu rating and what reviews actually say, Betriebsrat, Zeitarbeit detection, Impressum, culture tells from the ad
  • G Legitimacy — ghost job, repost, scam. Score-neutral, reported separately.
  • H Strategy — only at 4.0+

Step 4: Score

One holistic 1–5 across requirement fit, level fit, compensation, feasibility, and employer quality. Apply the hard-blocker caps.

Do not inflate to be encouraging. A tool that scores everything 4+ is one the user stops trusting, and it costs them evenings. Do not deflate to look rigorous either.

Step 5: Present and gate

Save the full report to evaluation.md. Show a compact summary: score, two strongest matches, two real gaps, any blocker, recommended action.

Then gate on the score per shared/references/interaction.md:

ScoreAction
≥ 4.0Recommend applying. Offer /wingman:apply.
3.0–4.0Ask. Show the gaps and let the user decide — apply anyway, skip, or see the full report.
< 3.0Recommend skipping, and say which blocker. Do not talk them into it.

Append a row to tracker.md per shared/references/tracker.md. Set Board — where this posting came from (Arbeitsagentur, StepStone, Personio, LinkedIn, Interamt, Direkt, Netzwerk); if the user pasted a URL with no context, infer it from the host and say which you recorded. patterns cannot compute response rate by board from a blank column, and the row is only cheap to fill now.


Response Format

  1. Score — the number, with the one-line reason
  2. Strengths / Gaps — two each, sourced
  3. Blockers — language, authorization, dealbreakers, or none
  4. Legitimacy — only if something is off
  5. Recommendation — apply / ask / skip, with the next command

Permissions

{ "permissions": { "allow": [
  "Read(~/.wingman/**)", "Write(~/.wingman/**)", "Edit(~/.wingman/**)",
  "mcp__claude-in-chrome__*"
] } }

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.