skilldrop-cli 0.11.9 → 0.12.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 +2 -0
- package/loops/build/evals/eval_queries.json +30 -0
- package/loops/build/evals/evals.json +27 -0
- package/loops/design/evals/eval_queries.json +30 -0
- package/loops/design/evals/evals.json +26 -0
- package/loops/discover/evals/eval_queries.json +30 -0
- package/loops/discover/evals/evals.json +26 -0
- package/loops/operate/evals/eval_queries.json +30 -0
- package/loops/operate/evals/evals.json +25 -0
- package/loops/ship-a-draft/evals/eval_queries.json +30 -0
- package/loops/ship-a-draft/evals/evals.json +25 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -475,6 +475,8 @@ The long-form install material moved to [`guides/`](guides/) so this page stays
|
|
|
475
475
|
| Use the two skills that ship scripts | [Skills that ship scripts](guides/reference/skills-with-scripts.md) |
|
|
476
476
|
| Add a skill or a loop to this repo | [Author a skill](guides/how-to/author-a-skill.md) · [Author a loop](guides/how-to/author-a-loop.md) |
|
|
477
477
|
| Understand why it is built this way | [Why loops](guides/explanation/loops.md) · [ARCHITECTURE.md](ARCHITECTURE.md) |
|
|
478
|
+
| See one change go through all four loops | [Follow one change through the loops](guides/tutorial/follow-a-change-through-the-loops.md) |
|
|
479
|
+
| Point a model at this repo | [`llms.txt`](llms.txt) — a generated index so a tool reads the few relevant pages instead of the tree |
|
|
478
480
|
|
|
479
481
|
### Reviewer subagents
|
|
480
482
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"query": "take this story to merged code",
|
|
4
|
+
"should_trigger": true
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"query": "run the build loop on this ticket",
|
|
8
|
+
"should_trigger": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"query": "implement this and gate it before I merge",
|
|
12
|
+
"should_trigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"query": "is this branch safe to merge yet?",
|
|
16
|
+
"should_trigger": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"query": "write me an ADR for this decision",
|
|
20
|
+
"should_trigger": false
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"query": "design the system for this requirement",
|
|
24
|
+
"should_trigger": false
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"query": "what should we build next quarter?",
|
|
28
|
+
"should_trigger": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"loop_name": "build",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": "red-gate-blocks-the-merge",
|
|
6
|
+
"prompt": "Run the build loop on this story: add a /export endpoint. `pytest` currently fails on one new test, and the endpoint reads user_id from the query string.",
|
|
7
|
+
"assertions": [
|
|
8
|
+
"Runs the stages in order — shape, implement, verify — and never starts implement without acceptance criteria a test can assert",
|
|
9
|
+
"Treats the failing pytest as a RED G2 gate that forces NOT READY on its own, independent of any review finding",
|
|
10
|
+
"Returns to the `implement` stage on NOT READY, not to `shape`, because G2's revise_to names implement",
|
|
11
|
+
"Never edits the gate script, its config, or the failing test to turn G2 green",
|
|
12
|
+
"Names the gate id (G2) and the verdict verbatim from contracts/terminals.json",
|
|
13
|
+
"Stops after 3 returns and emits BLOCKED naming what did not converge, rather than starting a 4th round"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "escalates-a-design-dispute-not-a-defect",
|
|
18
|
+
"prompt": "Build-loop this change. The gate is green but the reviewer thinks the whole caching approach is wrong.",
|
|
19
|
+
"assertions": [
|
|
20
|
+
"Records G2 as green and does not conflate a design disagreement with a gate failure",
|
|
21
|
+
"Escalates the disagreement to the `decide` stage / council-review rather than arguing it inside the diff",
|
|
22
|
+
"Treats RECONSIDER or SPLIT as leaving the loop, not as a revise",
|
|
23
|
+
"Leaves the merge decision itself to a human at G2.1"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"query": "design the system for this requirement",
|
|
4
|
+
"should_trigger": true
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"query": "run the design loop on this PRD",
|
|
8
|
+
"should_trigger": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"query": "how should we architect this?",
|
|
12
|
+
"should_trigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"query": "get this to a recorded architecture decision",
|
|
16
|
+
"should_trigger": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"query": "implement this story",
|
|
20
|
+
"should_trigger": false
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"query": "write the runbook for this alert",
|
|
24
|
+
"should_trigger": false
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"query": "summarise this for the board",
|
|
28
|
+
"should_trigger": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"loop_name": "design",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": "constrains-then-attacks-before-ratifying",
|
|
6
|
+
"prompt": "Run the design loop for per-plan API rate limiting, from this ratified PRD.",
|
|
7
|
+
"assertions": [
|
|
8
|
+
"Runs nfr-spec first and expresses targets as numbers, not adjectives",
|
|
9
|
+
"Produces the design doc and the diagram as one artifact, and checks they agree",
|
|
10
|
+
"Runs threat-model BEFORE the G1 panel, not after",
|
|
11
|
+
"Seats council-review at G1 and records dissent plus what would change each seat's mind",
|
|
12
|
+
"Writes the ADR only after G1 returns, and carries any PROCEED WITH CONDITIONS conditions into it",
|
|
13
|
+
"Names the rejected options and why each lost"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "conditions-must-reach-the-adr",
|
|
18
|
+
"prompt": "The design-loop panel returned PROCEED WITH CONDITIONS — the operator seat wants the failure mode documented. Finish the loop.",
|
|
19
|
+
"assertions": [
|
|
20
|
+
"Does not treat PROCEED WITH CONDITIONS as PROCEED",
|
|
21
|
+
"Carries the named condition into the ADR as part of the decision",
|
|
22
|
+
"Proceeds to `record` rather than looping back to `shape`"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"query": "turn these stakeholder notes into requirements",
|
|
4
|
+
"should_trigger": true
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"query": "run the discover loop on this complaint",
|
|
8
|
+
"should_trigger": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"query": "what problem are we actually solving here?",
|
|
12
|
+
"should_trigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"query": "get this idea to a ratified brief",
|
|
16
|
+
"should_trigger": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"query": "split this epic into stories",
|
|
20
|
+
"should_trigger": false
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"query": "write the design doc for this",
|
|
24
|
+
"should_trigger": false
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"query": "review my pull request",
|
|
28
|
+
"should_trigger": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"loop_name": "discover",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": "refuses-to-specify-on-a-thin-brief",
|
|
6
|
+
"prompt": "Run the discover loop. An account manager says enterprise customers keep hitting our API limits and are complaining.",
|
|
7
|
+
"assertions": [
|
|
8
|
+
"Starts at `gather` with requirements-interview, because the signal arrived as a conversation rather than a journey or a strategy question",
|
|
9
|
+
"Does not run all three gather skills on the same input",
|
|
10
|
+
"Tags every brief field [explicit] / [implied] / [inferred] / [missing] with its source",
|
|
11
|
+
"Marks the threshold and the affected-customer count as [missing] rather than inventing plausible numbers",
|
|
12
|
+
"Refuses to complete `specify` until the [missing] anchors are resolved, and says which ones block it",
|
|
13
|
+
"Does not self-ratify G0 — it names ratification as a human decision"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "reconsider-leaves-the-loop",
|
|
18
|
+
"prompt": "We ran discover and the stakeholder now says they actually want burst capacity, not a higher ceiling.",
|
|
19
|
+
"assertions": [
|
|
20
|
+
"Classifies this as RECONSIDER, a redirect-class verdict",
|
|
21
|
+
"States that a redirect leaves the loop rather than revising within it",
|
|
22
|
+
"Does not route back to `structure` for another brief on the original problem"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"query": "write the postmortem for last night's incident",
|
|
4
|
+
"should_trigger": true
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"query": "run the operate loop on this service",
|
|
8
|
+
"should_trigger": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"query": "what should we alert on and what's the runbook?",
|
|
12
|
+
"should_trigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"query": "we're in an incident — what do I tell customers?",
|
|
16
|
+
"should_trigger": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"query": "implement the fix for this bug",
|
|
20
|
+
"should_trigger": false
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"query": "design the retry architecture",
|
|
24
|
+
"should_trigger": false
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"query": "draft the PRD for this feature",
|
|
28
|
+
"should_trigger": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"loop_name": "operate",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": "postmortem-must-produce-runbook-deltas",
|
|
6
|
+
"prompt": "Run the operate loop. Our rate limiter alert fired last night — a customer's retry loop hammered the API for 40 minutes.",
|
|
7
|
+
"assertions": [
|
|
8
|
+
"Enters at `respond`, not at `instrument` — an incident does not replay earlier stages",
|
|
9
|
+
"Stages the communication (detect / mitigate / resolve) and matches the message to the stage the incident is in",
|
|
10
|
+
"Produces a blameless postmortem that names missing guardrails, never people",
|
|
11
|
+
"Ends in concrete runbook deltas phrased as before/after edits",
|
|
12
|
+
"Routes those deltas back to `document` via G3's revise edge rather than treating the postmortem as terminal"
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "refuses-to-guess-incident-facts",
|
|
17
|
+
"prompt": "Write the postmortem for last night's outage. I don't have the exact timeline or customer impact numbers yet.",
|
|
18
|
+
"assertions": [
|
|
19
|
+
"Emits BLOCKED naming the missing facts rather than producing a confident postmortem",
|
|
20
|
+
"Does not fabricate timings, customer counts, or a root cause",
|
|
21
|
+
"States exactly what to re-run with once the facts exist"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"query": "turn these notes into something I can send",
|
|
4
|
+
"should_trigger": true
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"query": "run ship-a-draft on this transcript",
|
|
8
|
+
"should_trigger": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"query": "take this ticket to a finished document",
|
|
12
|
+
"should_trigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"query": "polish this draft and check the argument",
|
|
16
|
+
"should_trigger": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"query": "implement this feature",
|
|
20
|
+
"should_trigger": false
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"query": "gate my pull request",
|
|
24
|
+
"should_trigger": false
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"query": "what should our OKRs be?",
|
|
28
|
+
"should_trigger": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"loop_name": "ship-a-draft",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": "picks-the-generator-before-collecting",
|
|
6
|
+
"prompt": "Run ship-a-draft on this Slack thread — I need something the exec team can read.",
|
|
7
|
+
"assertions": [
|
|
8
|
+
"Chooses the target generator (exec-summary) BEFORE running intake, because the brief is shaped for a target",
|
|
9
|
+
"Runs brief-intake and tags every field explicit / implied / inferred / missing",
|
|
10
|
+
"Runs doc-critique at G4 against the same rubric the generator was held to",
|
|
11
|
+
"Runs output-hygiene last, only once the argument is settled",
|
|
12
|
+
"Reports what output-hygiene did not touch"
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "major-rewrite-returns-to-intake",
|
|
17
|
+
"prompt": "The critique on my draft came back MAJOR REWRITE. Continue the ship-a-draft wrapper.",
|
|
18
|
+
"assertions": [
|
|
19
|
+
"Routes back to `intake`, not to `draft`, because G4's revise_to names intake",
|
|
20
|
+
"Explains that re-drafting from the same incomplete brief reproduces the same gaps",
|
|
21
|
+
"Does not run output-hygiene on a draft that is about to be rewritten"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skilldrop-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Portable AI-agent skills for the deliverables knowledge workers ship \u2014 diagrams, ADRs, PRDs, runbooks, decks, reviews \u2014 installable into Claude Code, Cursor, Kiro, and any IDE that takes custom instructions. One command per skill or per role-based pack.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Sanjay Ananthanarayan",
|