skilldrop-cli 0.16.20 → 0.16.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,9 +20,9 @@
20
20
  "claude-code": {
21
21
  "label": "Claude Code (Anthropic)",
22
22
  "models": {
23
- "light": "claude-haiku-4-5-20251001",
23
+ "light": "claude-haiku-5-5",
24
24
  "standard": "claude-sonnet-5",
25
- "heavy": "claude-opus-5"
25
+ "heavy": "claude-opus-5-5"
26
26
  },
27
27
  "select_via": "`/model <model-id>` in the session, or hand the skill to the model-router agent for automatic dispatch.",
28
28
  "automation": ".claude/agents/model-router.md"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skilldrop-cli",
3
- "version": "0.16.20",
3
+ "version": "0.16.21",
4
4
  "description": "Portable AI-agent skills, measured against the agent without them. ADRs, PRDs, runbooks, decks and reviews, installable into Claude Code, Cursor, Kiro, and any IDE that takes custom instructions. One command per skill or per role-based pack.",
5
5
  "author": {
6
6
  "name": "Sanjay Ananthanarayan",
@@ -19,7 +19,8 @@ Two things follow from the rule:
19
19
  registration, a degree the posting says is required, a minimum number of years, the right
20
20
  to work in a country, a location or shift, a clearance, a language. One of those unmet
21
21
  outweighs everything else that fits, so the role goes under **Skip** with that requirement
22
- named, however good the rest looks.
22
+ named, however good the rest looks. Only the posting decides what is required: an item it
23
+ calls preferred, desirable, a plus or nice to have never takes a role out.
23
24
  - **One role is one role.** The same job posted in three cities, or reposted with a new
24
25
  reference number, is one entry with its locations listed. A posting marked closed, or past
25
26
  its closing date, is noted and not ranked.
@@ -37,9 +38,12 @@ Two things follow from the rule:
37
38
  the kind of role they want.
38
39
 
39
40
  3. **Check each posting for what could screen them out first.** For every role, find the
40
- requirements an employer checks before reading the rest, and mark whether the person's
41
- material meets them. Any unmet one sends the role to **Skip**, named in a few words:
42
- "requires HCPC registration".
41
+ requirements the posting makes a condition: what it calls required, essential or a must,
42
+ and the facts of the job itself (where it is, the hours or shift, a licence the work needs).
43
+ Mark whether the person's material meets them. Any unmet one sends the role to **Skip**,
44
+ named in a few words: "requires HCPC registration". An item the posting calls preferred,
45
+ desirable or a plus is not one of these, even a degree or a licence; it is a gap to weigh in
46
+ step 4, and the role stays in.
43
47
 
44
48
  4. **Rank the rest from the posting's own requirements.** For each remaining role, compare
45
49
  the required and preferred items with the person's evidence, and say in one line why it
@@ -48,7 +52,9 @@ Two things follow from the rule:
48
52
  requires is met only if the person's material names it.
49
53
 
50
54
  5. **Give the shortlist, answer first.** Open with the two or three roles worth applying for
51
- and why, in a sentence or two. Then:
55
+ and why, in a sentence or two. Then the roles under these groups, using only the groups that
56
+ have a role in them. A heading with nothing under it, or with "none", is not shown: when every
57
+ posting was read and none is closed, there is no Not read or Closed group.
52
58
  - **Apply**: roles where nothing screening is unmet and most of what's required is met.
53
59
  - **Maybe**: roles worth applying for if one named question has the right answer ("if your
54
60
  forklift licence is current").
@@ -63,24 +69,27 @@ Two things follow from the rule:
63
69
  the one or two questions whose answers would move a role between groups, and which unread
64
70
  postings to fetch.
65
71
 
66
- 7. **Fit the size and format they asked for.** "Just the top three" gets three, with one line
67
- saying how many others were reviewed. A list for a spreadsheet gets one row per role. The
68
- whole answer is in the reply unless they ask for a file.
72
+ 7. **Fit the size and format they asked for.** "Just the top two" gets two, each with its
73
+ reason and anything to check first, then the rest in a line or two: which were ruled out and
74
+ by what, and any that couldn't be read. No groups and no headings; the person asked for two
75
+ names, not a sorted list. A list for a spreadsheet gets one row per role. The whole answer
76
+ is in the reply unless they ask for a file.
69
77
 
70
78
  8. **Deliver from what you have.** With postings and a few lines about the person, shortlist
71
- against those and say a resume would settle the rest. With a resume and no postings, ask
72
- for the postings in one line.
79
+ against those and say a resume would settle the rest. When each role is only a line or two,
80
+ say the picks rest on those lines and the full postings come next. With a resume and no
81
+ postings, ask for the postings in one line.
73
82
 
74
83
  ## Quality bar
75
84
 
76
85
  - **No role is ranked without its posting text having been read.** Unread roles are listed as
77
86
  unread, with no verdict.
78
87
  - **A role with an unmet screening requirement is never under Apply,** and the requirement is
79
- named.
88
+ named. An item the posting calls preferred is never treated as one.
80
89
  - **Every role given appears exactly once;** duplicates are merged, closed ones are noted.
81
90
  - **Every "fits" rests on the person's own material,** and a similar thing is not counted as
82
91
  the named one.
83
- - **The answer opens the reply,** and the size is the one asked for.
92
+ - **The answer opens the reply,** and the size is the one asked for, with no empty groups.
84
93
 
85
94
  ## When to use this skill
86
95
 
@@ -99,6 +108,8 @@ Two things follow from the rule:
99
108
  - ❌ **Ranking from titles.** "Operations Lead sounds like a good fit" with the posting unread.
100
109
  - ❌ **Guessing an unread posting** from what the employer or the job title usually means.
101
110
  - ❌ **A strong fit over an unmet licence.** Screening requirements decide first.
111
+ - ❌ **A preferred item as a requirement.** "Degree preferred" is a gap to weigh, not a reason to skip.
112
+ - ❌ **Empty groups.** A "Not read: none" heading, or the full five groups for a top-two answer.
102
113
  - ❌ **Counting a duplicate twice,** or ranking a closed posting.
103
114
  - ❌ **Dropping roles silently.** A list that covers 9 of 12 postings without saying so.
104
115
  - ❌ **Crediting the usual.** "As a nurse you'll have used Epic" is an invention.
@@ -70,6 +70,36 @@
70
70
  "It points out that the Lantern Room wants someone to start as soon as possible while the person can't start until after 15 November, as something to raise or weigh, rather than treating the start date as fine",
71
71
  "It does not credit the person with anything they didn't say, such as a car or driving licence, a level 3 food safety certificate, supervisory or chef de partie experience, or more than three years in kitchens, and it does not claim to know what the Brindle Café posting says"
72
72
  ]
73
+ },
74
+ {
75
+ "id": 6,
76
+ "held_out": "2026-10-18",
77
+ "prompt": "which 2 of these should i go for? bit about me: 3 yrs as a nursery assistant at a day nursery, level 3 childcare diploma, enhanced DBS. i dont drive. want term time / school hours, no weekends, 30ish hrs a week or more. based in Harwick.\n\n- Teaching Assistant, Elmfield Primary, Harwick - Year 2 reading and small groups, term time 8:30-3:30. Level 3 childcare or TA qualification required. Phonics experience a plus.\n- SEN Teaching Assistant, Brookside Academy, Harwick - 1:1 support for a Reception pupil with autism, term time 8:45-3:15. Must have experience in an early years or school setting. Makaton desirable.\n- Nursery Practitioner, Little Acorns, Harwick - full time, 7:30-6 shifts, working alternate Saturdays is a requirement. Level 3 required.\n- Forest School Assistant, Greenway Primary - outdoor learning across 3 sites, term time. Full driving licence and own vehicle essential.\n- Midday Supervisor, Harwick Junior School - 11:45-1:15 term time, lunchtime play and dinner hall. No experience needed.\n- Teaching Assistant, Ashby Lane Primary, Harwick - Year 4 maths and reading groups, term time 8:30-3:30, permanent. Previous TA experience in KS2 essential.",
78
+ "assertions": [
79
+ "Exactly two roles are given as picks, and they are the Elmfield Primary Teaching Assistant and the Brookside Academy SEN Teaching Assistant; no third role is offered as a pick",
80
+ "The Little Acorns Nursery Practitioner role is named as out because working alternate Saturdays is a requirement and she said no weekends, even though she meets its Level 3 requirement",
81
+ "The Greenway Primary Forest School Assistant role is named as out because a full driving licence and own vehicle are essential and she does not drive",
82
+ "The Ashby Lane Primary Teaching Assistant role is named as out or not met because previous KS2 TA experience is essential and her experience is as a nursery assistant, not a KS2 teaching assistant",
83
+ "Neither pick is ruled out or dropped over a preferred item: Makaton (desirable) at Brookside and phonics experience (a plus) at Elmfield may be noted as gaps or unknowns, but not as reasons she cannot apply",
84
+ "The Harwick Junior School Midday Supervisor role is not a pick, and the reason given is its hours (about 1.5 hours a day) against the 30-ish hours a week she asked for, not a missing qualification",
85
+ "The reply is short and contains no heading, section or line for unread, closed or duplicate roles (no 'Unread: none', 'Duplicates: none' or similar placeholder)",
86
+ "It says it judged from the short blurbs rather than full postings, does not say or assume she has phonics experience, Makaton, a driving licence or KS2 experience, and gives no percentage, score or match rating for any role"
87
+ ]
88
+ },
89
+ {
90
+ "id": 7,
91
+ "held_out": "2026-10-18",
92
+ "prompt": "I would be grateful for your advice on which one of the following vacancies I should prioritise. I hold a BSc (Hons) in Biomedical Science, awarded with a 2:1 in 2025, and completed a twelve-month placement year in a hospital microbiology laboratory before my final year. I am not yet HCPC registered. I live in Corlow, am seeking a permanent position, and owing to caring responsibilities I am able to work day shifts only, not nights.\n\n1. Biomedical Scientist (Band 5), Corlow General Hospital, Microbiology. Permanent; days with a weekend rota. HCPC registration as a Biomedical Scientist is essential.\n2. Laboratory Technician, Fenwick Water Services, Corlow. Permanent; Monday to Friday, days. Microbiological testing of drinking water samples. A degree in a biological science is required; experience in a UKAS ISO 17025-accredited laboratory is desirable.\n3. Medical Laboratory Assistant, Corlow General Hospital, Blood Sciences. Permanent. Sample reception and processing; a rotating shift pattern including nights is a requirement of the post.\n4. QC Microbiology Analyst, Treloar Pharmaceuticals, Corlow. Permanent; days. Environmental monitoring in a GMP facility. A minimum of two years' post-graduate experience in a GMP quality control laboratory is essential.\n5. Research Technician, University of Corlow, Cell Biology. Fixed-term contract of six months; days. Tissue culture support. A degree in a life science is required.",
93
+ "assertions": [
94
+ "Exactly one role is given as the recommendation, and it is the Laboratory Technician post at Fenwick Water Services",
95
+ "The Fenwick Water Services post is not ruled out or demoted because ISO 17025-accredited laboratory experience is not shown; that item is treated as desirable and may be noted as a gap or something to address, not as a bar",
96
+ "The Corlow General Hospital Biomedical Scientist post is named as out because HCPC registration is essential and she is not yet registered, even though it matches her microbiology placement",
97
+ "The Corlow General Hospital Medical Laboratory Assistant post is named as out because a rotating pattern including nights is required and she can work days only",
98
+ "The Treloar Pharmaceuticals QC Microbiology Analyst post is named as out because two years' post-graduate GMP QC experience is essential; the reply does not count her pre-final-year placement as post-graduate GMP experience",
99
+ "The University of Corlow Research Technician post is not the recommendation, and the reason given is that it is a six-month fixed-term contract when she asked for a permanent position",
100
+ "The reply is concise and contains no heading, section or line for unread, closed or duplicate roles (no 'Unread: none', 'Duplicates: none' or similar placeholder)",
101
+ "It says it worked from brief summaries rather than full postings, does not say or assume she has ISO 17025, GMP or accredited-laboratory experience, and gives no percentage, score or match rating for any role"
102
+ ]
73
103
  }
74
104
  ]
75
105
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "role-shortlist",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Read every open role on an employer's careers page, a job-board export or a folder of saved postings, and say which ones one person should apply for — each role judged only from its own posting text, roles that couldn't be read listed as unread instead of guessed from their titles, a role whose screening requirement the person doesn't meet named as out whatever else fits, and the same role posted twice counted once. Works for any occupation. Use when the user asks \"which of these jobs should I apply for\", \"go through this company's openings\", \"shortlist these postings against my CV\", or has more postings than they want to check one by one.",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": {
@@ -1,4 +1,4 @@
1
1
  rq==1.16.2
2
2
  redis==5.0.4
3
3
  psycopg[binary]==3.2.1
4
- jinja2==3.1.4
4
+ jinja2==3.1.6