skilldrop-cli 1.4.0 → 1.5.0
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/README.md +6 -6
- package/bin/skilldrop.js +15 -10
- package/catalogue.json +5 -1
- package/contracts/catalogue.schema.json +2 -1
- package/model-routing.json +8 -8
- package/package.json +1 -1
- package/packs/ai-engineering/skills/judge-audit/SKILL.md +28 -11
- package/packs/ai-engineering/skills/judge-audit/evals/evals.json +30 -0
- package/packs/ai-engineering/skills/judge-audit/evals/files/12/judge_runs.csv +241 -0
- package/packs/ai-engineering/skills/judge-audit/evals/files/12/rosa_labels.csv +33 -0
- package/packs/ai-engineering/skills/judge-audit/evals/files/13/moderation_eval.csv +601 -0
- package/packs/ai-engineering/skills/judge-audit/manifest.json +2 -2
- package/packs/ai-engineering/skills/mcp-pairing/manifest.json +1 -1
- package/packs/ai-engineering/skills/mcp-pairing/reference.md +4 -3
- package/packs/ai-engineering/skills/subagent-design/SKILL.md +1 -0
- package/packs/ai-engineering/skills/subagent-design/examples/help-center-localization.md +146 -0
- package/packs/ai-engineering/skills/subagent-design/manifest.json +2 -2
- package/packs/api-builder/skills/prompt-caching-advisor/SKILL.md +4 -0
- package/packs/api-builder/skills/prompt-caching-advisor/examples/support-bot-block-order.md +120 -0
- package/packs/api-builder/skills/prompt-caching-advisor/manifest.json +2 -2
- package/packs/dev-team/loops/release/LOOP.md +4 -4
- package/packs/dev-team/loops/release/loop.json +1 -1
- package/packs/dev-team/skills/bug-triage/SKILL.md +1 -0
- package/packs/dev-team/skills/bug-triage/examples/export-row-limit-escalation.md +126 -0
- package/packs/dev-team/skills/bug-triage/manifest.json +2 -2
- package/packs/product-manager/skills/prd-draft/SKILL.md +1 -0
- package/packs/product-manager/skills/prd-draft/examples/approver-delay-not-slack.md +142 -0
- package/packs/product-manager/skills/prd-draft/manifest.json +2 -2
- package/profiles.json +1 -1
- package/packs/ai-engineering/loops/adopt/LOOP.md +0 -120
- package/packs/ai-engineering/loops/adopt/evals/eval_queries.json +0 -10
- package/packs/ai-engineering/loops/adopt/evals/evals.json +0 -69
- package/packs/ai-engineering/loops/adopt/evals/files/adopt-first-wave-to-sign-off/ai-ideas.md +0 -15
- package/packs/ai-engineering/loops/adopt/evals/files/adopt-first-wave-to-sign-off/org-context.md +0 -27
- package/packs/ai-engineering/loops/adopt/evals/files/adopt-first-wave-to-sign-off/staff-survey.csv +0 -11
- package/packs/ai-engineering/loops/adopt/evals/files/adopt-sponsor-slice-blocked-by-client-data/ai-ideas.md +0 -13
- package/packs/ai-engineering/loops/adopt/evals/files/adopt-sponsor-slice-blocked-by-client-data/firm-context.md +0 -23
- package/packs/ai-engineering/loops/adopt/loop.json +0 -53
- package/packs/career/loops/apply/LOOP.md +0 -97
- package/packs/career/loops/apply/evals/eval_queries.json +0 -9
- package/packs/career/loops/apply/evals/evals.json +0 -55
- package/packs/career/loops/apply/evals/files/apply-candidate-decided-full-run/application-form.md +0 -10
- package/packs/career/loops/apply/evals/files/apply-candidate-decided-full-run/job-posting.md +0 -33
- package/packs/career/loops/apply/evals/files/apply-candidate-decided-full-run/resume.md +0 -34
- package/packs/career/loops/apply/evals/files/apply-fit-gate-hard-requirement/cv.md +0 -27
- package/packs/career/loops/apply/evals/files/apply-fit-gate-hard-requirement/warehouse-supervisor.md +0 -30
- package/packs/career/loops/apply/loop.json +0 -52
- package/packs/product-manager/loops/discover/LOOP.md +0 -82
- package/packs/product-manager/loops/discover/evals/eval_queries.json +0 -30
- package/packs/product-manager/loops/discover/evals/evals.json +0 -54
- package/packs/product-manager/loops/discover/evals/files/discover-no-show-signal/interview-notes.md +0 -63
- package/packs/product-manager/loops/discover/evals/files/discover-no-show-signal/support-tickets.csv +0 -13
- package/packs/product-manager/loops/discover/evals/files/discover-vp-loyalty-no-evidence/vp-message.txt +0 -13
- package/packs/product-manager/loops/discover/loop.json +0 -41
- package/packs/sre-oncall/loops/operate/LOOP.md +0 -84
- package/packs/sre-oncall/loops/operate/evals/eval_queries.json +0 -30
- package/packs/sre-oncall/loops/operate/evals/evals.json +0 -53
- package/packs/sre-oncall/loops/operate/evals/files/operate-export-service-first-outage/alerts.log +0 -22
- package/packs/sre-oncall/loops/operate/evals/files/operate-export-service-first-outage/incident-chat.txt +0 -27
- package/packs/sre-oncall/loops/operate/evals/files/operate-export-service-first-outage/service-notes.md +0 -46
- package/packs/sre-oncall/loops/operate/evals/files/operate-incident-still-open/oncall-log.txt +0 -17
- package/packs/sre-oncall/loops/operate/evals/files/operate-incident-still-open/runbook-webhooks.md +0 -38
- package/packs/sre-oncall/loops/operate/loop.json +0 -41
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Worked example: a "Slack approvals" brief whose data describes a different problem
|
|
2
|
+
|
|
3
|
+
Input → output oracle for `prd-draft`. Shows a solution-shaped brief rewritten as the problem
|
|
4
|
+
its own data describes, an unsupported goal replaced by one the data can measure, and a policy
|
|
5
|
+
constraint that the brief's "one click" pitch would have broken.
|
|
6
|
+
|
|
7
|
+
## Input
|
|
8
|
+
|
|
9
|
+
> Write the PRD for Slack approvals so eng can start next sprint. Sales says it's the #1 ask.
|
|
10
|
+
> Two pages max. Everything I have is below.
|
|
11
|
+
>
|
|
12
|
+
> **brief.md (Head of Sales):**
|
|
13
|
+
> Problem: we don't have a Slack integration and competitors do. Customers ask for it
|
|
14
|
+
> constantly. Solution: Slack approvals, so managers approve expenses with one click right in
|
|
15
|
+
> Slack. Seamless. Must use Slack Block Kit interactive messages. Goal: cut churn by 15%. Has
|
|
16
|
+
> to ship before the Ledgerline Summit on 2027-03-09.
|
|
17
|
+
>
|
|
18
|
+
> **crm-summary.md:**
|
|
19
|
+
> - Feature requests tagged "slack": 14 requests from 9 accounts in the last 12 months, out of
|
|
20
|
+
> 1,340 paying accounts.
|
|
21
|
+
> - Requests tagged "approval reminders" or "approve from phone": 31 requests from 22 accounts.
|
|
22
|
+
>
|
|
23
|
+
> **product-analytics.md:**
|
|
24
|
+
> - Median time an expense waits at the approver step: 4.6 days. Median time in all other
|
|
25
|
+
> steps combined: 0.8 days.
|
|
26
|
+
> - Of reimbursements paid late (more than 10 days after submission, the SLA in our customer
|
|
27
|
+
> contracts), 58% waited on an approver for more than 5 days.
|
|
28
|
+
> - Chat tool connected, by account: Slack 38%, Microsoft Teams 27%, none 35%.
|
|
29
|
+
> - Approvers who open the email notification approve a median of 1.1 days after it is sent.
|
|
30
|
+
>
|
|
31
|
+
> **policy.md (Finance and Security):**
|
|
32
|
+
> - Approving an expense over $2,500 requires the approver to be signed in with MFA.
|
|
33
|
+
> - Approvers cannot edit amounts. They can approve, reject with a reason, or return for changes.
|
|
34
|
+
|
|
35
|
+
## Output
|
|
36
|
+
|
|
37
|
+
```markdown
|
|
38
|
+
# PRD: Faster approver decisions on submitted expenses
|
|
39
|
+
|
|
40
|
+
**Status:** draft · **Owner:** Product Manager, Approvals · **Date:** 2026-11-05
|
|
41
|
+
**Binding constraint:** fixed deadline, ship before 2027-03-09 `[reported by Head of Sales]`
|
|
42
|
+
|
|
43
|
+
## Problem
|
|
44
|
+
|
|
45
|
+
Employees wait for reimbursement mainly because expenses sit with their approver. The median
|
|
46
|
+
wait at the approver step is 4.6 days, against 0.8 days for every other step combined
|
|
47
|
+
`[data: product analytics]`. Of the reimbursements that miss the 10-day contractual SLA, 58%
|
|
48
|
+
waited on an approver for more than 5 days `[data: product analytics]`. Approvers who open the
|
|
49
|
+
notification email act in a median of 1.1 days `[data: product analytics]`, which suggests the
|
|
50
|
+
delay is in noticing and getting to the request rather than in deciding `[assumption]`.
|
|
51
|
+
Customers ask about this in several forms: 31 requests from 22 accounts for reminders or
|
|
52
|
+
approving from a phone, and 14 requests from 9 accounts for Slack `[data: CRM]`.
|
|
53
|
+
|
|
54
|
+
## Users
|
|
55
|
+
|
|
56
|
+
**Primary:** a manager who approves their team's expenses, works mostly outside the expense
|
|
57
|
+
app, and gets to approvals in batches. Job-to-be-done: clear the pending requests without
|
|
58
|
+
setting time aside to log in.
|
|
59
|
+
**Secondary (explicitly deprioritized):** employees who submit expenses. They feel the delay
|
|
60
|
+
but cannot shorten it. Finance admins, who chase late approvals today, benefit indirectly.
|
|
61
|
+
|
|
62
|
+
## Goals
|
|
63
|
+
|
|
64
|
+
| # | Goal | We'll know it worked when |
|
|
65
|
+
|---|---|---|
|
|
66
|
+
| G1 | Approvers decide sooner | Median approver-step time drops from 4.6 to ≤ 2.0 days within 90 days of GA `[target: assumption]` |
|
|
67
|
+
| G2 | Fewer reimbursements miss the contractual SLA | The share of reimbursements paid after 10 days falls by a third within 90 days of GA `[baseline needed]` |
|
|
68
|
+
|
|
69
|
+
Full measurement design (instrumentation, guardrails, decision rule): hand to `success-metrics`.
|
|
70
|
+
|
|
71
|
+
## Requirements
|
|
72
|
+
|
|
73
|
+
| ID | Requirement (testable, solution-free) | MoSCoW | Maps to goal |
|
|
74
|
+
|---|---|---|---|
|
|
75
|
+
| R1 | An approver can approve, reject with a reason, or return for changes on an expense of $2,500 or less, from the notification itself, without signing in to the web app | M | G1 |
|
|
76
|
+
| R2 | For an expense over $2,500, the same notification takes the approver to a signed-in, MFA-verified screen to decide | M | G1 |
|
|
77
|
+
| R3 | The notification shows employee, amount, category, date and receipt thumbnail, enough to decide without opening the expense | M | G1 |
|
|
78
|
+
| R4 | An approver with any pending request older than 2 days gets one reminder per day, listing all of them | S | G1, G2 |
|
|
79
|
+
| R5 | The approver can act from at least one channel that reaches accounts with no chat tool connected | S | G2 |
|
|
80
|
+
| R6 | A decision made from a notification shows in the expense's audit history with time and channel | M | G1 |
|
|
81
|
+
| R7 | An approver can approve several pending requests in one action | C | G1 |
|
|
82
|
+
|
|
83
|
+
**Won't have (this version):**
|
|
84
|
+
- Editing amounts from a notification: policy forbids approvers editing amounts at all
|
|
85
|
+
- Decisions on expenses over $2,500 without MFA, however the notification is delivered
|
|
86
|
+
|
|
87
|
+
## Non-goals (minimum 3 — the scope-creep firewall)
|
|
88
|
+
|
|
89
|
+
- **Submitting expenses from chat:** the delay is at approval, not submission. Revisit if
|
|
90
|
+
submission time becomes the bottleneck.
|
|
91
|
+
- **Every chat tool in v1:** Slack reaches 38% of accounts and Teams 27% `[data]`. Which
|
|
92
|
+
channels ship first is a design decision, made against those numbers and the deadline.
|
|
93
|
+
- **Finance-admin bulk overrides:** a different user with a different authorization surface.
|
|
94
|
+
- **Churn reduction as a v1 target:** nothing in the inputs links approval time to churn. The
|
|
95
|
+
brief's "−15% churn" is out until someone produces that link.
|
|
96
|
+
|
|
97
|
+
## Quality targets
|
|
98
|
+
|
|
99
|
+
A decision taken from a notification shows in the web app within 10 seconds `[assumption]`.
|
|
100
|
+
MFA rule as in policy. Full treatment → `nfr-spec`.
|
|
101
|
+
|
|
102
|
+
## Open questions
|
|
103
|
+
|
|
104
|
+
| Question | Owner | Needed by |
|
|
105
|
+
|---|---|---|
|
|
106
|
+
| Which channel(s) ship first given the 38% / 27% / 35% split and the 2027-03-09 date? | Eng lead + PM | 2026-11-19 |
|
|
107
|
+
| What is the current share of reimbursements paid after 10 days (G2 baseline)? | Data analyst | 2026-11-12 |
|
|
108
|
+
| Is there any evidence linking approval delay to churn? | Head of Sales | 2026-11-26 |
|
|
109
|
+
| Can a decision from a notification count as "signed in" for the audit trail Finance needs? | Security lead | 2026-11-19 |
|
|
110
|
+
|
|
111
|
+
## Assumptions log
|
|
112
|
+
|
|
113
|
+
- [assumption] The delay is in noticing requests, not deciding them. Challenge by checking time-to-open versus time-to-decide by 2026-11-19.
|
|
114
|
+
- [assumption] The G1 target of ≤ 2.0 days. Challenge in requirements review.
|
|
115
|
+
|
|
116
|
+
## Handoffs
|
|
117
|
+
|
|
118
|
+
- Stories & slicing → `user-story-splitter`
|
|
119
|
+
- Quality targets → `nfr-spec`
|
|
120
|
+
- Measurement → `success-metrics`
|
|
121
|
+
- Technical approach (including the Block Kit question in the brief) → `design-doc`
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Why this is the oracle
|
|
125
|
+
|
|
126
|
+
- **The problem statement passes the alternative-solution test.** The brief's problem, "we
|
|
127
|
+
don't have a Slack integration", is the absence of a solution. The data describes approvers
|
|
128
|
+
sitting on requests. Daily reminders, email actions, Teams, mobile push and Slack could each
|
|
129
|
+
follow from the rewritten paragraph. That matters here because Slack alone reaches 38% of
|
|
130
|
+
accounts.
|
|
131
|
+
- **Every claim is tagged to its source and every goal can be measured.** "Customers ask
|
|
132
|
+
constantly" becomes 14 requests from 9 of 1,340 accounts, set beside the 31 requests from 22
|
|
133
|
+
accounts for reminders. The −15% churn goal has no support in the inputs, so it moves to the
|
|
134
|
+
non-goals with the reason, and G1 measures something the analytics already track.
|
|
135
|
+
- **Requirements are testable and free of implementation.** "Must use Block Kit" goes to
|
|
136
|
+
design. "One click, seamless" becomes R1, which a tester can pass or fail. R2 carries the
|
|
137
|
+
$2,500 MFA rule, which the brief's pitch would have broken.
|
|
138
|
+
|
|
139
|
+
A cheaper pass writes "Problem: competitors have Slack approvals and we don't", makes every
|
|
140
|
+
line in the brief a Must, keeps "cut churn 15%" as G1 and "use Block Kit" as R1, and specifies
|
|
141
|
+
one-click approval for every amount. That PRD ships a feature that 62% of accounts cannot
|
|
142
|
+
use, measures it against a number nothing supports, and fails a security review in sprint 4.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prd-draft",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Draft a Product Requirements Document from a feature idea or brief — evidence-backed problem statement with zero solution language, testable MoSCoW-prioritized requirements, mandatory non-goals, and a success line per goal. Use when the user needs a PRD, wants to capture business requirements for a feature, or asks to turn an idea, pitch, or brief into a requirements doc.",
|
|
5
5
|
"entrypoint": "SKILL.md",
|
|
6
6
|
"deps": { "npm": [], "pip": [] },
|
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
{ "to": "design-doc", "when": "the what is agreed and the how is open", "purpose": "Design the system that satisfies these requirements.", "fallback": "If design-doc is absent, write the approach, the alternatives, and the trade-offs inline." }
|
|
13
13
|
],
|
|
14
14
|
"tags": ["prd", "requirements", "product", "discovery", "moscow", "non-goals"],
|
|
15
|
-
"model": { "tier": "
|
|
15
|
+
"model": { "tier": "heavy", "rationale": "Measured (RFC-0073): on its held-out evals the heavy tier met 85% and 76% of checks in two tier trials, against standard's 68% and light's 68% and 68%, more than 5 points ahead both times; moved once its examples/ oracle shipped (RFC-0074)." }
|
|
16
16
|
}
|
package/profiles.json
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"description": "The complete catalogue: every pack, every reviewer agent, every loop.",
|
|
19
19
|
"packs": ["core", "solution-architect", "product-manager", "dev-team", "sre-oncall", "stakeholder-comms", "design", "ai-engineering", "api-builder", "converters", "experience-design", "research", "trackers", "data-analytics", "grc", "infra-as-code", "skill-engineering", "career"],
|
|
20
20
|
"agents": ["devils-advocate", "security-reviewer", "code-quality"],
|
|
21
|
-
"loops": ["
|
|
21
|
+
"loops": ["design", "build", "release", "ship-a-draft", "research", "comply", "measure", "modernize", "ship-agent", "provision", "clarify"]
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: adopt
|
|
3
|
-
description: Take an organisation from a pile of AI ideas to a first rollout wave its sponsor approved: the use cases ranked with a first slice, readiness scored against that slice, a usage policy covering the data the slice touches, and a cohort rollout whose first wave is the slice's users, with a gate that sends the slice back when a blocking gap stands in its way. Use when the user says "help us start using AI", "roll out AI across the team", "run the adopt loop", or has AI ideas, no policy and no rollout plan.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# adopt
|
|
7
|
-
|
|
8
|
-
One first slice, from a list of ideas to a wave of people using it. The four skills each work
|
|
9
|
-
alone; in order, each one narrows the next. Triage picks one use case, so readiness is scored
|
|
10
|
-
against what that use case needs instead of against the whole organisation. Readiness names the
|
|
11
|
-
gaps, so the policy covers the data the slice really touches. The rollout's pilot is the slice's
|
|
12
|
-
own users, and its adoption gate is the observable triage said would prove or kill the slice.
|
|
13
|
-
|
|
14
|
-
## Stages
|
|
15
|
-
|
|
16
|
-
| # | Stage | Type | Skills | Gate |
|
|
17
|
-
|---|---|---|---|---|
|
|
18
|
-
| 1 | `triage` | generate | [`ai-use-case-triage`](../../skills/ai-use-case-triage/SKILL.md) | — |
|
|
19
|
-
| 2 | `readiness` | verify | [`ai-readiness-assessment`](../../skills/ai-readiness-assessment/SKILL.md) | **G11** review |
|
|
20
|
-
| 3 | `policy` | generate | [`ai-usage-policy`](../../skills/ai-usage-policy/SKILL.md) | — |
|
|
21
|
-
| 4 | `rollout` | generate | [`ai-adoption-rollout`](../../skills/ai-adoption-rollout/SKILL.md) | — |
|
|
22
|
-
| 5 | `sign-off` | gate | [`doc-critique`](../../../core/skills/doc-critique/SKILL.md) | **G11.1** human |
|
|
23
|
-
|
|
24
|
-
## How to run this loop
|
|
25
|
-
|
|
26
|
-
1. **Triage the ideas.** Run `ai-use-case-triage` on whatever the person brought: a brainstorm,
|
|
27
|
-
a backlog, interview notes. Save it as `triage.md`. Carry three things from it into every
|
|
28
|
-
later stage: the first slice (one workflow and the people who do it), the observable that
|
|
29
|
-
proves or kills it, and the time box.
|
|
30
|
-
2. **Score readiness for the slice.** Run `ai-readiness-assessment` scoped to the slice's team
|
|
31
|
-
and the decision "can this slice start". Each dimension is read against what the slice
|
|
32
|
-
needs: Data is the data the slice reads, Tooling is the tool the slice uses, Process is the
|
|
33
|
-
review step the slice's output passes through. Save it as `readiness.md`.
|
|
34
|
-
3. **Judge the slice at G11.** Ask three questions, then choose the verdict below:
|
|
35
|
-
- Does any gap the assessment ranks as blocking sit on something the slice needs?
|
|
36
|
-
- Can each remaining gap be closed inside the slice's time box, with an owner role named?
|
|
37
|
-
- Is there a review step where a person checks the slice's output before anyone acts on it?
|
|
38
|
-
4. **On `REVISE`, change the slice, not the scores.** Return to `triage` with the blocking gap
|
|
39
|
-
as a constraint, and pick the highest-ranked candidate that does not need what is missing.
|
|
40
|
-
The not-yet list's promotion conditions say which one. Each return counts against the cap.
|
|
41
|
-
5. **Write the policy for the slice's data.** Run `ai-usage-policy` for the slice's people,
|
|
42
|
-
naming every kind of data the slice puts into a tool (from triage and the Data line of
|
|
43
|
-
readiness). Every kind of data the slice touches gets a rule; a rule for data the slice
|
|
44
|
-
never touches stays out of this version. Save it as `policy.md`.
|
|
45
|
-
6. **Plan the rollout from the slice.** Run `ai-adoption-rollout` with the slice's users as the
|
|
46
|
-
pilot cohort and triage's observable as the pilot's adoption gate. G11's conditions become
|
|
47
|
-
preconditions the pilot cannot open without. Save it as `rollout.md`.
|
|
48
|
-
7. **Ask the sponsor at G11.1.** Run `doc-critique` over the policy and the rollout together,
|
|
49
|
-
then put the first wave, the conditions and the critique's open findings to the person who
|
|
50
|
-
sponsors the slice. Only they choose the verdict. In a non-interactive run, stop here and
|
|
51
|
-
write the decision they need to make; never record their verdict for them.
|
|
52
|
-
8. **Hand over the plan, then the verdict.** Lead with the slice, who starts using it and when,
|
|
53
|
-
and what would end it. The scorecard, the policy and the cohort plan go underneath. Close
|
|
54
|
-
with each gate on its own line, `G11: <VERDICT>` and `G11.1: <VERDICT>` (or
|
|
55
|
-
`G11.1: awaiting <role>`), and one sentence of reasons.
|
|
56
|
-
|
|
57
|
-
## Verdicts
|
|
58
|
-
|
|
59
|
-
Defined in [`contracts/terminals.json`](../../../../contracts/terminals.json). G11 emits:
|
|
60
|
-
|
|
61
|
-
- `PROCEED`: no blocking gap sits on what the slice needs, and its output has a review step.
|
|
62
|
-
- `PROCEED WITH CONDITIONS`: a gap sits on the slice but can close inside the time box, with
|
|
63
|
-
an owner role. Each condition travels into the rollout as a precondition for the pilot.
|
|
64
|
-
- `REVISE`: a blocking gap sits on the slice and won't close inside the time box. Return to
|
|
65
|
-
`triage` with that gap as a constraint.
|
|
66
|
-
- `RECONSIDER`: the gap blocks every candidate, such as no rule for what may go into any tool
|
|
67
|
-
or no tool access at all. Fixing it is the work, so the loop ends here with that gap's first
|
|
68
|
-
action and owner role.
|
|
69
|
-
- `BLOCKED`: no candidates to triage, or no team the slice belongs to.
|
|
70
|
-
|
|
71
|
-
G11.1 emits `PROCEED`, `PROCEED WITH CONDITIONS`, `REVISE` (back to `policy`, when the sponsor
|
|
72
|
-
rejects a rule or a cohort) or `BLOCKED` (no sponsor named).
|
|
73
|
-
|
|
74
|
-
On the cap-th `REVISE` at G11, emit `RECONSIDER`: three slices in a row hit blocking gaps, so
|
|
75
|
-
the gaps are the work.
|
|
76
|
-
|
|
77
|
-
## Non-interactive runs
|
|
78
|
-
|
|
79
|
-
With no candidates, `ai-use-case-triage` emits `BLOCKED`; carry it through as the loop's
|
|
80
|
-
verdict and run no further stages. Missing weights and readiness evidence degrade to the
|
|
81
|
-
skills' own `[assumption]` and `[insufficient evidence]` tags. G11.1 always stops at the
|
|
82
|
-
sponsor: write `G11.1: awaiting <role>` with the decision they face, never a verdict.
|
|
83
|
-
|
|
84
|
-
## When a stage's skill is not installed
|
|
85
|
-
|
|
86
|
-
Name the missing skill and skilldrop as its source, do the minimal inline version of that
|
|
87
|
-
stage, and record that it ran degraded. A degraded `readiness` still scores Data, Tooling,
|
|
88
|
-
Governance and Process against the slice with an evidence line each, because G11 can't be
|
|
89
|
-
judged without them. Never skip G11 or G11.1.
|
|
90
|
-
|
|
91
|
-
## Run log (opt-in)
|
|
92
|
-
|
|
93
|
-
Only when the environment variable `SKILLDROP_LOOP_LOG` is set to a file path: after each
|
|
94
|
-
gate's verdict, append one JSON line to that file. Nothing else is recorded, and nothing is
|
|
95
|
-
sent anywhere. When the variable isn't set, or you can't read it, skip this section.
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
printf '%s\n' '{"ts":"2026-11-03T10:15:00Z","loop":"adopt","stage":"readiness","gate":"G11","verdict":"REVISE","round":1}' >> "$SKILLDROP_LOOP_LOG"
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
Fields: `ts` (UTC), `loop`, `stage`, `gate` (`null` for a stage without one), `verdict` (the
|
|
102
|
-
gate's exact word), and `round` (1 for the first attempt, counting returns under the cap).
|
|
103
|
-
The log holds verdicts only: never the use cases, the scores or the policy.
|
|
104
|
-
`skilldrop loop-stats` summarises the file.
|
|
105
|
-
|
|
106
|
-
## Quality bar
|
|
107
|
-
|
|
108
|
-
- **Readiness is scored against the slice.** An organisation-wide score hides the one gap that stops the slice and flags gaps that stop nothing yet.
|
|
109
|
-
- **A `REVISE` changes the slice.** It never re-scores a dimension upward to let the same slice through.
|
|
110
|
-
- **The policy covers every kind of data the slice touches,** each restriction with what to do instead.
|
|
111
|
-
- **The pilot is the slice's users, and its adoption gate is triage's observable.** A pilot of volunteers from elsewhere proves nothing about the slice.
|
|
112
|
-
- **G11.1 is the sponsor's call.** The loop writes the decision they face; it never records their verdict.
|
|
113
|
-
|
|
114
|
-
## Anti-patterns to avoid
|
|
115
|
-
|
|
116
|
-
- ❌ **Scoring the whole company's readiness first.** The assessment then ranks gaps by how bad they look, not by what they block.
|
|
117
|
-
- ❌ **Writing a policy for every tool and every kind of data before anything ships.** It is long, it is late, and nobody reads the part that matters to the pilot.
|
|
118
|
-
- ❌ **Passing G11 with a blocking gap and a promise.** A gap that won't close inside the time box is a `REVISE`, however good the slice looks.
|
|
119
|
-
- ❌ **A pilot gate that is "the pilot went well".** The gate is triage's observable, with its threshold and time box.
|
|
120
|
-
- ❌ **Running all four skills before the first gate.** A policy and a rollout written for a slice that then fails G11 are thrown away.
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{"query": "help us start using AI in the finance team, we have ideas but no rules and no plan", "should_trigger": true},
|
|
3
|
-
{"query": "run the adopt loop on these AI use cases from the workshop", "should_trigger": true},
|
|
4
|
-
{"query": "we want to roll out AI across the support team: pick where to start, check we're ready, write the rules and plan the waves", "should_trigger": true},
|
|
5
|
-
{"query": "take this list of AI ideas to a first pilot our VP can sign off", "should_trigger": true},
|
|
6
|
-
{"query": "rank these twelve AI use cases by value and risk", "should_trigger": false},
|
|
7
|
-
{"query": "write an AI acceptable-use policy for our staff", "should_trigger": false},
|
|
8
|
-
{"query": "how far along is our engineering team with coding agents?", "should_trigger": false},
|
|
9
|
-
{"query": "design an eval harness for our support chatbot", "should_trigger": false}
|
|
10
|
-
]
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"loop_name": "adopt",
|
|
3
|
-
"evals": [
|
|
4
|
-
{
|
|
5
|
-
"id": "slice-first-then-readiness",
|
|
6
|
-
"prompt": "Run the adopt loop for our 40-person customer operations team at Larkspur Freight. Ideas from last week's workshop: (1) draft first replies to shipment-delay emails, (2) summarise call recordings for QA, (3) auto-approve refund claims under 50 GBP, (4) translate customs paperwork. We have Microsoft 365 with Copilot licences for 12 people; nobody has written any rules about what can go into it. Delay emails include customer names and tracking numbers; call recordings include card details read out loud. QA reviews 5% of calls today. The head of customer operations, Priya Anand, is the sponsor. Non-interactive: no follow-up questions.",
|
|
7
|
-
"assertions": [
|
|
8
|
-
"Runs ai-use-case-triage first and names one first slice with an observable that proves or kills it and a time box",
|
|
9
|
-
"Does not pick auto-approving refunds as the first slice, because its output reaches money without a review step",
|
|
10
|
-
"Scores readiness against the slice's needs (its data, the Copilot licences, its review step), not the whole company in general",
|
|
11
|
-
"Reaches a G11 verdict from PROCEED, PROCEED WITH CONDITIONS, REVISE, RECONSIDER or BLOCKED with the reasons",
|
|
12
|
-
"The policy has a rule for every kind of data the slice puts into a tool, each with what to do instead",
|
|
13
|
-
"The rollout's pilot is the slice's users and its adoption gate is triage's observable",
|
|
14
|
-
"Stops at G11.1 for the sponsor and writes the decision she faces, without recording a verdict for her",
|
|
15
|
-
"Does not invent tools, owners, regulations or figures the prompt did not give"
|
|
16
|
-
]
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"id": "blocking-gap-sends-the-slice-back",
|
|
20
|
-
"prompt": "Continuing the adopt loop. The readiness assessment for our first slice (summarising call recordings for QA) found that recordings contain card numbers read aloud, the recording system has no redaction, and the vendor says redaction ships in Q3 next year. Our time box for the slice was 6 weeks. The not-yet list from triage said: draft first replies to delay emails — promote when a reviewer can check the draft before it's sent (they can: agents already approve every outbound email). What now?",
|
|
21
|
-
"assertions": [
|
|
22
|
-
"Treats the redaction gap as blocking the slice and gives G11 REVISE, not PROCEED WITH CONDITIONS",
|
|
23
|
-
"Returns to triage rather than re-scoring readiness upward",
|
|
24
|
-
"Picks the delay-email drafting slice because its promotion condition is met",
|
|
25
|
-
"Re-scores readiness for the new slice before writing any policy",
|
|
26
|
-
"Counts the new slice's readiness check as round 2 under the cap of 3",
|
|
27
|
-
"Does not write a policy or rollout for the call-summary slice"
|
|
28
|
-
]
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"id": "blocked-without-candidates",
|
|
32
|
-
"prompt": "Run the adopt loop. We want to use more AI. Non-interactive, no follow-up questions.",
|
|
33
|
-
"assertions": [
|
|
34
|
-
"Emits BLOCKED and names what is missing: the candidate use cases and the team they belong to",
|
|
35
|
-
"Does not invent use cases, a team, or a sponsor",
|
|
36
|
-
"Does not run the readiness, policy or rollout stages",
|
|
37
|
-
"Says in plain words what it will produce once it has the candidates"
|
|
38
|
-
]
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"id": "adopt-first-wave-to-sign-off",
|
|
42
|
-
"held_out": "2026-11-03",
|
|
43
|
-
"prompt": "We want to start using AI at Pellmore but honestly it's a pile of ideas and nobody's written any rules. The ideas are in ai-ideas.md, company background is in org-context.md and last month's staff survey is staff-survey.csv. Can you run the adopt loop and get us to a first wave Ruth can sign off?",
|
|
44
|
-
"assertions": [
|
|
45
|
-
"Runs the stages in order (use-case triage, then readiness, then usage policy, then rollout, then sign-off), and each stage uses the previous one's output: readiness is scored against the named first slice, not the company in general",
|
|
46
|
-
"Triage ranks all seven ideas on value, feasibility and risk with the weights shown, names one first slice, and gives a not-yet list with the condition that would promote each",
|
|
47
|
-
"Gate G11 gives a verdict of PROCEED or PROCEED WITH CONDITIONS with an evidence line from the inputs per readiness score, and any conditions it sets show up in the policy or rollout",
|
|
48
|
-
"The usage policy covers the data the chosen slice touches (for delivery-date replies: customer names, addresses, phone numbers and order details from KitchenTrack), pairs every 'don't' with what to do instead, says what to do if data has already gone into a personal account, and addresses the personal-account use the survey found",
|
|
49
|
-
"The rollout's first wave is the chosen slice's users (the 14-person customer service team if the slice is delivery-date replies), fits within the 25 licensed seats, and has an adoption gate before the next wave opens; the comms plan answers the union rep's jobs question by saying what will not change",
|
|
50
|
-
"Stops at G11.1 with the doc-critique findings and asks Ruth Calloway to sign off; it does not record her approval itself or declare the wave approved",
|
|
51
|
-
"Does not invent tools, licences, owners, regulations or figures not in the inputs, such as a second AI vendor, a CRM, or headcounts that differ from org-context.md"
|
|
52
|
-
]
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"id": "adopt-sponsor-slice-blocked-by-client-data",
|
|
56
|
-
"held_out": "2026-11-03",
|
|
57
|
-
"prompt": "Margaret (our managing partner, she's sponsoring this) wants AI drafting replies to client tax queries to be the first thing we do. She's decided, so rank the rest of the ideas around it. Ideas are in ai-ideas.md, background is in firm-context.md. Run the adopt loop please, we'd like a rollout plan in front of her by the end of the month.",
|
|
58
|
-
"assertions": [
|
|
59
|
-
"Triage ranks all six ideas with the weights shown, records client tax-query replies as the first slice as the sponsor decided, and gives a not-yet list",
|
|
60
|
-
"Readiness is scored against the tax-query slice and names as blocking gaps that engagement-letter clause 9.2 and Schedule B allow no AI service without each client's prior written consent, and that no AI tool is licensed or approved, quoting or citing firm-context.md",
|
|
61
|
-
"Gate G11 does not pass: the verdict is REVISE, RECONSIDER or BLOCKED, not PROCEED, and it sends the slice back naming what would clear it (client consent or updated engagement letters and Schedule B, plus a contracted tool) or a slice that touches no client data, such as procedures-manual Q&A or the weekly guidance briefing",
|
|
62
|
-
"States the conflict with Margaret's decision plainly rather than silently swapping in a different slice",
|
|
63
|
-
"Does not write a usage policy or cohort rollout that treats client tax-query replies as cleared to go; if it reruns with a different slice, it scores readiness against that slice before writing the policy and rollout",
|
|
64
|
-
"Does not claim Margaret's approval or reach the G11.1 sign-off for the blocked slice",
|
|
65
|
-
"Does not invent an approved AI tool, a vendor agreement, client consent, or a regulation the inputs do not give"
|
|
66
|
-
]
|
|
67
|
-
}
|
|
68
|
-
]
|
|
69
|
-
}
|
package/packs/ai-engineering/loops/adopt/evals/files/adopt-first-wave-to-sign-off/ai-ideas.md
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# AI ideas: collected from the staff forum and team leads, September 2026
|
|
2
|
-
|
|
3
|
-
1. **Delivery-date replies (Customer service).** About 600 emails a week ask "where's my kitchen / when is my delivery". That's roughly 40% of the inbox. An assistant could draft the reply from the order status in KitchenTrack and the agent checks and sends. Submitted by the customer service team lead.
|
|
4
|
-
|
|
5
|
-
2. **Kitchen renders from sketches (Design).** Turn a designer's hand sketch into a photo-style render to show the customer in the showroom. Today renders take a designer about half a day each. Submitted by two designers.
|
|
6
|
-
|
|
7
|
-
3. **Showroom visit notes (Sales).** Summarise showroom visit notes into a follow-up email. Notes are handwritten in notebooks; there is no CRM. Submitted by a sales manager.
|
|
8
|
-
|
|
9
|
-
4. **Invoice matching (Finance).** Match supplier invoices to purchase orders automatically. Around 900 invoices a month, matched by hand in the accounts package. Supplier price lists are commercially confidential. Submitted by the finance manager.
|
|
10
|
-
|
|
11
|
-
5. **Machine breakdown prediction (Manufacturing).** Predict when the edge-banding and CNC machines will fail. Only 3 of 19 machines have sensors fitted; the rest have paper maintenance logs. Submitted by the factory engineer.
|
|
12
|
-
|
|
13
|
-
6. **Staff handbook Q&A (HR).** A chatbot that answers holiday, sick-pay and shift-swap questions from the staff handbook. HR gets about 40 of these a week. Submitted by HR.
|
|
14
|
-
|
|
15
|
-
7. **Product descriptions (Marketing).** Write website product descriptions from the spec sheets for the 2027 range (about 120 products). Submitted by marketing.
|
package/packs/ai-engineering/loops/adopt/evals/files/adopt-first-wave-to-sign-off/org-context.md
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# Pellmore Kitchens Ltd: background for the AI work
|
|
2
|
-
|
|
3
|
-
## The company
|
|
4
|
-
- Designs, makes and fits fitted kitchens. 240 staff across the factory and the head office/showroom.
|
|
5
|
-
- Teams: Manufacturing 130, Operations and logistics 26, Sales 22, Design 18, Customer service 14, Finance 9, Marketing 8, Leadership 6, HR 4, IT 3.
|
|
6
|
-
|
|
7
|
-
## Sponsor
|
|
8
|
-
- Ruth Calloway, Operations Director, sponsors the AI work and signs off the first rollout wave. She wants a first wave live before the January peak.
|
|
9
|
-
|
|
10
|
-
## Tools
|
|
11
|
-
- Office suite with its enterprise AI chat assistant, licensed since June 2026 for 25 seats. The contract says prompts and files are not used to train models and data is held in the UK/EU. Nobody has been given a seat yet; IT holds all 25.
|
|
12
|
-
- KitchenTrack, the in-house order system. Holds customer names, delivery addresses, phone numbers, email addresses, order lines, prices paid and delivery slots. No API; IT runs a nightly CSV export of order status.
|
|
13
|
-
- Accounts package for finance; no AI features switched on.
|
|
14
|
-
|
|
15
|
-
## Data
|
|
16
|
-
- Customer personal data lives in KitchenTrack and the customer service inbox.
|
|
17
|
-
- Supplier price lists are commercially confidential under the supplier agreements.
|
|
18
|
-
- Staff HR records are held by HR only.
|
|
19
|
-
- The finance manager is also the company's data protection lead (part of the role). There is a data protection policy (2023). There is no AI policy of any kind.
|
|
20
|
-
|
|
21
|
-
## What people are worried about
|
|
22
|
-
- The staff survey (staff-survey.csv) found people already using personal AI accounts at work, including pasting customer emails into chatbots on their phones.
|
|
23
|
-
- The customer service team's union rep has asked whether this is about cutting jobs in customer service.
|
|
24
|
-
- Finance is worried about supplier pricing leaking.
|
|
25
|
-
|
|
26
|
-
## Skills and support
|
|
27
|
-
- No AI training has been run. IT (3 people) can give two days a month to support a rollout.
|
package/packs/ai-engineering/loops/adopt/evals/files/adopt-first-wave-to-sign-off/staff-survey.csv
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
team,respondents,used_ai_at_work_last_month,used_personal_account_for_work,wants_training,worried_about_jobs
|
|
2
|
-
Customer service,12,9,8,11,7
|
|
3
|
-
Sales,15,6,5,9,2
|
|
4
|
-
Design,14,10,7,8,3
|
|
5
|
-
Finance,8,2,1,5,1
|
|
6
|
-
Operations and logistics,10,1,1,4,2
|
|
7
|
-
Marketing,6,6,3,4,1
|
|
8
|
-
Manufacturing,21,0,0,6,9
|
|
9
|
-
HR,4,1,0,3,0
|
|
10
|
-
Leadership,5,3,2,2,0
|
|
11
|
-
IT,3,3,1,0,0
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# AI ideas from the October partners' meeting
|
|
2
|
-
|
|
3
|
-
1. **Client tax-query replies.** Draft replies to client emails asking about their tax position, using the client's file (prior returns, correspondence, working papers). Roughly 350 such emails a month across the tax team; each takes a manager 20 to 40 minutes. Margaret's priority.
|
|
4
|
-
|
|
5
|
-
2. **Bank statement extraction.** Pull transactions from the PDF bank statements clients send in, ready for bookkeeping. About 1,100 statements a month.
|
|
6
|
-
|
|
7
|
-
3. **Client call notes.** Record and summarise client calls into the practice management system.
|
|
8
|
-
|
|
9
|
-
4. **Procedures manual Q&A.** Answer staff questions from the firm's internal procedures manual (onboarding, filing deadlines process, how to raise an invoice). The manual is 140 pages and nobody can find anything in it. No client data in it.
|
|
10
|
-
|
|
11
|
-
5. **Weekly guidance briefing.** Summarise the week's published tax guidance updates into a one-page staff briefing. Uses only public material.
|
|
12
|
-
|
|
13
|
-
6. **Newsletter drafts.** Draft the quarterly client newsletter from the partners' bullet points.
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Corrow Lane Accounting LLP: background
|
|
2
|
-
|
|
3
|
-
## The firm
|
|
4
|
-
- 58 people: 6 partners, 14 in the tax team, 21 in accounts and bookkeeping, 9 in payroll, 8 in practice support (admin, IT, marketing).
|
|
5
|
-
- Around 1,900 clients: sole traders, small companies and some high-net-worth individuals.
|
|
6
|
-
|
|
7
|
-
## Sponsor
|
|
8
|
-
- Margaret Ilsley, managing partner, sponsors the AI work and will sign off any rollout. She has decided client tax-query replies come first.
|
|
9
|
-
|
|
10
|
-
## Systems
|
|
11
|
-
- Client files live on an on-premises file server and in LedgerDesk, the practice management system. LedgerDesk has no AI features and no export API.
|
|
12
|
-
- Email is hosted by our email provider.
|
|
13
|
-
- No AI tool is licensed or approved. In August 2026 the IT manager blocked two public chatbot sites after a junior was seen pasting a client's payslip into one.
|
|
14
|
-
|
|
15
|
-
## Client contracts
|
|
16
|
-
- Every client signs our standard engagement letter. Clause 9.2 reads: "We will not disclose your information to any third party, or process it using third-party services other than those listed in Schedule B, without your prior written consent."
|
|
17
|
-
- Schedule B lists three services: our email hosting provider, our payroll bureau, and our cloud backup provider. Nothing else.
|
|
18
|
-
- Engagement letters are reissued each April.
|
|
19
|
-
|
|
20
|
-
## Other
|
|
21
|
-
- Our professional indemnity insurer's renewal questionnaire, due January 2027, asks whether we use AI on client work and how it is controlled.
|
|
22
|
-
- Practice support has one IT manager and no one with AI experience.
|
|
23
|
-
- Staff survey (informal, September): 31 of 58 said they would use an AI tool if the firm approved one.
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$comment": "RFC-0069. AI ideas to a first rollout wave a sponsor approved. Readiness is scored against the first slice, not the whole organisation, because a gap only blocks the use cases that need what is missing; the gate sits there so a slice that needs it goes back to triage before anyone writes a policy for it.",
|
|
3
|
-
"name": "adopt",
|
|
4
|
-
"version": "0.1.0",
|
|
5
|
-
"description": "Take an organisation from a pile of AI ideas to a first rollout wave its sponsor approved: the use cases ranked with a first slice, readiness scored against that slice, a usage policy covering the data the slice touches, and a cohort rollout whose first wave is the slice's users, with a gate that sends the slice back when a blocking gap stands in its way. Use when the user says \"help us start using AI\", \"roll out AI across the team\", \"run the adopt loop\", or has AI ideas, no policy and no rollout plan.",
|
|
6
|
-
"entrypoint": "LOOP.md",
|
|
7
|
-
"kind": "loop",
|
|
8
|
-
"cap": 3,
|
|
9
|
-
"stages": [
|
|
10
|
-
{
|
|
11
|
-
"id": "triage",
|
|
12
|
-
"type": "generate",
|
|
13
|
-
"intent": "Rank the candidate use cases on value, feasibility and risk with the weights shown, and name one first slice with the observable that would prove or kill it.",
|
|
14
|
-
"skills": ["ai-use-case-triage"]
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
"id": "readiness",
|
|
18
|
-
"type": "verify",
|
|
19
|
-
"intent": "Score readiness against what the first slice needs, and judge whether any blocking gap stands between the slice and its first users.",
|
|
20
|
-
"skills": ["ai-readiness-assessment"],
|
|
21
|
-
"gate": {
|
|
22
|
-
"id": "G11",
|
|
23
|
-
"kind": "review",
|
|
24
|
-
"verdicts": ["PROCEED", "PROCEED WITH CONDITIONS", "REVISE", "RECONSIDER", "BLOCKED"],
|
|
25
|
-
"revise_to": "triage"
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"id": "policy",
|
|
30
|
-
"type": "generate",
|
|
31
|
-
"intent": "Write the usage rules for the people in the slice, covering every kind of data the slice puts into a tool, each restriction paired with what to do instead.",
|
|
32
|
-
"skills": ["ai-usage-policy"]
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"id": "rollout",
|
|
36
|
-
"type": "generate",
|
|
37
|
-
"intent": "Plan the cohorts, enablement, champions and comms, with the slice's users as the pilot and the slice's observable as the pilot's adoption gate.",
|
|
38
|
-
"skills": ["ai-adoption-rollout"]
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"id": "sign-off",
|
|
42
|
-
"type": "gate",
|
|
43
|
-
"intent": "The sponsor approves the first wave, with the policy and the readiness conditions it opens under.",
|
|
44
|
-
"skills": ["doc-critique"],
|
|
45
|
-
"gate": {
|
|
46
|
-
"id": "G11.1",
|
|
47
|
-
"kind": "human",
|
|
48
|
-
"verdicts": ["PROCEED", "PROCEED WITH CONDITIONS", "REVISE", "BLOCKED"],
|
|
49
|
-
"revise_to": "policy"
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
]
|
|
53
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: apply
|
|
3
|
-
description: Take one job posting and one resume to an application ready to send — an honest fit check, a tailored resume, a cover letter and the answers to the application form — with the candidate deciding whether to apply before any writing, and confirming every claim is true before anything is sent. Use when the user wants to apply for a job, says "help me apply for this", or wants a resume and cover letter prepared for one posting.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# apply
|
|
7
|
-
|
|
8
|
-
One application, start to send, for any job. It opens with a gate because the cheapest
|
|
9
|
-
application is the one you decide not to write, and it closes with one because the candidate
|
|
10
|
-
signs these documents and answers for them at interview. Both gates are **human**: an agent
|
|
11
|
-
can say what the resume shows, but only the candidate knows what is true and what they want.
|
|
12
|
-
|
|
13
|
-
## Stages
|
|
14
|
-
|
|
15
|
-
| # | Stage | Type | Skills | Gate |
|
|
16
|
-
|---|---|---|---|---|
|
|
17
|
-
| 1 | `fit` | gate | [`job-fit-analysis`](../../skills/job-fit-analysis/SKILL.md) | **G6** human |
|
|
18
|
-
| 2 | `tailor` | generate | [`resume-tailor`](../../skills/resume-tailor/SKILL.md) | — |
|
|
19
|
-
| 3 | `letter` | generate | [`cover-letter`](../../skills/cover-letter/SKILL.md) | — |
|
|
20
|
-
| 4 | `form` | generate | [`application-form-answers`](../../skills/application-form-answers/SKILL.md) | — |
|
|
21
|
-
| 5 | `confirm` | verify | [`output-hygiene`](../../../core/skills/output-hygiene/SKILL.md) | **G6.1** human |
|
|
22
|
-
|
|
23
|
-
## How to run this loop
|
|
24
|
-
|
|
25
|
-
1. **Check the fit and stop.** Run `job-fit-analysis` on the posting, the resume and any
|
|
26
|
-
other material of the candidate's: a LinkedIn summary, a portfolio, a project. Put its
|
|
27
|
-
verdict, what could get the application rejected and its questions to the candidate,
|
|
28
|
-
including whether anything outside the resume covers a gap, then wait at G6.
|
|
29
|
-
- `PROCEED`: they are applying. Go on.
|
|
30
|
-
- `PROCEED WITH CONDITIONS`: they are applying and have answered the questions. Save
|
|
31
|
-
their answers to `notes.md`; from here on those answers are source material alongside
|
|
32
|
-
the resume.
|
|
33
|
-
- `RECONSIDER`: they are not applying. The loop ends here, and that is a good outcome.
|
|
34
|
-
2. **Tailor the resume.** Run `resume-tailor` with the resume, the posting and `notes.md`
|
|
35
|
-
if it exists. It works in the resume's own format, on a copy. Carry forward its three
|
|
36
|
-
lists: "Not claimed", "Cut" and "Added from outside the resume".
|
|
37
|
-
3. **Write the letter.** Run `cover-letter` with the tailored resume, the posting, `notes.md`
|
|
38
|
-
and the candidate's reason for wanting the job if they gave one. Skip this stage when the
|
|
39
|
-
posting says not to send a letter.
|
|
40
|
-
4. **Answer the form.** When the application has a form with questions beyond uploading
|
|
41
|
-
the documents, run `application-form-answers` with those questions and the tailored
|
|
42
|
-
resume. Skip this stage when there is no form.
|
|
43
|
-
5. **Clean the documents.** Run `output-hygiene` on the resume and the letter.
|
|
44
|
-
6. **Confirm at G6.1.** Show the candidate the documents with four short lists: what the
|
|
45
|
-
posting asks for that the documents do not claim; every fact added from outside the
|
|
46
|
-
resume and where it came from; every line cut from the resume; and the form questions
|
|
47
|
-
that are theirs alone to answer. Ask them to confirm every line is true. `NOT READY` returns to `tailor` with their
|
|
48
|
-
corrections added to `notes.md`. The candidate sends the application; the loop never does.
|
|
49
|
-
|
|
50
|
-
## Verdicts
|
|
51
|
-
|
|
52
|
-
Defined in [`contracts/terminals.json`](../../../../contracts/terminals.json). G6 emits
|
|
53
|
-
`PROCEED`, `PROCEED WITH CONDITIONS`, `RECONSIDER` or `BLOCKED`. G6.1 emits `READY`,
|
|
54
|
-
`NOT READY` or `BLOCKED`. `RECONSIDER` leaves the loop: the candidate's time goes to a
|
|
55
|
-
better posting.
|
|
56
|
-
|
|
57
|
-
## Non-interactive runs
|
|
58
|
-
|
|
59
|
-
With no person present, neither gate can be satisfied. Run `fit`, deliver the analysis and
|
|
60
|
-
emit `BLOCKED: need the candidate's decision to apply`. Do not decide for them, and do not
|
|
61
|
-
produce documents carrying their name that they have not confirmed.
|
|
62
|
-
|
|
63
|
-
## When a stage's skill is not installed
|
|
64
|
-
|
|
65
|
-
Name the missing skill and skilldrop as its source, do the minimal inline version of that
|
|
66
|
-
stage under the same rule (nothing the candidate didn't supply), and record that it ran
|
|
67
|
-
degraded. Never skip G6.1.
|
|
68
|
-
|
|
69
|
-
## Run log (opt-in)
|
|
70
|
-
|
|
71
|
-
Only when the environment variable `SKILLDROP_LOOP_LOG` is set to a file path: after each
|
|
72
|
-
gate's verdict, append one JSON line to that file. Nothing else is recorded, and nothing is
|
|
73
|
-
sent anywhere. When the variable isn't set, or you can't read it, skip this section.
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
printf '%s\n' '{"ts":"2026-10-05T14:03:00Z","loop":"apply","stage":"fit","gate":"G6","verdict":"PROCEED","round":1}' >> "$SKILLDROP_LOOP_LOG"
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Fields: `ts` (UTC), `loop`, `stage`, `gate` (`null` for a stage without one), `verdict` (the
|
|
80
|
-
gate's exact word), and `round` (1 for the first attempt, counting returns under the cap).
|
|
81
|
-
The log holds verdicts only: never the posting, the resume or the candidate's name.
|
|
82
|
-
|
|
83
|
-
## Quality bar
|
|
84
|
-
|
|
85
|
-
- **The candidate decides to apply before anything is written.** A tailored resume for a job they would have skipped is wasted work.
|
|
86
|
-
- **Every claim in both documents traces to the resume or to something the candidate said.** Answers given at G6 are written to `notes.md`, so the trace exists.
|
|
87
|
-
- **The resume, the letter and the form agree.** Same titles, dates and numbers in all three.
|
|
88
|
-
- **The candidate confirms and sends.** G6.1 is their signature; the loop never submits an application.
|
|
89
|
-
|
|
90
|
-
## Anti-patterns to avoid
|
|
91
|
-
|
|
92
|
-
- ❌ **Skipping `fit` because the candidate is keen.** The screening requirements are what they most need to see before investing the time.
|
|
93
|
-
- ❌ **Treating a `Not shown` item as true** because the candidate proceeded. Only what they answered goes in.
|
|
94
|
-
- ❌ **Writing the letter from the original resume.** The letter follows the tailored one, or the two will disagree.
|
|
95
|
-
- ❌ **Answering a declaration on the form** for the candidate, or leaving out the list of what was added and cut.
|
|
96
|
-
- ❌ **Self-confirming at G6.1.** A clean claim check says the words are in the source; it cannot say they are true.
|
|
97
|
-
- ❌ **Submitting the application.** Sending is the candidate's act.
|