skilldrop-cli 0.16.38 → 0.16.40

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.
Files changed (51) hide show
  1. package/README.md +43 -20
  2. package/bin/skilldrop.js +25 -0
  3. package/package.json +1 -1
  4. /package/packs/ai-engineering/skills/agent-config-review/evals/files/1/{package.json → package.json.fixture} +0 -0
  5. /package/packs/ai-engineering/skills/agent-config-review/evals/files/4/quillstack/{package.json → package.json.fixture} +0 -0
  6. /package/packs/ai-engineering/skills/agent-config-review/evals/files/5/.github/workflows/{codex-triage.yml → codex-triage.yml.fixture} +0 -0
  7. /package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  8. /package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/{package.json → package.json.fixture} +0 -0
  9. /package/packs/dev-team/skills/agents-md-generator/evals/files/1/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  10. /package/packs/dev-team/skills/agents-md-generator/evals/files/1/{pyproject.toml → pyproject.toml.fixture} +0 -0
  11. /package/packs/dev-team/skills/agents-md-generator/evals/files/2/{package.json → package.json.fixture} +0 -0
  12. /package/packs/dev-team/skills/agents-md-generator/evals/files/5/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  13. /package/packs/dev-team/skills/agents-md-generator/evals/files/5/{pyproject.toml → pyproject.toml.fixture} +0 -0
  14. /package/packs/dev-team/skills/codebase-tour/evals/files/1/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  15. /package/packs/dev-team/skills/codebase-tour/evals/files/1/{package-lock.json → package-lock.json.fixture} +0 -0
  16. /package/packs/dev-team/skills/codebase-tour/evals/files/1/{package.json → package.json.fixture} +0 -0
  17. /package/packs/dev-team/skills/codebase-tour/evals/files/2/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  18. /package/packs/dev-team/skills/codebase-tour/evals/files/2/{pyproject.toml → pyproject.toml.fixture} +0 -0
  19. /package/packs/dev-team/skills/codebase-tour/evals/files/3/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  20. /package/packs/dev-team/skills/codebase-tour/evals/files/3/{go.mod → go.mod.fixture} +0 -0
  21. /package/packs/dev-team/skills/codebase-tour/evals/files/4/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  22. /package/packs/dev-team/skills/codebase-tour/evals/files/4/{pyproject.toml → pyproject.toml.fixture} +0 -0
  23. /package/packs/dev-team/skills/codebase-tour/evals/files/5/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  24. /package/packs/dev-team/skills/codebase-tour/evals/files/5/{package.json → package.json.fixture} +0 -0
  25. /package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/{package.json → package.json.fixture} +0 -0
  26. /package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/web/{package.json → package.json.fixture} +0 -0
  27. /package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  28. /package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  29. /package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/.github/workflows/{release.yml → release.yml.fixture} +0 -0
  30. /package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  31. /package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  32. /package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/.github/workflows/{release.yml → release.yml.fixture} +0 -0
  33. /package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/{package.json → package.json.fixture} +0 -0
  34. /package/packs/dev-team/skills/dependency-upgrade-review/evals/files/6/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  35. /package/packs/dev-team/skills/dependency-upgrade-review/evals/files/6/.github/workflows/{integration.yml → integration.yml.fixture} +0 -0
  36. /package/packs/dev-team/skills/dependency-upgrade-review/evals/files/6/{go.mod → go.mod.fixture} +0 -0
  37. /package/packs/dev-team/skills/dependency-upgrade-review/evals/files/7/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  38. /package/packs/dev-team/skills/dependency-upgrade-review/evals/files/7/{package.json → package.json.fixture} +0 -0
  39. /package/packs/dev-team/skills/sonar-onboard/evals/files/2/.github/workflows/{ci.yml → ci.yml.fixture} +0 -0
  40. /package/packs/dev-team/skills/sonar-onboard/evals/files/2/{pyproject.toml → pyproject.toml.fixture} +0 -0
  41. /package/packs/dev-team/skills/sonar-onboard/evals/files/2/web/{package.json → package.json.fixture} +0 -0
  42. /package/packs/frontend/skills/bundle-size-review/evals/files/1/{package.json → package.json.fixture} +0 -0
  43. /package/packs/frontend/skills/bundle-size-review/evals/files/3/{package.json → package.json.fixture} +0 -0
  44. /package/packs/frontend/skills/bundle-size-review/evals/files/5/{package-lock.json → package-lock.json.fixture} +0 -0
  45. /package/packs/frontend/skills/bundle-size-review/evals/files/5/{package.json → package.json.fixture} +0 -0
  46. /package/packs/frontend/skills/bundle-size-review/evals/files/6/{package.json → package.json.fixture} +0 -0
  47. /package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/backoffice/{package.json → package.json.fixture} +0 -0
  48. /package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/{package.json → package.json.fixture} +0 -0
  49. /package/packs/frontend/skills/bundle-size-review/evals/files/7/{package.json → package.json.fixture} +0 -0
  50. /package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/{package.json → package.json.fixture} +0 -0
  51. /package/packs/solution-architect/skills/reverse-architecture/evals/files/2/{worker-requirements.txt → worker-requirements.txt.fixture} +0 -0
package/README.md CHANGED
@@ -1,19 +1,56 @@
1
1
  # skilldrop
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/skilldrop-cli)](https://www.npmjs.com/package/skilldrop-cli)
4
+ [![CLI on Linux, macOS and Windows](https://github.com/sananthanarayan/skilldrop/actions/workflows/cli.yml/badge.svg?branch=main)](https://github.com/sananthanarayan/skilldrop/actions/workflows/cli.yml)
5
+ [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/sananthanarayan/skilldrop/badge)](https://scorecard.dev/viewer/?uri=github.com/sananthanarayan/skilldrop)
4
6
  [![license](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue.svg)](LICENSE)
5
7
 
6
- **Portable AI-agent skills, measured against the agent without them.** They cover the deliverables knowledge workers actually ship: ADRs, design docs, PRDs, runbooks, threat models, decks, postmortems and adversarial reviews. Each one is a folder you copy into Claude Code, Cursor, Kiro, Codex, Antigravity or Copilot.
8
+ **Agent skills that are measured against the agent without them, and retired when they lose.** Skills for the work people ship: ADRs, PRDs, runbooks, threat models, decks, SQL reviews, DPIAs and Terraform plan reviews. Each one is a folder you copy into Claude Code, Cursor, Kiro, Codex, Antigravity or Copilot.
9
+
10
+ ```bash
11
+ npx skilldrop-cli install --pack dev-team # or product-manager, solution-architect, sre-oncall …
12
+ ```
13
+
14
+ ## The same request, with and without a skill
15
+
16
+ From a held-out eval, written blind from the skill's description:
17
+
18
+ > *"We're taking ClaimLens to the investment committee on Thursday… Can you build a lean canvas for it and set out our riskiest assumptions and how we'd test them?"*
19
+
20
+ | Plain Claude Code | With [`lean-canvas`](https://sananthanarayan.github.io/skilldrop/skills/lean-canvas/) |
21
+ |---|---|
22
+ | Finds the corrected break-even (~225 seats), then recommends *"scope the ask to Claims-only Phase 1"*. | *"Corrected, break-even is 225 seats — more than all three departments combined (215), so full rollout still doesn't cover running costs at £40/seat."* |
23
+
24
+ The blind judge picked the skill's answer: *"A misses this and recommends a Claims-only phase that cannot break even."*
25
+
26
+ ## The receipts
27
+
28
+ Every skill runs as a real agent session twice: once with the skill, once without. The results are [published either way](https://sananthanarayan.github.io/skilldrop/evals/). In the last full run (5 October 2026: 100 skills, 209 evals, `claude-sonnet-5`):
29
+
30
+ - **With a skill, answers met 75% of their checks; without one, 44%.** The checks were written by each skill's author, so the fairer number is the next one.
31
+ - **Two blind judges preferred the skill's answer in 61% of pairs** (95% interval 55–68%). Each judge saw only the request and both answers, in shuffled order.
32
+ - **4 skills that didn't beat the plain agent were [retired](https://sananthanarayan.github.io/skilldrop/evals/#retired)**, and they're listed. Each new skill has to win on held-out evals before it ships.
33
+
34
+ [Get started](https://sananthanarayan.github.io/skilldrop/start/) · [Browse the packs](https://sananthanarayan.github.io/skilldrop/packs/) · [Search all skills](https://sananthanarayan.github.io/skilldrop/catalogue/) · [Docs](https://sananthanarayan.github.io/skilldrop/docs/) · [Contribute](CONTRIBUTING.md)
35
+
36
+ ## Start in one command
37
+
38
+ ```bash
39
+ npx skilldrop-cli install --pack dev-team
40
+ ```
41
+
42
+ The install prints a starter prompt for the pack. For `dev-team`, ask your agent:
7
43
 
8
44
  ```text
9
- messy input → a skill with a quality bar → a gate that can say no → your decision
45
+ Is this branch safe to merge? Run a pre-merge review on the current diff.
10
46
  ```
11
47
 
12
- Every skill is run as a real agent session twice, once with the skill and once without, and the results are published either way. [See the numbers and how they were measured](https://sananthanarayan.github.io/skilldrop/evals/).
48
+ A good result runs your lint, typecheck and tests through a gate script, then a reviewer panel, and ends with `READY` or `NOT READY`. To see any pack's starter, run `npx skilldrop-cli info --pack <name>`.
13
49
 
14
- [Browse the packs](https://sananthanarayan.github.io/skilldrop/packs/) · [Search all skills](https://sananthanarayan.github.io/skilldrop/catalogue/) · [Docs](https://sananthanarayan.github.io/skilldrop/docs/) · [Install options](guides/how-to/install.md) · [Contribute](CONTRIBUTING.md)
50
+ In Claude Code you can use the plugin marketplace instead: run `/plugin marketplace add sananthanarayan/skilldrop`, then `/plugin install dev-team@skilldrop`. [Every install route](guides/how-to/install.md) covers single skills, other IDEs, loops, reviewer subagents, profiles and updates.
15
51
 
16
- ## Choose your role
52
+ <details>
53
+ <summary><b>Choose your role:</b> 19 packs, from product management and architecture to SRE, GRC and job applications</summary>
17
54
 
18
55
  Install one pack. Every role pack also brings `core` (intake, critique, review council, output hygiene). Each pack page has a starter prompt to paste and says what a good result looks like.
19
56
 
@@ -37,21 +74,7 @@ Install one pack. Every role pack also brings `core` (intake, critique, review c
37
74
  - **Applying for a job:** `career` — an honest fit check against the posting, a tailored resume and cover letter that claim nothing you didn't, and the application form's answers. [Open pack](https://sananthanarayan.github.io/skilldrop/packs/career/)
38
75
  - **Everyone:** `core` on its own. [Open pack](https://sananthanarayan.github.io/skilldrop/packs/core/)
39
76
 
40
- ## Start in one command
41
-
42
- ```bash
43
- npx skilldrop-cli install --pack dev-team
44
- ```
45
-
46
- The install prints a starter prompt for the pack. For `dev-team`, ask your agent:
47
-
48
- ```text
49
- Is this branch safe to merge? Run a pre-merge review on the current diff.
50
- ```
51
-
52
- A good result runs your lint, typecheck and tests through a gate script, then a reviewer panel, and ends with `READY` or `NOT READY`. To see any pack's starter, run `npx skilldrop-cli info --pack <name>`.
53
-
54
- In Claude Code you can use the plugin marketplace instead: run `/plugin marketplace add sananthanarayan/skilldrop`, then `/plugin install dev-team@skilldrop`. [Every install route](guides/how-to/install.md) covers single skills, other IDEs, loops, reviewer subagents, profiles and updates.
77
+ </details>
55
78
 
56
79
  ## How it works
57
80
 
package/bin/skilldrop.js CHANGED
@@ -119,6 +119,7 @@ Organisation policy (RFC-0050):
119
119
 
120
120
  Options:
121
121
  --dry-run install | update | uninstall | new-skill: print what would change, change nothing
122
+ SKILLDROP_NO_STAR=1 don't print the one-time line asking for a GitHub star after the first install
122
123
  --yes skip the confirmation uninstall and update --force ask for at a terminal
123
124
  (scripts and CI are never asked)
124
125
  --agent operate on subagents instead of skills. Targets:
@@ -1415,7 +1416,31 @@ function installProfile(args) {
1415
1416
  console.log(`\nProfile '${name}' installed.`);
1416
1417
  }
1417
1418
 
1419
+ /* One line, once per machine, after the first install that succeeds: a star is how other people
1420
+ find the catalogue. Only at an interactive terminal — never in CI, a pipe or --json output —
1421
+ and SKILLDROP_NO_STAR=1 turns it off. The only thing written is the marker that stops it
1422
+ showing again; nothing is sent anywhere. If the marker can't be written, nothing is shown,
1423
+ so it can never repeat. */
1424
+ function starNote(flags) {
1425
+ if (!process.stdout.isTTY || process.env.CI || process.env.SKILLDROP_NO_STAR || flags.json) return;
1426
+ const marker = path.join(os.homedir(), ".config", "skilldrop", "star-shown");
1427
+ try {
1428
+ fs.mkdirSync(path.dirname(marker), { recursive: true });
1429
+ // "wx" creates the marker only if it doesn't exist, in one step: an existing marker (the
1430
+ // line was shown before) or an unwritable folder both throw, and nothing is shown.
1431
+ fs.writeFileSync(marker, new Date().toISOString().slice(0, 10) + "\n", { flag: "wx" });
1432
+ } catch (e) { return; }
1433
+ console.log("\nIf skilldrop saves you time, a star helps other people find it: https://github.com/sananthanarayan/skilldrop" +
1434
+ "\n (shown once; SKILLDROP_NO_STAR=1 turns it off)");
1435
+ }
1436
+
1418
1437
  function install(args) {
1438
+ const done = installUnits(args);
1439
+ if (!args.flags["dry-run"]) starNote(args.flags);
1440
+ return done;
1441
+ }
1442
+
1443
+ function installUnits(args) {
1419
1444
  if (args.flags["dry-run"] && (args.flags.panel || args.flags.profile || args.flags.loop || args.flags.agent))
1420
1445
  die("--dry-run covers skill installs, update and uninstall. To preview a panel, profile, loop or agent,\n" +
1421
1446
  " read what it contains first: skilldrop profiles | loops | agents --json");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skilldrop-cli",
3
- "version": "0.16.38",
3
+ "version": "0.16.40",
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",