skilldrop-cli 0.16.12 → 0.16.14
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.
- package/bin/skilldrop.js +36 -11
- package/catalogue.json +8 -6
- package/contracts/catalogue.schema.json +15 -1
- package/model-routing.json +1 -17
- package/package.json +1 -1
- package/packs/ai-engineering/skills/ai-readiness-assessment/SKILL.md +1 -1
- package/packs/ai-engineering/skills/ai-readiness-assessment/manifest.json +2 -3
- package/packs/ai-engineering/skills/llm-eval-harness/SKILL.md +1 -1
- package/packs/ai-engineering/skills/llm-eval-harness/manifest.json +2 -2
- package/packs/api-builder/pack.json +1 -1
- package/packs/api-builder/skills/eval-harness-generator/SKILL.md +1 -1
- package/packs/api-builder/skills/eval-harness-generator/manifest.json +2 -2
- package/packs/api-builder/skills/tool-use-schema-writer/SKILL.md +3 -3
- package/packs/api-builder/skills/tool-use-schema-writer/evals/evals.json +1 -1
- package/packs/api-builder/skills/tool-use-schema-writer/manifest.json +2 -2
- package/packs/core/skills/brief-intake/SKILL.md +2 -2
- package/packs/core/skills/brief-intake/manifest.json +3 -3
- package/packs/core/skills/brief-intake/templates/brief-tech-comparison.md +1 -1
- package/packs/core/skills/council-review/SKILL.md +2 -2
- package/packs/core/skills/council-review/manifest.json +2 -2
- package/packs/core/skills/council-review/reference.md +0 -1
- package/packs/core/skills/doc-critique/SKILL.md +1 -1
- package/packs/core/skills/doc-critique/manifest.json +2 -2
- package/packs/core/skills/doc-critique/rubrics/tech-comparison.md +1 -1
- package/packs/data-analytics/pack.json +8 -14
- package/packs/data-analytics/skills/dashboard-spec/SKILL.md +2 -2
- package/packs/data-analytics/skills/dashboard-spec/examples/support-staffing.md +1 -1
- package/packs/data-analytics/skills/dashboard-spec/manifest.json +1 -10
- package/packs/data-analytics/skills/dashboard-spec/templates/dashboard-spec.md +1 -1
- package/packs/data-analytics/skills/sql-review/SKILL.md +2 -2
- package/packs/data-analytics/skills/sql-review/manifest.json +1 -11
- package/packs/dev-team/skills/migration-plan/SKILL.md +1 -1
- package/packs/dev-team/skills/migration-plan/manifest.json +2 -2
- package/packs/product-manager/skills/business-case/SKILL.md +2 -2
- package/packs/product-manager/skills/business-case/manifest.json +3 -3
- package/packs/product-manager/skills/strategy-analysis/SKILL.md +3 -3
- package/packs/product-manager/skills/strategy-analysis/evals/evals.json +1 -1
- package/packs/product-manager/skills/strategy-analysis/manifest.json +2 -3
- package/packs/research/pack.json +2 -2
- package/packs/research/skills/hypothesis-comparison/SKILL.md +3 -3
- package/packs/research/skills/hypothesis-comparison/manifest.json +2 -3
- package/packs/research/skills/research-plan/SKILL.md +0 -1
- package/packs/research/skills/research-plan/manifest.json +2 -3
- package/packs/research/skills/source-synthesis/SKILL.md +103 -100
- package/packs/research/skills/source-synthesis/evals/evals.json +28 -0
- package/packs/research/skills/source-synthesis/evals/files/6/client-survey-summary.md +15 -0
- package/packs/research/skills/source-synthesis/evals/files/6/fenwick-lane-call-notes.txt +10 -0
- package/packs/research/skills/source-synthesis/evals/files/6/finance-email.txt +21 -0
- package/packs/research/skills/source-synthesis/evals/files/6/practice-ledger-article.md +13 -0
- package/packs/research/skills/source-synthesis/evals/files/6/wcapa-benchmarking-extract.md +12 -0
- package/packs/research/skills/source-synthesis/manifest.json +3 -3
- package/packs/skill-engineering/skills/skill-author/SKILL.md +1 -1
- package/packs/skill-engineering/skills/skill-author/manifest.json +1 -2
- package/packs/skill-engineering/skills/skill-review/SKILL.md +1 -1
- package/packs/skill-engineering/skills/skill-review/manifest.json +1 -2
- package/packs/solution-architect/skills/api-contract-draft/SKILL.md +1 -1
- package/packs/solution-architect/skills/api-contract-draft/manifest.json +2 -2
- package/packs/data-analytics/skills/metric-definition/SKILL.md +0 -92
- package/packs/data-analytics/skills/metric-definition/evals/eval_queries.json +0 -34
- package/packs/data-analytics/skills/metric-definition/evals/evals.json +0 -79
- package/packs/data-analytics/skills/metric-definition/evals/files/2/tables.md +0 -42
- package/packs/data-analytics/skills/metric-definition/evals/files/2/thread.md +0 -40
- package/packs/data-analytics/skills/metric-definition/evals/files/4/tables.md +0 -32
- package/packs/data-analytics/skills/metric-definition/evals/files/4/thread.md +0 -31
- package/packs/data-analytics/skills/metric-definition/examples/refund-rate.md +0 -104
- package/packs/data-analytics/skills/metric-definition/manifest.json +0 -41
- package/packs/data-analytics/skills/metric-definition/reference.md +0 -67
- package/packs/data-analytics/skills/metric-definition/templates/metric-spec.md +0 -70
- package/packs/dev-team/skills/contribution-wizard/SKILL.md +0 -142
- package/packs/dev-team/skills/contribution-wizard/evals/eval_queries.json +0 -30
- package/packs/dev-team/skills/contribution-wizard/evals/evals.json +0 -78
- package/packs/dev-team/skills/contribution-wizard/evals/files/2/AGENTS.md +0 -9
- package/packs/dev-team/skills/contribution-wizard/evals/files/2/CATALOG.md +0 -18
- package/packs/dev-team/skills/contribution-wizard/evals/files/2/CONTRIBUTING.md +0 -45
- package/packs/dev-team/skills/contribution-wizard/evals/files/2/OWNERS.md +0 -7
- package/packs/dev-team/skills/contribution-wizard/evals/files/2/skills/detention-claim-letter/INSTRUCTIONS.md +0 -20
- package/packs/dev-team/skills/contribution-wizard/evals/files/2/skills/detention-claim-letter/skill.yaml +0 -11
- package/packs/dev-team/skills/contribution-wizard/evals/files/2/skills/detention-claim-letter/tests/cases.yaml +0 -25
- package/packs/dev-team/skills/contribution-wizard/evals/files/2/skills/rate-con-extractor/INSTRUCTIONS.md +0 -20
- package/packs/dev-team/skills/contribution-wizard/evals/files/2/skills/rate-con-extractor/skill.yaml +0 -8
- package/packs/dev-team/skills/contribution-wizard/evals/files/2/skills/rate-con-extractor/tests/cases.yaml +0 -32
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/CONTRIBUTING.md +0 -63
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/registry.json +0 -15
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/flag-overdue-holds/PROMPT.md +0 -10
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/flag-overdue-holds/examples/01-expected.md +0 -2
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/flag-overdue-holds/examples/01-input.md +0 -3
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/flag-overdue-holds/examples/02-expected.md +0 -1
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/flag-overdue-holds/examples/02-input.md +0 -2
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/flag-overdue-holds/examples/03-expected.md +0 -1
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/flag-overdue-holds/examples/03-input.md +0 -2
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/flag-overdue-holds/meta.json +0 -7
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/summarise-reading-list/PROMPT.md +0 -11
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/summarise-reading-list/examples/01-expected.md +0 -4
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/summarise-reading-list/examples/01-input.md +0 -4
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/summarise-reading-list/examples/02-expected.md +0 -6
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/summarise-reading-list/examples/02-input.md +0 -2
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/summarise-reading-list/examples/03-expected.md +0 -1
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/summarise-reading-list/examples/03-input.md +0 -1
- package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/summarise-reading-list/skill.toml +0 -6
- package/packs/dev-team/skills/contribution-wizard/manifest.json +0 -11
- package/packs/solution-architect/skills/db-schema-design/SKILL.md +0 -76
- package/packs/solution-architect/skills/db-schema-design/evals/eval_queries.json +0 -34
- package/packs/solution-architect/skills/db-schema-design/evals/evals.json +0 -75
- package/packs/solution-architect/skills/db-schema-design/evals/files/2/current_tables.sql +0 -29
- package/packs/solution-architect/skills/db-schema-design/evals/files/2/notes.md +0 -53
- package/packs/solution-architect/skills/db-schema-design/evals/files/4/finance-email.md +0 -18
- package/packs/solution-architect/skills/db-schema-design/evals/files/4/members_sample.csv +0 -5
- package/packs/solution-architect/skills/db-schema-design/evals/files/4/points_txn_sample.csv +0 -17
- package/packs/solution-architect/skills/db-schema-design/evals/files/4/requirements.md +0 -28
- package/packs/solution-architect/skills/db-schema-design/manifest.json +0 -11
- package/packs/solution-architect/skills/db-schema-design/reference.md +0 -56
- package/packs/solution-architect/skills/db-schema-design/templates/schema-design.md +0 -75
- package/packs/solution-architect/skills/tech-comparison-matrix/SKILL.md +0 -64
- package/packs/solution-architect/skills/tech-comparison-matrix/evals/eval_queries.json +0 -30
- package/packs/solution-architect/skills/tech-comparison-matrix/evals/evals.json +0 -76
- package/packs/solution-architect/skills/tech-comparison-matrix/evals/files/2/requirements.md +0 -20
- package/packs/solution-architect/skills/tech-comparison-matrix/evals/files/2/vendor-notes.md +0 -29
- package/packs/solution-architect/skills/tech-comparison-matrix/evals/files/4/mobile-options.md +0 -45
- package/packs/solution-architect/skills/tech-comparison-matrix/examples/queue-selection.md +0 -41
- package/packs/solution-architect/skills/tech-comparison-matrix/manifest.json +0 -11
- package/packs/solution-architect/skills/tech-comparison-matrix/templates/matrix.md +0 -45
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: contribution-wizard
|
|
3
|
-
description: Guides an author through creating a new skilldrop skill from scratch — generates the manifest, SKILL.md, eval cases, and skill-catalogue entry from a plain-language description of the skill's purpose. Use when authoring a new skill for this repo or a private fork, ensuring a new skill meets the schema and validation requirements before submission.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# contribution-wizard
|
|
7
|
-
|
|
8
|
-
Walks an author through the full arc of creating a new skilldrop skill: intake → manifest + SKILL.md + evals + skill-catalogue entry. The output is copy-paste-ready — the author drops the files into `packs/<pack>/skills/<name>/` and runs `python3 validate.py` to confirm before opening a PR.
|
|
9
|
-
|
|
10
|
-
## How to respond
|
|
11
|
-
|
|
12
|
-
**Four rules come before the steps and outrank them:**
|
|
13
|
-
|
|
14
|
-
- **Answer what was asked, first.** Open with the answer, the decision or the artifact, in plain words. Scores, matrices, frameworks and tags come after it, and anything that doesn't change the answer is cut.
|
|
15
|
-
- **Use only what you were given.** Don't add facts, names, numbers, incidents, history, steps or sections the input doesn't contain. What you need and don't have is left out of the artifact and listed once at the end under "To confirm".
|
|
16
|
-
- **Deliver from what you have.** When the request gives you something to work on, state your assumptions in a line and produce the result. When it gives you nothing to work on, ask for it in one or two plain sentences and say what you will do once you have it.
|
|
17
|
-
- **Write for someone who has never heard of this skill.** No skill names, no paths or scripts from this folder, no internal terms, and nothing about how the run was set up. A next step is one plain sentence at the end that describes the work.
|
|
18
|
-
- **For this skill:** Read the target repository first: its contributing guide, its agent instructions and two existing skills. Follow the conventions you find, and produce every file that repository requires for a submission, not a generic skill.
|
|
19
|
-
|
|
20
|
-
### Step 1 — Intake (ask all at once)
|
|
21
|
-
|
|
22
|
-
Ask these questions in a single block — not one at a time:
|
|
23
|
-
|
|
24
|
-
> **New skill intake**
|
|
25
|
-
>
|
|
26
|
-
> 1. **Purpose**: what does this skill do in one sentence?
|
|
27
|
-
> 2. **Input**: what does the agent receive? (paste, file, structured data, conversational context)
|
|
28
|
-
> 3. **Output**: what does the agent produce? (artifact type, format, length)
|
|
29
|
-
> 4. **Pack**: which role pack does it belong to? (solution-architect / product-manager / dev-team / sre-oncall / stakeholder-comms / ai-engineering / api-builder / new pack)
|
|
30
|
-
> 5. **Is it a gate?** Does it emit a pass/fail verdict, or generate an artifact?
|
|
31
|
-
> 6. **Related skills**: which existing skills does it complement or hand off to?
|
|
32
|
-
> 7. **External deps**: does it need API keys, npm packages, or pip libraries?
|
|
33
|
-
|
|
34
|
-
### Step 2 — Generate all artifacts in one response
|
|
35
|
-
|
|
36
|
-
After intake, produce the following in a single response, each in its own fenced code block:
|
|
37
|
-
|
|
38
|
-
#### `manifest.json`
|
|
39
|
-
|
|
40
|
-
```json
|
|
41
|
-
{
|
|
42
|
-
"name": "<kebab-case-name>",
|
|
43
|
-
"version": "1.0.0",
|
|
44
|
-
"description": "<use-case-first description — what it does, then trigger phrases>",
|
|
45
|
-
"entrypoint": "SKILL.md",
|
|
46
|
-
"deps": { "npm": [], "pip": [] },
|
|
47
|
-
"env": { "required": [], "optional": [] },
|
|
48
|
-
"related": ["<related-skill-1>", "<related-skill-2>"],
|
|
49
|
-
"tags": ["<tag1>", "<tag2>"],
|
|
50
|
-
"model": {
|
|
51
|
-
"tier": "<light|standard|heavy>",
|
|
52
|
-
"rationale": "<one sentence: why this tier fits what the skill does>"
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
If the skill ships `scripts/`, add a `permissions` block before `model`: the hosts the scripts contact, the external programs they run, and where they write (`"none"`, `"named-paths"`, `"project"` or `"anywhere"`). For example: `"permissions": { "network": [], "commands": ["pdftotext"], "files": "named-paths" }`. Validation fails a script skill without it, and fails one whose code does something it doesn't declare.
|
|
58
|
-
|
|
59
|
-
Tier guidance:
|
|
60
|
-
- **light**: pattern matching, formatting, extraction with no judgment calls
|
|
61
|
-
- **standard**: synthesis, judgment calls, structured output requiring reasoning (most skills)
|
|
62
|
-
- **heavy**: multi-step reasoning with high stakes or adversarial review (gates, threat models)
|
|
63
|
-
|
|
64
|
-
#### `SKILL.md`
|
|
65
|
-
|
|
66
|
-
```markdown
|
|
67
|
-
---
|
|
68
|
-
name: <skill-name>
|
|
69
|
-
description: <same as manifest description>
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
# <skill-name>
|
|
73
|
-
|
|
74
|
-
<One paragraph: what this skill does and why it's useful. Name the problem it solves.>
|
|
75
|
-
|
|
76
|
-
## How to respond
|
|
77
|
-
|
|
78
|
-
<Numbered steps. Each step is an observable action. No vague "reason about X" steps.>
|
|
79
|
-
|
|
80
|
-
## Quality bar
|
|
81
|
-
|
|
82
|
-
<Three to five bullet points: what a good output includes and what it never does. Name anti-patterns explicitly.>
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
#### `evals/cases.json`
|
|
86
|
-
|
|
87
|
-
Eight eval cases covering: 2 happy-path, 2 minimal/edge input, 2 anti-pattern (the quality bar failures), 2 refusal or boundary cases. Format:
|
|
88
|
-
|
|
89
|
-
```json
|
|
90
|
-
[
|
|
91
|
-
{
|
|
92
|
-
"id": "happy-path-standard",
|
|
93
|
-
"trigger": "<realistic input>",
|
|
94
|
-
"expected_shape": ["<checkable criterion 1>", "<checkable criterion 2>"],
|
|
95
|
-
"must_not_include": ["<anti-pattern from quality bar>"],
|
|
96
|
-
"verdict_class": "pass",
|
|
97
|
-
"notes": "<one sentence on what this tests>"
|
|
98
|
-
}
|
|
99
|
-
]
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
#### Skill catalogue entry
|
|
103
|
-
|
|
104
|
-
One row for `guides/reference/skill-catalogue.md`, under the right category, matching the format of existing rows:
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
| [`<skill-name>`](../../packs/<pack>/skills/<skill-name>/SKILL.md) | <One sentence describing what the skill does and the output it produces.> |
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
#### Pack and outcome
|
|
111
|
-
|
|
112
|
-
State which one pack the skill belongs in (`core` only if every role needs it) — its folder goes at `packs/<pack>/skills/<skill-name>/` — and which `outcomes` entry in `catalogue.json` to add it to.
|
|
113
|
-
|
|
114
|
-
### Step 3 — Install check reminder
|
|
115
|
-
|
|
116
|
-
After generating, tell the author:
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
Next steps:
|
|
120
|
-
1. mkdir -p packs/<pack>/skills/<skill-name> && cd packs/<pack>/skills/<skill-name>
|
|
121
|
-
2. Drop in manifest.json, SKILL.md, and evals/cases.json
|
|
122
|
-
3. python3 validate.py # must pass before opening a PR
|
|
123
|
-
4. Add the row to guides/reference/skill-catalogue.md under the correct category
|
|
124
|
-
5. Add the skill to an outcome in catalogue.json
|
|
125
|
-
6. If the skill has a how-to guide, add it to guides/how-to/ and guides/README.md
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## Anti-patterns
|
|
129
|
-
|
|
130
|
-
- **Generating manifests without checking the schema.** The most common contribution failure is a manifest missing a required field. Always instruct the author to run `python3 validate.py` before opening a PR.
|
|
131
|
-
- **Generating eval triggers that test nothing.** "Run this skill" is not an eval case. Insist on realistic triggers that would expose a specific failure mode if the model got it wrong.
|
|
132
|
-
- **Listing related skills that don't exist.** A manifest that references a non-existent skill fails validation. Instruct the author to run `ls skills/` before finalizing the `related` array.
|
|
133
|
-
|
|
134
|
-
After generating eval cases, the author can use `eval-harness-generator` to add more coverage or to regenerate cases after modifying the SKILL.md.
|
|
135
|
-
|
|
136
|
-
## Quality bar
|
|
137
|
-
|
|
138
|
-
- **Manifests must be schema-valid.** Every field required by `contracts/skill.schema.json` must be present. Use `python3 validate.py` as the check — not a visual review.
|
|
139
|
-
- **Eval triggers are realistic.** A trigger of "use this skill" is not an eval case. Each trigger should be a plausible user input, not a test harness artifact.
|
|
140
|
-
- **SKILL.md has observable steps.** Every step in "How to respond" must describe an action the agent takes — never "think about X" or "consider Y".
|
|
141
|
-
- **The quality bar names anti-patterns.** A quality bar that only says what good looks like doesn't help the agent avoid common failures. Name at least two things the output must never do.
|
|
142
|
-
- **Related skills are real.** Every skill listed in `related` must exist in the skills directory. Run `ls skills/` to check before outputting.
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"query": "Help me create a new skilldrop skill from scratch",
|
|
4
|
-
"should_trigger": true
|
|
5
|
-
},
|
|
6
|
-
{
|
|
7
|
-
"query": "Generate the manifest, SKILL.md, and evals for a skill I want to contribute",
|
|
8
|
-
"should_trigger": true
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
"query": "I have an idea for a skill in the dev-team pack — walk me through authoring it",
|
|
12
|
-
"should_trigger": true
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"query": "Scaffold a new skill for our private fork so it passes validate.py",
|
|
16
|
-
"should_trigger": true
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"query": "I edited the bug-triage SKILL.md — regenerate its eval cases",
|
|
20
|
-
"should_trigger": false
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"query": "Add more eval coverage to an existing skill's evals folder",
|
|
24
|
-
"should_trigger": false
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"query": "Generate an AGENTS.md for this repository",
|
|
28
|
-
"should_trigger": false
|
|
29
|
-
}
|
|
30
|
-
]
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"skill_name": "contribution-wizard",
|
|
3
|
-
"evals": [
|
|
4
|
-
{
|
|
5
|
-
"id": 1,
|
|
6
|
-
"prompt": "I want to add a new skill to skilldrop called `sla-credit-calculator`. It takes a customer contract's SLA terms plus a month of uptime data and outputs the service credit owed, with the calculation shown. It belongs in the sre-oncall pack, it generates an artifact (not a gate), it relates to runbook-generator and incident-comms, and it needs no external deps. Generate everything I need to submit it.",
|
|
7
|
-
"assertions": [
|
|
8
|
-
"Produces manifest.json, SKILL.md, evals/cases.json, and a skill-catalogue row, each in its own fenced code block, in a single response",
|
|
9
|
-
"The manifest includes every required field (name, version, description, entrypoint, deps, env, related, tags, model with tier and rationale)",
|
|
10
|
-
"The related array lists only skills that exist (runbook-generator, incident-comms) and tells the author to check the skills directory before finalizing",
|
|
11
|
-
"SKILL.md's How to respond steps are observable actions — none read 'think about X' or 'consider Y'",
|
|
12
|
-
"The quality bar names at least two things the output must never do (e.g. never invent uptime figures not in the input)",
|
|
13
|
-
"evals/cases.json has eight cases with realistic triggers, covering happy-path, edge, anti-pattern, and boundary cases",
|
|
14
|
-
"Ends with next steps that place files under packs/sre-oncall/skills/sla-credit-calculator/ and require python3 validate.py to pass before opening a PR",
|
|
15
|
-
"Does not invent inputs, deps, or related skills the author did not give"
|
|
16
|
-
]
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"id": 2,
|
|
20
|
-
"held_out": "2026-10-05",
|
|
21
|
-
"prompt": "I want to add a skill to our team's skills repo. The repo is this folder (CONTRIBUTING.md, AGENTS.md, existing skills under skills/). The new one is carrier-invoice-audit: you give it a carrier's freight invoice and the rate confirmation for that load, and it lists every line where the carrier billed more than we agreed, with the difference. Ignore differences of $5.00 or less per line. It goes under billing. Related skills are rate-con-extractor and bol-parser. And if it finds a detention charge on the invoice it should kick off detention-claim-letter automatically at the end. Write everything I need for the pull request.",
|
|
22
|
-
"assertions": [
|
|
23
|
-
"The skill is delivered as skills/carrier-invoice-audit/ containing skill.yaml, INSTRUCTIONS.md and tests/cases.yaml, the layout CONTRIBUTING.md requires, and not as some other layout such as manifest.json plus SKILL.md",
|
|
24
|
-
"The related list contains rate-con-extractor and does not contain bol-parser, and the reply says bol-parser is not a skill in the repo",
|
|
25
|
-
"The skill's instructions do not make it run or hand off to detention-claim-letter, and the reply says the repo's rule that a skill never calls another skill is the reason",
|
|
26
|
-
"The owner field is a team that appears in OWNERS.md (billing-ops, dispatch or claims), and the reply tells the author the owner was not given and needs confirming",
|
|
27
|
-
"tests/cases.yaml has at least five cases, one of which covers a missing input such as no rate confirmation supplied, following AGENTS.md's rule over the three cases CONTRIBUTING.md asks for",
|
|
28
|
-
"The $5.00 per-line tolerance appears as an exact figure in INSTRUCTIONS.md, and no other threshold or percentage is introduced",
|
|
29
|
-
"A CATALOG.md row for carrier-invoice-audit is provided for the billing table",
|
|
30
|
-
"The reply tells the author to run make check before opening the pull request"
|
|
31
|
-
]
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"id": 3,
|
|
35
|
-
"held_out": "2026-10-05",
|
|
36
|
-
"prompt": "need a new skill for our skills repo. takes the standup notes people paste from slack during the week and writes the friday update that goes to our director. not sure on the name yet, weekly-digest or friday-rollup. Priya wanted it to pull ticket status from Jira too but we don't have API access sorted so leave that out for now i guess. don't know which folder it should live in, whoever set the repo up is on leave. can you write the skill up plus a few test cases so i can open a PR when she's back",
|
|
37
|
-
"assertions": [
|
|
38
|
-
"It delivers a drafted instruction file for the skill and at least three test cases, and does not stop at a list of questions",
|
|
39
|
-
"It says the repo's conventions (required files, metadata format or folder) were not available and that the file layout used is an assumption to check",
|
|
40
|
-
"It uses one name for the skill throughout and tells the author the choice between weekly-digest and friday-rollup is still theirs to make",
|
|
41
|
-
"The skill as written does not fetch from Jira and declares no Jira credential, API key or dependency; Jira is mentioned only as left out for now",
|
|
42
|
-
"The skill's instructions tell it to report only what is in the pasted standup notes and not to add progress, blockers or ticket status the notes do not contain",
|
|
43
|
-
"It does not invent the director's name, the team's name, team members other than Priya, or a specific repo folder stated as fact",
|
|
44
|
-
"The test cases use realistic pasted standup notes as input, and at least one covers thin or missing notes"
|
|
45
|
-
]
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"id": 4,
|
|
49
|
-
"held_out": "2026-10-06",
|
|
50
|
-
"prompt": "Our library systems team keeps a small skills repo, it's this folder (CONTRIBUTING.md, registry.json, a couple of existing skills under skills/). I want to add one called ILL_Request_Triage. Staff paste in an interlibrary loan request from the request form export (patron name, card number, the title, author, year published, list price, and whether the catalogue check found a copy on our shelves) and it says which of our four routes the request goes down, with a one-line reason:\n\n- fill from our own stock, if the catalogue check says we hold a copy that's on the shelf\n- borrow through the Northmere Consortium, if we don't hold it and it was published more than 2 years ago\n- buy it, if we don't hold it, it was published in the last 2 years and the list price is under £60\n\nCategory is resource-sharing, maintainer is resource-sharing@harrowgate.example. Can you write up everything I need for the pull request?",
|
|
51
|
-
"assertions": [
|
|
52
|
-
"The skill's metadata is delivered as a skill.toml file alongside PROMPT.md and an examples folder, and no meta.json is created for the new skill",
|
|
53
|
-
"The skill is given a lowercase hyphenated name that starts with a verb and spells out interlibrary loan (for example triage-interlibrary-loan-requests), not ILL_Request_Triage or a name containing the abbreviation ill, and the reply tells the author the name was changed to fit the naming rules",
|
|
54
|
-
"handles_patron_data is set to true, and the skill's instructions tell the assistant not to repeat the library card number in its output",
|
|
55
|
-
"The reply tells the author that four routes were mentioned but only three were described, and does not write a rule for a fourth route as though the author had given one",
|
|
56
|
-
"It points out at least one request the stated rules do not cover, such as a title published in the last 2 years with a list price of £60 or more, or a copy we hold that is out on loan",
|
|
57
|
-
"The skill's instructions carry the 2-year and £60 thresholds exactly as given and introduce no other price or age threshold",
|
|
58
|
-
"There are at least three example input/expected pairs, and at least one is an awkward case such as a request with a field missing",
|
|
59
|
-
"A registry.json entry for the new skill is provided with category resource-sharing and maintainer resource-sharing@harrowgate.example"
|
|
60
|
-
]
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"id": 5,
|
|
64
|
-
"held_out": "2026-10-06",
|
|
65
|
-
"prompt": "my cofounder keeps saying we should have a 'skill' so our coding agent writes the release notes instead of me doing it every other friday. input is the list of merged PR titles since the last release, output is the notes we post for customers (they're shop owners, not devs). some PRs shouldn't show up publicly, security fixes mostly, so handle that somehow. we're 4 people and don't have a skills setup yet, i think it'd go in .claude/skills in the main repo but not sure that's right. keep it small, one file if possible, plus a couple of examples i can try it on",
|
|
66
|
-
"assertions": [
|
|
67
|
-
"It delivers a drafted instruction file for the release-notes skill and at least two example inputs to try it on, and does not stop at a list of questions",
|
|
68
|
-
"The skill itself is one instruction file, with no separate manifest, metadata file or multi-file package presented as required",
|
|
69
|
-
"It says where the skill should live is unconfirmed, treating .claude/skills as the author's guess to check, not as an established fact about their repo",
|
|
70
|
-
"The skill's instructions tell it to write only from the PR titles it is given and not to add features, fixes or details the titles do not contain",
|
|
71
|
-
"The skill's instructions tell it to write for shop owners in plain language, not to copy developer-facing PR titles through as they are",
|
|
72
|
-
"The skill's instructions keep security-fix PRs out of the public notes or set them aside for a person to decide, and the reply says the exact rule for what stays private is the author's to confirm",
|
|
73
|
-
"At least one of the examples includes a security-fix PR title",
|
|
74
|
-
"It does not invent a product name, a company name, a version number scheme, PR label names or a command for fetching the PR titles and state it as fact"
|
|
75
|
-
]
|
|
76
|
-
}
|
|
77
|
-
]
|
|
78
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# Instructions for agents working in this repo
|
|
2
|
-
|
|
3
|
-
Read `CONTRIBUTING.md` first. The rules below were added after it and win where the two differ.
|
|
4
|
-
|
|
5
|
-
1. **A skill never calls, starts or hands off to another skill.** Each folder has to work when it is the only one installed. If a second skill is the natural follow-up, say so to the user in the final line of the output and let them run it.
|
|
6
|
-
2. **Five test cases minimum, not three.** At least one case must cover missing input: the user leaves out something listed under `inputs`, and the expected behaviour is that the skill says what is missing and does not guess.
|
|
7
|
-
3. **No customer or carrier names from real accounts** in instructions or tests. Use made-up ones.
|
|
8
|
-
4. **Money rules are written as numbers.** If a skill applies a threshold or tolerance, the exact figure goes in `INSTRUCTIONS.md`. "A reasonable tolerance" is not acceptable.
|
|
9
|
-
5. Do not edit `OWNERS.md`. If no listed team fits, ask in the pull request.
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# Skill catalogue
|
|
2
|
-
|
|
3
|
-
## billing
|
|
4
|
-
|
|
5
|
-
| skill | what it does | owner |
|
|
6
|
-
|---|---|---|
|
|
7
|
-
| [`rate-con-extractor`](skills/rate-con-extractor/INSTRUCTIONS.md) | Pulls the agreed rate, fuel surcharge and accessorials out of a rate confirmation into a table. | billing-ops |
|
|
8
|
-
|
|
9
|
-
## dispatch
|
|
10
|
-
|
|
11
|
-
| skill | what it does | owner |
|
|
12
|
-
|---|---|---|
|
|
13
|
-
|
|
14
|
-
## claims
|
|
15
|
-
|
|
16
|
-
| skill | what it does | owner |
|
|
17
|
-
|---|---|---|
|
|
18
|
-
| [`detention-claim-letter`](skills/detention-claim-letter/INSTRUCTIONS.md) | Drafts a detention claim letter to a shipper or receiver from the gate timestamps and the free-time terms. | claims |
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# Contributing to larkfield-agent-skills
|
|
2
|
-
|
|
3
|
-
Internal skills for the Larkfield Freight operations and billing teams. One folder per skill under `skills/`.
|
|
4
|
-
|
|
5
|
-
## What a skill folder contains
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
skills/<skill-name>/
|
|
9
|
-
skill.yaml # metadata, see below
|
|
10
|
-
INSTRUCTIONS.md # what the agent does
|
|
11
|
-
tests/cases.yaml # test cases
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
`<skill-name>` is lowercase kebab-case and matches `name` in `skill.yaml`.
|
|
15
|
-
|
|
16
|
-
## skill.yaml
|
|
17
|
-
|
|
18
|
-
All of these are required:
|
|
19
|
-
|
|
20
|
-
| field | notes |
|
|
21
|
-
|---|---|
|
|
22
|
-
| `name` | same as the folder |
|
|
23
|
-
| `summary` | one sentence, 160 characters or fewer |
|
|
24
|
-
| `owner` | a team listed in `OWNERS.md` — the team that answers when the skill is wrong |
|
|
25
|
-
| `category` | `billing`, `dispatch` or `claims` |
|
|
26
|
-
| `inputs` | list of what the user must supply |
|
|
27
|
-
| `related` | list of other skills in this repo (may be empty). Every entry must be a folder under `skills/` |
|
|
28
|
-
| `network` | `false` unless the security team has signed off |
|
|
29
|
-
|
|
30
|
-
## INSTRUCTIONS.md
|
|
31
|
-
|
|
32
|
-
Three sections, in this order: `## Purpose`, `## Steps`, `## Never`.
|
|
33
|
-
`## Never` lists at least two things the skill must not do.
|
|
34
|
-
|
|
35
|
-
## Tests
|
|
36
|
-
|
|
37
|
-
`tests/cases.yaml` needs at least 3 cases. Each case has `name`, `input` and `expect` (a list of things that must be true of the output).
|
|
38
|
-
|
|
39
|
-
## Catalogue
|
|
40
|
-
|
|
41
|
-
Add one row for the skill to `CATALOG.md`, in the table for its category, keeping the rows in alphabetical order.
|
|
42
|
-
|
|
43
|
-
## Before you open a pull request
|
|
44
|
-
|
|
45
|
-
Run `make check`. It validates every `skill.yaml`, checks that `related` entries exist and counts the test cases. A pull request with a failing `make check` is not reviewed.
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
# Owning teams
|
|
2
|
-
|
|
3
|
-
| team | covers | contact |
|
|
4
|
-
|---|---|---|
|
|
5
|
-
| `billing-ops` | carrier payables, customer invoicing | Ines Okonkwo-Reyes |
|
|
6
|
-
| `dispatch` | load planning, carrier assignment | Tobias Vrana |
|
|
7
|
-
| `claims` | detention, damage and shortage claims | Marguerite Dlamini |
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# detention-claim-letter
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
When a driver is held at a facility past the agreed free time, Larkfield claims detention from the party that caused the delay. This skill drafts that letter with the arithmetic shown so the recipient can check it.
|
|
6
|
-
|
|
7
|
-
## Steps
|
|
8
|
-
|
|
9
|
-
1. Work out time on site: departure minus arrival, in hours and minutes.
|
|
10
|
-
2. Subtract the free time. If the result is zero or less, say that no detention is owed and stop.
|
|
11
|
-
3. Bill the remainder in the increments the terms state. If the terms do not state an increment, bill in 15-minute increments rounded down.
|
|
12
|
-
4. Apply the cap if the terms state one.
|
|
13
|
-
5. Write the letter: load number, facility, the timestamps, the calculation line by line, the amount claimed, and a reply-by date 14 days from the letter date.
|
|
14
|
-
6. End the output with one line listing what evidence to attach (the signed bill of lading with in and out times).
|
|
15
|
-
|
|
16
|
-
## Never
|
|
17
|
-
|
|
18
|
-
- Never claim an amount without showing the timestamps it came from.
|
|
19
|
-
- Never round time on site up.
|
|
20
|
-
- Never state that payment is overdue; this is a first claim.
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
name: detention-claim-letter
|
|
2
|
-
summary: Drafts a detention claim letter to a shipper or receiver from the gate timestamps and the free-time terms.
|
|
3
|
-
owner: claims
|
|
4
|
-
category: claims
|
|
5
|
-
inputs:
|
|
6
|
-
- arrival and departure timestamps at the facility
|
|
7
|
-
- the free time and hourly detention rate that apply
|
|
8
|
-
- who the letter is addressed to
|
|
9
|
-
related:
|
|
10
|
-
- rate-con-extractor
|
|
11
|
-
network: false
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
- name: three-hours-over
|
|
2
|
-
input: Arrived 07:10, departed 12:10 at Halvorsen Cold Storage. 2 hours free, $60/hr. Load LF-207733. Address it to Halvorsen's receiving manager.
|
|
3
|
-
expect:
|
|
4
|
-
- time on site is 5 hours and billable time is 3 hours
|
|
5
|
-
- the amount claimed is 180.00
|
|
6
|
-
- the reply-by date is 14 days after the letter date
|
|
7
|
-
- name: inside-free-time
|
|
8
|
-
input: Arrived 09:00, departed 10:45. 2 hours free, $75/hr. Load LF-207801, to Pellham Distribution.
|
|
9
|
-
expect:
|
|
10
|
-
- the reply says no detention is owed
|
|
11
|
-
- no letter is drafted
|
|
12
|
-
- name: cap-applies
|
|
13
|
-
input: Arrived 06:00, departed 17:30 at Norcastle Foods. 2 hours free, $60/hr, max $480. Load LF-207950.
|
|
14
|
-
expect:
|
|
15
|
-
- the uncapped figure 570.00 is shown and the claim is 480.00
|
|
16
|
-
- name: partial-increment
|
|
17
|
-
input: Arrived 13:05, departed 16:25. 2 hours free, $60/hr. Load LF-208010, to Wexcombe Mills.
|
|
18
|
-
expect:
|
|
19
|
-
- billable time is 1 hour 15 minutes, not 1 hour 20 minutes
|
|
20
|
-
- the amount claimed is 75.00
|
|
21
|
-
- name: no-rate-given
|
|
22
|
-
input: Driver sat at Halvorsen for six hours yesterday on LF-208122, write the detention letter.
|
|
23
|
-
expect:
|
|
24
|
-
- the reply says the timestamps, the free time and the hourly rate are missing
|
|
25
|
-
- no amount is claimed
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# rate-con-extractor
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
A rate confirmation is the agreement between Larkfield and a carrier for one load. Billing needs its numbers in a fixed shape before anything can be checked against it. This skill reads one rate confirmation and returns those numbers as a table.
|
|
6
|
-
|
|
7
|
-
## Steps
|
|
8
|
-
|
|
9
|
-
1. Find the load number, the carrier name, the pickup and delivery dates.
|
|
10
|
-
2. Find the linehaul rate. Record whether it is a flat amount or a per-mile rate, and the miles if per-mile.
|
|
11
|
-
3. Find the fuel surcharge. Record it as written: a percentage of linehaul, a per-mile amount, or a flat amount.
|
|
12
|
-
4. List every accessorial the document names (detention, lumper, layover, stop-off, tarp) with its rate and any free time or cap.
|
|
13
|
-
5. Return one table: field, value, and the line of the document the value came from.
|
|
14
|
-
6. List any field in steps 1 to 4 that the document does not state, under "Not stated".
|
|
15
|
-
|
|
16
|
-
## Never
|
|
17
|
-
|
|
18
|
-
- Never calculate a total. This skill extracts; it does not add up.
|
|
19
|
-
- Never fill a missing field from what is usual for the lane or the carrier.
|
|
20
|
-
- Never merge two rate confirmations into one table.
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
- name: flat-linehaul-percent-fuel
|
|
2
|
-
input: |
|
|
3
|
-
RATE CONFIRMATION Load LF-208841 Carrier: Brightwater Haulage
|
|
4
|
-
Pickup 03/04 Delivery 03/06
|
|
5
|
-
Linehaul: $1,850.00 flat Fuel surcharge: 18% of linehaul
|
|
6
|
-
Detention: $60/hr after 2 hrs free, max $480
|
|
7
|
-
expect:
|
|
8
|
-
- the table has linehaul 1850.00 marked flat
|
|
9
|
-
- fuel surcharge is recorded as 18% of linehaul, not as a dollar amount
|
|
10
|
-
- detention is listed with 60 per hour, 2 hours free and the 480 cap
|
|
11
|
-
- name: per-mile-linehaul
|
|
12
|
-
input: |
|
|
13
|
-
Load LF-209112 Carrier: Copperline Transport
|
|
14
|
-
Linehaul $2.35/mi x 612 mi FSC $0.48/mi
|
|
15
|
-
expect:
|
|
16
|
-
- linehaul is recorded as 2.35 per mile with 612 miles
|
|
17
|
-
- no total is calculated
|
|
18
|
-
- name: no-fuel-surcharge-stated
|
|
19
|
-
input: |
|
|
20
|
-
Load LF-209377 Carrier: Ashgrove Carriers Linehaul $940 flat Lumper: reimbursed with receipt
|
|
21
|
-
expect:
|
|
22
|
-
- fuel surcharge appears under Not stated
|
|
23
|
-
- no fuel surcharge figure is given
|
|
24
|
-
- name: two-documents-pasted
|
|
25
|
-
input: two rate confirmations pasted one after the other, loads LF-209400 and LF-209401
|
|
26
|
-
expect:
|
|
27
|
-
- the output is two separate tables or a request to send one at a time
|
|
28
|
-
- name: nothing-supplied
|
|
29
|
-
input: Extract the rate con for load LF-209500.
|
|
30
|
-
expect:
|
|
31
|
-
- the reply says the rate confirmation text is missing
|
|
32
|
-
- no rates are given
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
# Contributing a skill
|
|
2
|
-
|
|
3
|
-
Harrowgate University Library, Systems & Discovery team. Last revised 12 March 2026.
|
|
4
|
-
|
|
5
|
-
Skills are short instruction files our staff assistant loads when a member of staff
|
|
6
|
-
asks for a particular job. Six of us maintain them. Keep them small.
|
|
7
|
-
|
|
8
|
-
## Layout
|
|
9
|
-
|
|
10
|
-
Each skill is one folder under `skills/`:
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
skills/<name>/
|
|
14
|
-
skill.toml metadata
|
|
15
|
-
PROMPT.md the instructions the assistant follows
|
|
16
|
-
examples/
|
|
17
|
-
01-input.md what a member of staff would paste
|
|
18
|
-
01-expected.md what a good answer looks like
|
|
19
|
-
02-input.md
|
|
20
|
-
...
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
At least three input/expected pairs. One of them must be an awkward case (missing
|
|
24
|
-
field, contradictory request, nothing to do).
|
|
25
|
-
|
|
26
|
-
Since March 2026 metadata lives in `skill.toml`. A few older skills still carry a
|
|
27
|
-
`meta.json` until someone migrates them. New skills must not add one.
|
|
28
|
-
|
|
29
|
-
## skill.toml
|
|
30
|
-
|
|
31
|
-
```toml
|
|
32
|
-
name = "summarise-reading-list" # same as the folder name
|
|
33
|
-
summary = "One sentence, 120 characters at most."
|
|
34
|
-
category = "cataloguing" # one of the categories in registry.json
|
|
35
|
-
maintainer = "alias@harrowgate.example"
|
|
36
|
-
handles_patron_data = false
|
|
37
|
-
version = "0.1.0" # new skills start at 0.1.0
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## Naming
|
|
41
|
-
|
|
42
|
-
- lowercase, words joined with hyphens
|
|
43
|
-
- starts with a verb (`summarise-`, `flag-`, `draft-`)
|
|
44
|
-
- no abbreviations a new member of staff would not know. Write `interlibrary-loan`,
|
|
45
|
-
not `ill`; write `reading-list`, not `rl`.
|
|
46
|
-
- 40 characters at most
|
|
47
|
-
|
|
48
|
-
## Patron data
|
|
49
|
-
|
|
50
|
-
If the input a skill receives can contain patron names, library card numbers or
|
|
51
|
-
contact details, set `handles_patron_data = true`, and PROMPT.md must tell the
|
|
52
|
-
assistant never to repeat a library card number in its output (refer to the patron
|
|
53
|
-
by name or by request number instead).
|
|
54
|
-
|
|
55
|
-
## Registry
|
|
56
|
-
|
|
57
|
-
Add one entry for the skill to the `skills` list in `registry.json` (name, category,
|
|
58
|
-
maintainer). Keep the list in alphabetical order by name.
|
|
59
|
-
|
|
60
|
-
## Before you open a pull request
|
|
61
|
-
|
|
62
|
-
Run `python3 tools/lint_skills.py` from the repo root. It checks the layout, the
|
|
63
|
-
naming rules and that every skill is in the registry.
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"categories": ["acquisitions", "cataloguing", "circulation", "resource-sharing"],
|
|
3
|
-
"skills": [
|
|
4
|
-
{
|
|
5
|
-
"name": "flag-overdue-holds",
|
|
6
|
-
"category": "circulation",
|
|
7
|
-
"maintainer": "circdesk@harrowgate.example"
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"name": "summarise-reading-list",
|
|
11
|
-
"category": "cataloguing",
|
|
12
|
-
"maintainer": "metadata@harrowgate.example"
|
|
13
|
-
}
|
|
14
|
-
]
|
|
15
|
-
}
|
package/packs/dev-team/skills/contribution-wizard/evals/files/4/skills/flag-overdue-holds/PROMPT.md
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# flag-overdue-holds
|
|
2
|
-
|
|
3
|
-
You are given the hold-shelf report: one line per item with request number, title,
|
|
4
|
-
patron name, card number and the date the item was shelved.
|
|
5
|
-
|
|
6
|
-
1. List every item shelved more than 7 days before the report date, oldest first.
|
|
7
|
-
2. For each, give the request number, the title and the patron's name.
|
|
8
|
-
3. Never repeat a library card number. Refer to the patron by name.
|
|
9
|
-
|
|
10
|
-
If nothing is over 7 days, say so.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Nothing on the hold shelf is over 7 days.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Nothing can be flagged: R-88171 (Waterlog, Petra Havel) has no shelved date.
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# summarise-reading-list
|
|
2
|
-
|
|
3
|
-
You are given a module reading list pasted from the reading list system: one item
|
|
4
|
-
per line, with title, author, year, format and a `held` column (yes/no).
|
|
5
|
-
|
|
6
|
-
1. Count the items by format (book, e-book, article, other).
|
|
7
|
-
2. List every item where `held` is `no`, with title, author and year.
|
|
8
|
-
3. If a line has no `held` value, list it separately under "Holding not stated".
|
|
9
|
-
Do not guess.
|
|
10
|
-
|
|
11
|
-
Never add items that are not in the pasted list. If the list is empty, say so and stop.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
The reading list for ENG3300 has no items.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Module ENG3300
|