@mrciphersmith/keryx 0.3.3 → 0.3.6

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 (140) hide show
  1. package/dist/cli.js +996 -366
  2. package/docs/README.md +2 -0
  3. package/package.json +1 -1
  4. package/src/gdskills/bundled/install-manifest.json +520 -48
  5. package/src/gdskills/bundled/stacks/csharp-dotnet/agent-refs.json +4 -0
  6. package/src/gdskills/bundled/stacks/csharp-dotnet/governance/eval.json +1881 -0
  7. package/src/gdskills/bundled/stacks/csharp-dotnet/governance/scout.json +33 -0
  8. package/src/gdskills/bundled/stacks/csharp-dotnet/pack.json +38 -0
  9. package/src/gdskills/bundled/stacks/csharp-dotnet/rules/coding-style.mdc +100 -0
  10. package/src/gdskills/bundled/stacks/csharp-dotnet/rules/patterns.mdc +107 -0
  11. package/src/gdskills/bundled/stacks/csharp-dotnet/rules/security.mdc +86 -0
  12. package/src/gdskills/bundled/stacks/csharp-dotnet/rules/testing.mdc +89 -0
  13. package/src/gdskills/bundled/stacks/csharp-dotnet/skills/dotnet-build-fix/SKILL.md +143 -0
  14. package/src/gdskills/bundled/stacks/csharp-dotnet/skills/dotnet-build-fix/evals.json +77 -0
  15. package/src/gdskills/bundled/stacks/csharp-dotnet/skills/dotnet-code-review/SKILL.md +121 -0
  16. package/src/gdskills/bundled/stacks/csharp-dotnet/skills/dotnet-code-review/evals.json +77 -0
  17. package/src/gdskills/bundled/stacks/csharp-dotnet/skills/dotnet-implementation/SKILL.md +134 -0
  18. package/src/gdskills/bundled/stacks/csharp-dotnet/skills/dotnet-implementation/evals.json +76 -0
  19. package/src/gdskills/bundled/stacks/csharp-dotnet/skills/dotnet-testing/SKILL.md +130 -0
  20. package/src/gdskills/bundled/stacks/csharp-dotnet/skills/dotnet-testing/evals.json +77 -0
  21. package/src/gdskills/bundled/stacks/django/agent-refs.json +3 -0
  22. package/src/gdskills/bundled/stacks/django/governance/eval.json +1763 -0
  23. package/src/gdskills/bundled/stacks/django/governance/scout.json +40 -0
  24. package/src/gdskills/bundled/stacks/django/pack.json +43 -0
  25. package/src/gdskills/bundled/stacks/django/rules/coding-style.mdc +80 -0
  26. package/src/gdskills/bundled/stacks/django/rules/patterns.mdc +92 -0
  27. package/src/gdskills/bundled/stacks/django/rules/security.mdc +92 -0
  28. package/src/gdskills/bundled/stacks/django/rules/testing.mdc +89 -0
  29. package/src/gdskills/bundled/stacks/django/skills/django-build-fix/SKILL.md +149 -0
  30. package/src/gdskills/bundled/stacks/django/skills/django-build-fix/evals.json +49 -0
  31. package/src/gdskills/bundled/stacks/django/skills/django-code-review/SKILL.md +137 -0
  32. package/src/gdskills/bundled/stacks/django/skills/django-code-review/evals.json +48 -0
  33. package/src/gdskills/bundled/stacks/django/skills/django-implementation/SKILL.md +147 -0
  34. package/src/gdskills/bundled/stacks/django/skills/django-implementation/evals.json +75 -0
  35. package/src/gdskills/bundled/stacks/django/skills/django-migrate/SKILL.md +166 -0
  36. package/src/gdskills/bundled/stacks/django/skills/django-migrate/evals.json +49 -0
  37. package/src/gdskills/bundled/stacks/django/skills/django-testing/SKILL.md +130 -0
  38. package/src/gdskills/bundled/stacks/django/skills/django-testing/evals.json +48 -0
  39. package/src/gdskills/bundled/stacks/fastapi/agent-refs.json +3 -0
  40. package/src/gdskills/bundled/stacks/fastapi/governance/eval.json +1777 -0
  41. package/src/gdskills/bundled/stacks/fastapi/governance/scout.json +34 -0
  42. package/src/gdskills/bundled/stacks/fastapi/pack.json +43 -0
  43. package/src/gdskills/bundled/stacks/fastapi/rules/coding-style.mdc +68 -0
  44. package/src/gdskills/bundled/stacks/fastapi/rules/patterns.mdc +108 -0
  45. package/src/gdskills/bundled/stacks/fastapi/rules/security.mdc +99 -0
  46. package/src/gdskills/bundled/stacks/fastapi/rules/testing.mdc +85 -0
  47. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-build-fix/SKILL.md +157 -0
  48. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-build-fix/evals.json +76 -0
  49. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-code-review/SKILL.md +150 -0
  50. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-code-review/evals.json +74 -0
  51. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-implementation/SKILL.md +158 -0
  52. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-implementation/evals.json +75 -0
  53. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-testing/SKILL.md +146 -0
  54. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-testing/evals.json +74 -0
  55. package/src/gdskills/bundled/stacks/flutter-dart/agent-refs.json +4 -0
  56. package/src/gdskills/bundled/stacks/flutter-dart/governance/eval.json +1849 -0
  57. package/src/gdskills/bundled/stacks/flutter-dart/governance/scout.json +33 -0
  58. package/src/gdskills/bundled/stacks/flutter-dart/pack.json +41 -0
  59. package/src/gdskills/bundled/stacks/flutter-dart/rules/coding-style.mdc +98 -0
  60. package/src/gdskills/bundled/stacks/flutter-dart/rules/patterns.mdc +88 -0
  61. package/src/gdskills/bundled/stacks/flutter-dart/rules/security.mdc +91 -0
  62. package/src/gdskills/bundled/stacks/flutter-dart/rules/testing.mdc +101 -0
  63. package/src/gdskills/bundled/stacks/flutter-dart/skills/flutter-build-fix/SKILL.md +134 -0
  64. package/src/gdskills/bundled/stacks/flutter-dart/skills/flutter-build-fix/evals.json +79 -0
  65. package/src/gdskills/bundled/stacks/flutter-dart/skills/flutter-code-review/SKILL.md +124 -0
  66. package/src/gdskills/bundled/stacks/flutter-dart/skills/flutter-code-review/evals.json +74 -0
  67. package/src/gdskills/bundled/stacks/flutter-dart/skills/flutter-implementation/SKILL.md +139 -0
  68. package/src/gdskills/bundled/stacks/flutter-dart/skills/flutter-implementation/evals.json +77 -0
  69. package/src/gdskills/bundled/stacks/flutter-dart/skills/flutter-testing/SKILL.md +134 -0
  70. package/src/gdskills/bundled/stacks/flutter-dart/skills/flutter-testing/evals.json +74 -0
  71. package/src/gdskills/bundled/stacks/java-kotlin-spring/agent-refs.json +3 -0
  72. package/src/gdskills/bundled/stacks/java-kotlin-spring/governance/eval.json +2194 -0
  73. package/src/gdskills/bundled/stacks/java-kotlin-spring/governance/scout.json +39 -0
  74. package/src/gdskills/bundled/stacks/java-kotlin-spring/pack.json +40 -0
  75. package/src/gdskills/bundled/stacks/java-kotlin-spring/rules/coding-style.mdc +67 -0
  76. package/src/gdskills/bundled/stacks/java-kotlin-spring/rules/patterns.mdc +65 -0
  77. package/src/gdskills/bundled/stacks/java-kotlin-spring/rules/security.mdc +69 -0
  78. package/src/gdskills/bundled/stacks/java-kotlin-spring/rules/testing.mdc +80 -0
  79. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-build-fix/SKILL.md +144 -0
  80. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-build-fix/evals.json +74 -0
  81. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-code-review/SKILL.md +129 -0
  82. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-code-review/evals.json +74 -0
  83. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-implementation/SKILL.md +147 -0
  84. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-implementation/evals.json +75 -0
  85. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-migrate/SKILL.md +139 -0
  86. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-migrate/evals.json +74 -0
  87. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-testing/SKILL.md +128 -0
  88. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-testing/evals.json +73 -0
  89. package/src/gdskills/bundled/stacks/kotlin-android/agent-refs.json +4 -0
  90. package/src/gdskills/bundled/stacks/kotlin-android/governance/eval.json +1889 -0
  91. package/src/gdskills/bundled/stacks/kotlin-android/governance/scout.json +34 -0
  92. package/src/gdskills/bundled/stacks/kotlin-android/pack.json +38 -0
  93. package/src/gdskills/bundled/stacks/kotlin-android/rules/coding-style.mdc +89 -0
  94. package/src/gdskills/bundled/stacks/kotlin-android/rules/patterns.mdc +96 -0
  95. package/src/gdskills/bundled/stacks/kotlin-android/rules/security.mdc +90 -0
  96. package/src/gdskills/bundled/stacks/kotlin-android/rules/testing.mdc +89 -0
  97. package/src/gdskills/bundled/stacks/kotlin-android/skills/compose-implementation/SKILL.md +150 -0
  98. package/src/gdskills/bundled/stacks/kotlin-android/skills/compose-implementation/evals.json +77 -0
  99. package/src/gdskills/bundled/stacks/kotlin-android/skills/kotlin-android-build-fix/SKILL.md +151 -0
  100. package/src/gdskills/bundled/stacks/kotlin-android/skills/kotlin-android-build-fix/evals.json +76 -0
  101. package/src/gdskills/bundled/stacks/kotlin-android/skills/kotlin-android-code-review/SKILL.md +139 -0
  102. package/src/gdskills/bundled/stacks/kotlin-android/skills/kotlin-android-code-review/evals.json +78 -0
  103. package/src/gdskills/bundled/stacks/kotlin-android/skills/kotlin-android-testing/SKILL.md +131 -0
  104. package/src/gdskills/bundled/stacks/kotlin-android/skills/kotlin-android-testing/evals.json +77 -0
  105. package/src/gdskills/bundled/stacks/python/agent-refs.json +2 -1
  106. package/src/gdskills/bundled/stacks/python/pack.json +1 -1
  107. package/src/gdskills/bundled/stacks/rust/agent-refs.json +3 -0
  108. package/src/gdskills/bundled/stacks/rust/governance/eval.json +1823 -0
  109. package/src/gdskills/bundled/stacks/rust/governance/scout.json +32 -0
  110. package/src/gdskills/bundled/stacks/rust/pack.json +42 -0
  111. package/src/gdskills/bundled/stacks/rust/rules/coding-style.mdc +93 -0
  112. package/src/gdskills/bundled/stacks/rust/rules/patterns.mdc +85 -0
  113. package/src/gdskills/bundled/stacks/rust/rules/security.mdc +85 -0
  114. package/src/gdskills/bundled/stacks/rust/rules/testing.mdc +82 -0
  115. package/src/gdskills/bundled/stacks/rust/skills/rust-build-fix/SKILL.md +141 -0
  116. package/src/gdskills/bundled/stacks/rust/skills/rust-build-fix/evals.json +78 -0
  117. package/src/gdskills/bundled/stacks/rust/skills/rust-code-review/SKILL.md +127 -0
  118. package/src/gdskills/bundled/stacks/rust/skills/rust-code-review/evals.json +72 -0
  119. package/src/gdskills/bundled/stacks/rust/skills/rust-implementation/SKILL.md +133 -0
  120. package/src/gdskills/bundled/stacks/rust/skills/rust-implementation/evals.json +79 -0
  121. package/src/gdskills/bundled/stacks/rust/skills/rust-testing/SKILL.md +130 -0
  122. package/src/gdskills/bundled/stacks/rust/skills/rust-testing/evals.json +75 -0
  123. package/src/gdskills/bundled/stacks/swift-ios/agent-refs.json +4 -0
  124. package/src/gdskills/bundled/stacks/swift-ios/governance/eval.json +1803 -0
  125. package/src/gdskills/bundled/stacks/swift-ios/governance/scout.json +32 -0
  126. package/src/gdskills/bundled/stacks/swift-ios/pack.json +38 -0
  127. package/src/gdskills/bundled/stacks/swift-ios/rules/coding-style.mdc +92 -0
  128. package/src/gdskills/bundled/stacks/swift-ios/rules/patterns.mdc +112 -0
  129. package/src/gdskills/bundled/stacks/swift-ios/rules/security.mdc +78 -0
  130. package/src/gdskills/bundled/stacks/swift-ios/rules/testing.mdc +90 -0
  131. package/src/gdskills/bundled/stacks/swift-ios/skills/swift-build-fix/SKILL.md +144 -0
  132. package/src/gdskills/bundled/stacks/swift-ios/skills/swift-build-fix/evals.json +75 -0
  133. package/src/gdskills/bundled/stacks/swift-ios/skills/swift-code-review/SKILL.md +122 -0
  134. package/src/gdskills/bundled/stacks/swift-ios/skills/swift-code-review/evals.json +75 -0
  135. package/src/gdskills/bundled/stacks/swift-ios/skills/swift-testing/SKILL.md +131 -0
  136. package/src/gdskills/bundled/stacks/swift-ios/skills/swift-testing/evals.json +75 -0
  137. package/src/gdskills/bundled/stacks/swift-ios/skills/swiftui-implementation/SKILL.md +149 -0
  138. package/src/gdskills/bundled/stacks/swift-ios/skills/swiftui-implementation/evals.json +76 -0
  139. package/src/gdskills/bundled/agents/python-build-fixer.md +0 -52
  140. package/src/gdskills/bundled/agents/python-code-auditor.md +0 -49
@@ -0,0 +1,77 @@
1
+ {
2
+ "triggers": {
3
+ "positive": [
4
+ "This validator has zero test coverage right now, can you add some?",
5
+ "I need Moq set up for this class's HTTP dependency",
6
+ "What should this xUnit suite mock and what should it exercise for real?",
7
+ "Add TestCase rows for the different discount tiers in NUnit",
8
+ "This dotnet test keeps failing intermittently, help me stabilize it",
9
+ "None of the async methods on this repository class are tested -- can you take care of that?",
10
+ "Set up NSubstitute for the payment gateway interface in this test"
11
+ ],
12
+ "negative": [
13
+ "Write table-driven pytest cases for this Python function",
14
+ "Add Jest tests for this React component's rendering",
15
+ "Write Go tests for this package using t.Run subtests",
16
+ "Write XCTest cases for this Swift view model",
17
+ "Add Espresso/JUnit tests for this Kotlin Android activity",
18
+ "Write a Flutter widget test using WidgetTester for this screen",
19
+ "Implement this feature in C# using a Scoped DbContext",
20
+ "Review this C# diff for swallowed exceptions"
21
+ ]
22
+ },
23
+ "scenarios": [
24
+ {
25
+ "id": "mock-external-not-internal",
26
+ "prompt": "I'm writing a unit test for OrderService.PlaceOrder. It calls IPaymentGateway.Charge (an interface wrapping an HTTP call to a payment provider) and also calls its own private method CalculateTotal to work out the amount to charge. What should this test mock?",
27
+ "strictness": "high",
28
+ "expected_behavior": [
29
+ {
30
+ "grader": "judge",
31
+ "rubric": "A correct answer mocks IPaymentGateway (the HTTP-backed external seam PlaceOrder reaches through its interface) with Moq or NSubstitute, and does not mock CalculateTotal -- since that method is part of OrderService's own logic, it should run for real so the test actually verifies the calculated total, not just that a mock returns whatever value was configured.",
32
+ "pass_criteria": [
33
+ "States that IPaymentGateway should be mocked/stubbed (via Moq's Mock<IPaymentGateway> or NSubstitute's Substitute.For<IPaymentGateway>()), naming it as the external seam.",
34
+ "States that CalculateTotal should NOT be mocked and should run for real as part of the test, naming it specifically (not just 'internal logic' in the abstract).",
35
+ "Gives a reason for the distinction -- that IPaymentGateway crosses a network/external boundary while CalculateTotal is internal logic that is itself part of what the test needs to verify."
36
+ ],
37
+ "fail_criteria": [
38
+ "Recommends mocking or stubbing CalculateTotal (or any other internal collaborator that is part of OrderService's own logic) rather than exercising it directly."
39
+ ]
40
+ }
41
+ ],
42
+ "calibration": {
43
+ "known_right": "Mock `IPaymentGateway` -- it's an interface wrapping an HTTP call out to a real payment provider, which is exactly the kind of external boundary a unit test should stub out with `Mock<IPaymentGateway>` (Moq) or `Substitute.For<IPaymentGateway>()` (NSubstitute), configuring it to return a known charge result so the test doesn't depend on network access or a real payment account. Don't mock `CalculateTotal`, though -- it's a private method that's part of `OrderService`'s own logic, and mocking it would mean the test never actually exercises the calculation it's supposed to verify; it would just prove that a mock returns whatever value you told it to. Let `CalculateTotal` run for real as part of calling `PlaceOrder`, and assert that `IPaymentGateway.Charge` was called with the amount you expect that real calculation to produce.",
44
+ "known_wrong": "Mock both -- set up `Mock<IPaymentGateway>` for the HTTP call, and since `CalculateTotal` is private, expose it as a virtual method or pull it behind its own interface (`ITotalCalculator`) just so you can mock it too and control exactly what value `PlaceOrder` sees. That way the `PlaceOrder` test is fully isolated from both the payment gateway and the total-calculation logic, and you don't need real order data that exercises the actual calculation to get the test passing.",
45
+ "vague": "Mock the external stuff and let the internal logic run normally so the test stays focused and realistic.",
46
+ "subtle_wrong": "Mock `IPaymentGateway` since that's the HTTP call, that part's clear. For `CalculateTotal`, since it's a bit fiddly to set up realistic order data that exercises every branch of the calculation, it's simpler to stub it too -- pull it behind a small `ITotalCalculator` interface and mock that to return a fixed total, then just assert `PlaceOrder` calls `IPaymentGateway.Charge` with that fixed value. That keeps the `PlaceOrder` test small and focused purely on the orchestration, and you can cover `CalculateTotal`'s own logic separately in its own test."
47
+ }
48
+ },
49
+ {
50
+ "id": "no-sleep-async-wait",
51
+ "prompt": "My xUnit test starts a background operation via an IHostedService and I want to wait for it to actually finish before running my assertions. What's the right way to do that in C#?",
52
+ "strictness": "high",
53
+ "expected_behavior": [
54
+ {
55
+ "grader": "judge",
56
+ "rubric": "A correct answer waits for the background operation using a real completion signal -- awaiting the actual Task the operation returns, or a TaskCompletionSource/semaphore/other synchronization primitive set when the work finishes -- before running assertions, rather than a fixed Thread.Sleep or Task.Delay guess used as the wait mechanism.",
57
+ "pass_criteria": [
58
+ "Names a concrete synchronization mechanism (awaiting the operation's own Task, a TaskCompletionSource, or an equivalent signal) as the actual join point, shown concretely rather than just described in the abstract.",
59
+ "Explains why this is more reliable than a fixed delay -- it doesn't depend on guessing how long the background work takes."
60
+ ],
61
+ "fail_criteria": [
62
+ "Recommends a fixed Thread.Sleep or Task.Delay wait -- before, instead of, or added alongside/after a real completion signal as extra insurance -- as part of how the test waits for the background operation to finish. A real completion signal needs no delay bolted onto it; recommending one anyway, for any reason, is the anti-pattern this scenario is about. Mentioning Thread.Sleep/Task.Delay only to warn against it is not a failure."
63
+ ]
64
+ }
65
+ ],
66
+ "calibration": {
67
+ "known_right": "If the background operation is something you can call and await directly in the test (e.g. the hosted service exposes the work as a method returning a Task), just await that Task before your assertions -- that's the most direct join point. If instead the work happens on a timer/background loop you can't call synchronously, wire up a `TaskCompletionSource` that the hosted service completes when it finishes a unit of work (pass it in via a test-only hook, or have the service raise an event/callback the test subscribes to and sets the TaskCompletionSource from), then `await tcs.Task` in the test before asserting. Either way, avoid `Thread.Sleep`/`Task.Delay` as the wait mechanism -- a fixed delay is a guess about how long the operation takes, and it either wastes time when it finishes early or flakes under CI load when it doesn't.",
68
+ "known_wrong": "The simplest way is to just add `await Task.Delay(500);` right after starting the hosted service, then run your assertions -- that gives the background operation enough time to finish in almost every run without needing to wire up a TaskCompletionSource or expose extra hooks just for the test. If it's still occasionally flaky in CI, bump it up to `Task.Delay(2000)`.",
69
+ "vague": "Wait for the background operation properly instead of guessing how long it takes before you assert.",
70
+ "subtle_wrong": "Wire up a `TaskCompletionSource` that the hosted service completes when its work finishes, and `await tcs.Task` in the test -- that's the real join point. If it's still flaky occasionally, add a small `Task.Delay(100)` right after the await too, just as a bit of extra insurance before the assertions run."
71
+ },
72
+ "anti_patterns": [
73
+ "Task.Delay"
74
+ ]
75
+ }
76
+ ]
77
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "agents": []
3
+ }