skilldrop-cli 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +1 -0
  2. package/bin/skilldrop.js +179 -3
  3. package/package.json +1 -1
  4. package/skills/adr-generator/evals/eval_queries.json +34 -0
  5. package/skills/adr-generator/evals/evals.json +17 -0
  6. package/skills/api-contract-draft/evals/eval_queries.json +34 -0
  7. package/skills/api-contract-draft/evals/evals.json +18 -0
  8. package/skills/architecture-diagrams/evals/eval_queries.json +34 -0
  9. package/skills/architecture-diagrams/evals/evals.json +16 -0
  10. package/skills/audience-profile/evals/eval_queries.json +34 -0
  11. package/skills/audience-profile/evals/evals.json +15 -0
  12. package/skills/brief-intake/evals/eval_queries.json +34 -0
  13. package/skills/brief-intake/evals/evals.json +16 -0
  14. package/skills/council-review/evals/eval_queries.json +38 -0
  15. package/skills/council-review/evals/evals.json +18 -0
  16. package/skills/data-contract/evals/eval_queries.json +34 -0
  17. package/skills/data-contract/evals/evals.json +16 -0
  18. package/skills/db-schema-design/evals/eval_queries.json +34 -0
  19. package/skills/db-schema-design/evals/evals.json +16 -0
  20. package/skills/decision-log/evals/eval_queries.json +34 -0
  21. package/skills/decision-log/evals/evals.json +17 -0
  22. package/skills/deck-builder/evals/eval_queries.json +34 -0
  23. package/skills/deck-builder/evals/evals.json +17 -0
  24. package/skills/design-doc/evals/eval_queries.json +34 -0
  25. package/skills/design-doc/evals/evals.json +17 -0
  26. package/skills/devils-advocate/evals/eval_queries.json +38 -0
  27. package/skills/devils-advocate/evals/evals.json +19 -0
  28. package/skills/doc-critique/evals/eval_queries.json +38 -0
  29. package/skills/doc-critique/evals/evals.json +17 -0
  30. package/skills/exec-summary/evals/eval_queries.json +34 -0
  31. package/skills/exec-summary/evals/evals.json +17 -0
  32. package/skills/figma-diagrams/evals/eval_queries.json +34 -0
  33. package/skills/figma-diagrams/evals/evals.json +15 -0
  34. package/skills/incident-comms/evals/eval_queries.json +34 -0
  35. package/skills/incident-comms/evals/evals.json +16 -0
  36. package/skills/nfr-spec/evals/eval_queries.json +34 -0
  37. package/skills/nfr-spec/evals/evals.json +16 -0
  38. package/skills/observability-plan/evals/eval_queries.json +34 -0
  39. package/skills/observability-plan/evals/evals.json +16 -0
  40. package/skills/postmortem-generator/evals/eval_queries.json +34 -0
  41. package/skills/postmortem-generator/evals/evals.json +17 -0
  42. package/skills/prd-draft/evals/eval_queries.json +34 -0
  43. package/skills/prd-draft/evals/evals.json +17 -0
  44. package/skills/requirements-interview/evals/eval_queries.json +34 -0
  45. package/skills/requirements-interview/evals/evals.json +16 -0
  46. package/skills/reverse-architecture/evals/eval_queries.json +34 -0
  47. package/skills/reverse-architecture/evals/evals.json +16 -0
  48. package/skills/runbook-generator/evals/eval_queries.json +34 -0
  49. package/skills/runbook-generator/evals/evals.json +17 -0
  50. package/skills/slide-outliner/evals/eval_queries.json +34 -0
  51. package/skills/slide-outliner/evals/evals.json +16 -0
  52. package/skills/sonar-onboard/evals/eval_queries.json +34 -0
  53. package/skills/sonar-onboard/evals/evals.json +16 -0
  54. package/skills/sonar-review/evals/eval_queries.json +34 -0
  55. package/skills/sonar-review/evals/evals.json +16 -0
  56. package/skills/threat-model/evals/eval_queries.json +34 -0
  57. package/skills/threat-model/evals/evals.json +18 -0
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "Design the database schema for this feature",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "What tables, keys, and indexes do I need for these queries?",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Should this be relational or document, given our access patterns?",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Model the data layer for this access pattern list",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Write a data contract for the table our consumers read",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Draft the OpenAPI contract for the service",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Diagram our system architecture",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Plan the migration from the old schema",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill_name": "db-schema-design",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Design the schema for an order-history feature. Queries: fetch one order by id, list a customer's orders newest-first, and report daily totals by region.",
7
+ "assertions": [
8
+ "Access patterns are listed before the schema, with frequency and selectivity",
9
+ "The paradigm choice is justified against those access patterns — relational-by-default needs no defence, every move past it does",
10
+ "Keys and partitioning are justified by the actual queries; a random UUIDv4 clustered primary key is not used without a stated reason",
11
+ "Every index maps to a real predicate from the listed queries rather than being speculative",
12
+ "Denormalization, where proposed, names the read it serves and the write cost it adds"
13
+ ]
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "Extract the decisions and action items from these meeting notes",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Turn this Slack thread into a decision log with owners and due dates",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "What did we actually decide in this transcript, and who owns what?",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Give me a structured log of decisions from this design review",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Write an ADR for the decision we made",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Summarize this meeting for executives",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Draft the design doc for what we agreed",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Critique the quality of this decision log",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,17 @@
1
+ {
2
+ "skill_name": "decision-log",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Pull the decisions and action items out of this design-review transcript. [transcript: mixed opinions, a couple of agreed decisions, some unowned follow-ups, and relative dates like 'next Friday']",
7
+ "assertions": [
8
+ "Opinions are not promoted to decisions — only items the group acknowledged appear as decisions",
9
+ "Ownership is never invented; items with no named owner are flagged unowned rather than assigned",
10
+ "The source column quotes the discussion verbatim in a short snippet, not a paraphrase",
11
+ "Action items are written in active voice",
12
+ "Relative dates are converted to absolute dates, marked when inferred",
13
+ "The output is a structured table the user can paste into a doc or tracker"
14
+ ]
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "Build me a PowerPoint from this content",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Generate a .pptx deck for this exec presentation",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Turn this into actual slides I can present, with our brand colors",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "I need a real deck file, not an outline",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Just outline the slides — I'll build the deck myself",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Write a one-page summary for executives",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Which audience archetype should I target and what are its rules?",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Critique the deck I already made",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,17 @@
1
+ {
2
+ "skill_name": "deck-builder",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Build a .pptx from this content for an exec audience, using our brand palette (navy/white).",
7
+ "assertions": [
8
+ "A real .pptx file is produced, not an outline",
9
+ "The title slide carries a real title, subtitle, presenter, and date — never left blank",
10
+ "Section dividers appear sparingly, at most one every 4-5 content slides",
11
+ "Big-number layouts use only numbers the user supplied; no statistic is invented for emphasis",
12
+ "Bullet density matches the stated audience rather than a fixed default",
13
+ "The requested palette is applied rather than the default theme"
14
+ ]
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "Draft a design doc for this feature",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Write a Google-style engineering design document from this brief",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "I need a technical design with goals, non-goals, alternatives, and rollout",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Turn this feature brief into a design doc the team can review",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Write an ADR recording this one decision",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Draft the product requirements document for this feature",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Critique the design doc I already wrote",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Split this epic into user stories",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,17 @@
1
+ {
2
+ "skill_name": "design-doc",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Draft a design doc for a notification service that consumes domain events and delivers email and push notifications for about 1M events/day.",
7
+ "assertions": [
8
+ "Non-goals are real scope boundaries a reader might otherwise assume are in scope, not throat-clearing",
9
+ "Each alternative carries a two-sentence what-it-is and why-we-didn't-pick-it",
10
+ "Every risk has a mitigation, not a bare list of concerns",
11
+ "Goals are stated with measurable targets rather than adjectives",
12
+ "The rollout section names stages and what would halt it",
13
+ "Facts not supplied by the user are marked as open questions rather than invented"
14
+ ]
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,38 @@
1
+ [
2
+ {
3
+ "query": "Review this code I just wrote before I merge it",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Anything I might have missed in this implementation?",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Adversarially review this diff for edge cases and broken assumptions",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "I just finished the feature and the tests pass — is it ready to ship?",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Find the bugs a staff engineer would push back on in review",
20
+ "should_trigger": true
21
+ },
22
+ {
23
+ "query": "Critique this design document",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Convene multiple senior personas to deliberate this architecture decision",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Implement this ticket from its acceptance criteria",
32
+ "should_trigger": false
33
+ },
34
+ {
35
+ "query": "Run the full gate and reviewers and tell me if this is safe to merge",
36
+ "should_trigger": false
37
+ }
38
+ ]
@@ -0,0 +1,19 @@
1
+ {
2
+ "skill_name": "devils-advocate",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Here's the payment-retry handler I just finished — it retries failed charges up to 3 times with exponential backoff, and the tests pass. Review it before I open the PR.",
7
+ "assertions": [
8
+ "Every finding has a reproducible scenario a senior engineer can replay mentally — named input, current behavior, expected behavior",
9
+ "Every finding cites file:line, not just a section or function name",
10
+ "Severity is calibrated — blockers do not outnumber majors; inflated findings are demoted",
11
+ "Findings are grouped by the four lenses (edge cases, assumptions, staff-engineer pushback, test-coverage gaps), skipping lenses that do not apply rather than padding",
12
+ "Test-coverage gaps name the concrete missing test case, not 'add more tests'",
13
+ "Assertion theater is called out — tests that execute the code without asserting the behavior",
14
+ "Output ends with a 'what's solid' section so the author knows what not to touch",
15
+ "The review scopes to the change under review, never sweeping the whole codebase"
16
+ ]
17
+ }
18
+ ]
19
+ }
@@ -0,0 +1,38 @@
1
+ [
2
+ {
3
+ "query": "Critique this design doc before I share it",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Review this ADR and tell me where it's weak",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Is this runbook actually good? Give me a structured critique",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Score this exec summary against a quality bar",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Review my document and give me severity-tagged findings with fixes",
20
+ "should_trigger": true
21
+ },
22
+ {
23
+ "query": "Review this pull request for bugs",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Write a new ADR for this decision",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Get five senior personas to deliberate whether we should do this",
32
+ "should_trigger": false
33
+ },
34
+ {
35
+ "query": "Summarize this document for executives",
36
+ "should_trigger": false
37
+ }
38
+ ]
@@ -0,0 +1,17 @@
1
+ {
2
+ "skill_name": "doc-critique",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Critique this design doc before I circulate it to the team. [design doc: a TL;DR full of adjectives, an approach section that says 'industry standard', no SLOs, and a one-line rollout plan]",
7
+ "assertions": [
8
+ "Every finding quotes the document verbatim rather than paraphrasing it — the quoted snippet is the audit trail",
9
+ "Findings are local and anchored to a section, not global judgments like 'the tone is off'",
10
+ "Severity is calibrated — blockers do not outnumber majors",
11
+ "Fixes are paste-able: when the fix is 'add a section', the critique shows what that section should contain",
12
+ "The critique reviews whether the doc made its case, and does not re-debate the underlying technical topic",
13
+ "The document archetype is identified and the critique is run against that archetype's quality bar"
14
+ ]
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "Summarize this design doc for our executives",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "I need a one-page summary of this long proposal for a non-technical stakeholder",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Give me the 30-second version of this technical document",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Compress this into something our COO will actually read",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Build me a PowerPoint of this",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Outline the slides for this presentation",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "What should I change about how I present to a board audience?",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Critique this document against its quality bar",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,17 @@
1
+ {
2
+ "skill_name": "exec-summary",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Compress this 14-page platform-migration design doc into a one-page summary for our non-technical COO.",
7
+ "assertions": [
8
+ "Fits one page and leads with the decision or ask, not background",
9
+ "Numbers are quantified where available; where they aren't, the summary says 'directional' rather than inventing precision",
10
+ "A non-engineer meets no unexplained technical term in the first paragraph",
11
+ "No internal team-speak (OKRs, swimlanes, north-star metric) survives into the summary",
12
+ "Nothing is asserted that isn't supported by the source document",
13
+ "The output is prose a reader can scan in ~30 seconds — not slides and not a deck outline"
14
+ ]
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "List the frames in our Figma file",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Read this Figma file structure via the API",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Post a comment on this Figma frame",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Convert this FigJam connector graph into a diagram spec",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Draw an architecture diagram in Mermaid from this description",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Reverse-engineer our architecture from the repo",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Build a PowerPoint deck from this content",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Audit this UI for accessibility issues",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,15 @@
1
+ {
2
+ "skill_name": "figma-diagrams",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "List the pages and frames in this Figma file and post a comment on the checkout frame.",
7
+ "assertions": [
8
+ "The token is read from the FIGMA_TOKEN environment variable and never logged or passed on the command line",
9
+ "Output is filtered to pages, frames, and groups (about three levels) and summarized rather than dumping raw JSON",
10
+ "Before posting any comment, the exact comment text and target frame are shown for confirmation",
11
+ "The skill states clearly when FIGMA_TOKEN is missing rather than failing opaquely"
12
+ ]
13
+ }
14
+ ]
15
+ }
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "Draft a status page update for this ongoing incident",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "We're live in an incident — I need customer, internal, and exec updates",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Write the customer-facing comms while we investigate",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "How do I tell stakeholders about this outage right now?",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Write the blameless postmortem now that it's resolved",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Generate the runbook for this service",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Summarize this technical doc for executives",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Extract decisions and action items from the incident channel",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill_name": "incident-comms",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "We're 20 minutes into a live incident — checkout is failing for about 30% of users, cause not yet confirmed. Draft the customer, internal, and exec updates.",
7
+ "assertions": [
8
+ "Each message's first sentence is reader-facing impact, not an internal symptom or architecture detail",
9
+ "Every message names the next-update time, or marks it [set HH:MM] when unknown",
10
+ "No unconfirmed cause is stated and no commitment is made that might need retracting",
11
+ "The three audiences (customer status page, internal stakeholders, exec) get genuinely different messages rather than one text reused",
12
+ "Nothing is asserted beyond what the operator supplied"
13
+ ]
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "What are the non-functional requirements for this service?",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Sweep the NFRs — latency, availability, privacy, accessibility, operability",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Set performance and availability targets for this feature",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "We keep forgetting the -ilities; give me the full NFR ledger",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Write the functional requirements and user stories",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Draft the OpenAPI contract for this service",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Design the dashboards, SLOs, and alerts we should build",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Model the capacity and cost for this workload",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill_name": "nfr-spec",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Sweep the non-functional requirements for our new checkout service.",
7
+ "assertions": [
8
+ "Every category in the catalog lands in one of three states — a target, not-applicable with a reason, or a tagged default; silence in any category is a failure",
9
+ "Every target states a percentile, a load condition, and how it will be verified — a latency number with no load condition is rejected",
10
+ "The availability target matches the honest answer to what an hour of downtime costs, not a marketing instinct",
11
+ "Privacy and retention are given concrete periods rather than 'per policy'",
12
+ "The output is a reviewable ledger covering all categories, not a prose paragraph about quality"
13
+ ]
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "Design an observability plan for this service",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "What SLIs and SLOs should we define, and what should page us?",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Set up burn-rate alerting with error budgets",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "We alert on CPU and it's useless — design symptom-based alerting",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Sweep the full non-functional requirements catalog",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Write the operational runbook for the on-call team",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Model our capacity and infrastructure cost",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Write the postmortem for last week's outage",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill_name": "observability-plan",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Design the observability plan for our checkout service — what should we measure, alert on, and page for?",
7
+ "assertions": [
8
+ "SLIs measure user experience as good-over-valid events, not resource utilization",
9
+ "Latency SLIs are threshold counts at a percentile, never averages",
10
+ "Every SLO carries an error budget stated in human terms plus a policy for when it is spent",
11
+ "Pages are symptom-based, actionable, and runbook-linked; anything not actionable is a ticket, not a page",
12
+ "The plan makes a deliberate metrics-vs-logs-vs-traces choice rather than proposing everything"
13
+ ]
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "Write a blameless postmortem for this incident",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Turn this pager timeline and Slack thread into a postmortem",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "We resolved the outage — document what happened and why",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Generate the incident review doc with impact and action items",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "We're still in the incident — draft the customer update",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Extract the decisions and owners from this thread",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Write the runbook so this is handled better next time",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Summarize the incident for the executive team",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,17 @@
1
+ {
2
+ "skill_name": "postmortem-generator",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Write the postmortem from this pager timeline and Slack thread for last Tuesday's checkout outage.",
7
+ "assertions": [
8
+ "Impact is quantified — duration, users or requests affected, SLO burn, revenue where known — or explicitly marked [missing]; 'significant impact' is rejected",
9
+ "No person is named in a causal sentence; roles appear only in response actions",
10
+ "Detection and mitigation gaps are computed and stated as numbers",
11
+ "The timeline is in UTC",
12
+ "Contributing factors are listed rather than a single root cause",
13
+ "Action items carry owners as roles and are derived from the contributing factors"
14
+ ]
15
+ }
16
+ ]
17
+ }