@mrciphersmith/keryx 0.3.5 → 0.3.7

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 (84) hide show
  1. package/README.md +47 -0
  2. package/dist/cli.js +3099 -1160
  3. package/dist/core.js +22 -3
  4. package/docs/README.md +2 -0
  5. package/package.json +1 -1
  6. package/src/gdskills/bundled/install-manifest.json +319 -76
  7. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.md +19 -26
  8. package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +6 -6
  9. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +4 -7
  10. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +2 -4
  11. package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.detail.md +23 -0
  12. package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +17 -17
  13. package/src/gdskills/bundled/stacks/django/agent-refs.json +3 -0
  14. package/src/gdskills/bundled/stacks/django/governance/eval.json +1763 -0
  15. package/src/gdskills/bundled/stacks/django/governance/scout.json +40 -0
  16. package/src/gdskills/bundled/stacks/django/pack.json +43 -0
  17. package/src/gdskills/bundled/stacks/django/rules/coding-style.mdc +80 -0
  18. package/src/gdskills/bundled/stacks/django/rules/patterns.mdc +92 -0
  19. package/src/gdskills/bundled/stacks/django/rules/security.mdc +92 -0
  20. package/src/gdskills/bundled/stacks/django/rules/testing.mdc +89 -0
  21. package/src/gdskills/bundled/stacks/django/skills/django-build-fix/SKILL.md +149 -0
  22. package/src/gdskills/bundled/stacks/django/skills/django-build-fix/evals.json +49 -0
  23. package/src/gdskills/bundled/stacks/django/skills/django-code-review/SKILL.md +137 -0
  24. package/src/gdskills/bundled/stacks/django/skills/django-code-review/evals.json +48 -0
  25. package/src/gdskills/bundled/stacks/django/skills/django-implementation/SKILL.md +147 -0
  26. package/src/gdskills/bundled/stacks/django/skills/django-implementation/evals.json +75 -0
  27. package/src/gdskills/bundled/stacks/django/skills/django-migrate/SKILL.md +166 -0
  28. package/src/gdskills/bundled/stacks/django/skills/django-migrate/evals.json +49 -0
  29. package/src/gdskills/bundled/stacks/django/skills/django-testing/SKILL.md +130 -0
  30. package/src/gdskills/bundled/stacks/django/skills/django-testing/evals.json +48 -0
  31. package/src/gdskills/bundled/stacks/fastapi/agent-refs.json +3 -0
  32. package/src/gdskills/bundled/stacks/fastapi/governance/eval.json +1777 -0
  33. package/src/gdskills/bundled/stacks/fastapi/governance/scout.json +34 -0
  34. package/src/gdskills/bundled/stacks/fastapi/pack.json +43 -0
  35. package/src/gdskills/bundled/stacks/fastapi/rules/coding-style.mdc +68 -0
  36. package/src/gdskills/bundled/stacks/fastapi/rules/patterns.mdc +108 -0
  37. package/src/gdskills/bundled/stacks/fastapi/rules/security.mdc +99 -0
  38. package/src/gdskills/bundled/stacks/fastapi/rules/testing.mdc +85 -0
  39. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-build-fix/SKILL.md +157 -0
  40. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-build-fix/evals.json +76 -0
  41. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-code-review/SKILL.md +150 -0
  42. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-code-review/evals.json +74 -0
  43. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-implementation/SKILL.md +158 -0
  44. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-implementation/evals.json +75 -0
  45. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-testing/SKILL.md +146 -0
  46. package/src/gdskills/bundled/stacks/fastapi/skills/fastapi-testing/evals.json +74 -0
  47. package/src/gdskills/bundled/stacks/java-kotlin-spring/agent-refs.json +3 -0
  48. package/src/gdskills/bundled/stacks/java-kotlin-spring/governance/eval.json +2194 -0
  49. package/src/gdskills/bundled/stacks/java-kotlin-spring/governance/scout.json +39 -0
  50. package/src/gdskills/bundled/stacks/java-kotlin-spring/pack.json +40 -0
  51. package/src/gdskills/bundled/stacks/java-kotlin-spring/rules/coding-style.mdc +67 -0
  52. package/src/gdskills/bundled/stacks/java-kotlin-spring/rules/patterns.mdc +65 -0
  53. package/src/gdskills/bundled/stacks/java-kotlin-spring/rules/security.mdc +69 -0
  54. package/src/gdskills/bundled/stacks/java-kotlin-spring/rules/testing.mdc +80 -0
  55. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-build-fix/SKILL.md +144 -0
  56. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-build-fix/evals.json +74 -0
  57. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-code-review/SKILL.md +129 -0
  58. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-code-review/evals.json +74 -0
  59. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-implementation/SKILL.md +147 -0
  60. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-implementation/evals.json +75 -0
  61. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-migrate/SKILL.md +139 -0
  62. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-migrate/evals.json +74 -0
  63. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-testing/SKILL.md +128 -0
  64. package/src/gdskills/bundled/stacks/java-kotlin-spring/skills/java-kotlin-spring-testing/evals.json +73 -0
  65. package/src/gdskills/bundled/stacks/python/agent-refs.json +2 -1
  66. package/src/gdskills/bundled/stacks/python/pack.json +1 -1
  67. package/src/gdskills/bundled/stacks/rust/agent-refs.json +3 -0
  68. package/src/gdskills/bundled/stacks/rust/governance/eval.json +1823 -0
  69. package/src/gdskills/bundled/stacks/rust/governance/scout.json +32 -0
  70. package/src/gdskills/bundled/stacks/rust/pack.json +42 -0
  71. package/src/gdskills/bundled/stacks/rust/rules/coding-style.mdc +93 -0
  72. package/src/gdskills/bundled/stacks/rust/rules/patterns.mdc +85 -0
  73. package/src/gdskills/bundled/stacks/rust/rules/security.mdc +85 -0
  74. package/src/gdskills/bundled/stacks/rust/rules/testing.mdc +82 -0
  75. package/src/gdskills/bundled/stacks/rust/skills/rust-build-fix/SKILL.md +141 -0
  76. package/src/gdskills/bundled/stacks/rust/skills/rust-build-fix/evals.json +78 -0
  77. package/src/gdskills/bundled/stacks/rust/skills/rust-code-review/SKILL.md +127 -0
  78. package/src/gdskills/bundled/stacks/rust/skills/rust-code-review/evals.json +72 -0
  79. package/src/gdskills/bundled/stacks/rust/skills/rust-implementation/SKILL.md +133 -0
  80. package/src/gdskills/bundled/stacks/rust/skills/rust-implementation/evals.json +79 -0
  81. package/src/gdskills/bundled/stacks/rust/skills/rust-testing/SKILL.md +130 -0
  82. package/src/gdskills/bundled/stacks/rust/skills/rust-testing/evals.json +75 -0
  83. package/src/gdskills/bundled/agents/python-build-fixer.md +0 -52
  84. package/src/gdskills/bundled/agents/python-code-auditor.md +0 -49
package/dist/core.js CHANGED
@@ -8599,15 +8599,15 @@ var CEILINGS_BY_KEY, SKILL_LENGTH_CEILINGS;
8599
8599
  var init_skill_length_ceilings = __esm(() => {
8600
8600
  CEILINGS_BY_KEY = {
8601
8601
  "core/reviewer-skill-creator": 280,
8602
- "orchestration/code-verifier": 346,
8602
+ "orchestration/code-verifier": 339,
8603
8603
  "orchestration/context-collector": 671,
8604
8604
  "orchestration/feature-analyzer": 447,
8605
8605
  "orchestration/feature-dev": 177,
8606
8606
  "orchestration/flow-orchestrator": 696,
8607
8607
  "orchestration/issue-analyzer": 373,
8608
8608
  "orchestration/job-documenter": 414,
8609
- "orchestration/job-orchestrator": 2246,
8610
- "orchestration/task-implementer": 670,
8609
+ "orchestration/job-orchestrator": 2243,
8610
+ "orchestration/task-implementer": 668,
8611
8611
  "planning/autodoc-analyst": 180,
8612
8612
  "planning/autodoc-architect": 179,
8613
8613
  "planning/autodoc-assembler": 145,
@@ -11183,6 +11183,11 @@ var init_rules_export = __esm(() => {
11183
11183
  init_registry();
11184
11184
  });
11185
11185
 
11186
+ // src/integrations/jev-edit-guard-surface.ts
11187
+ var init_jev_edit_guard_surface = __esm(() => {
11188
+ init_settings_json();
11189
+ });
11190
+
11186
11191
  // src/integrations/service.ts
11187
11192
  var init_service = __esm(() => {
11188
11193
  init_registry();
@@ -11191,6 +11196,7 @@ var init_service = __esm(() => {
11191
11196
  init_codecs();
11192
11197
  init_surfaces();
11193
11198
  init_rules_export();
11199
+ init_jev_edit_guard_surface();
11194
11200
  init_surfaces_w5b();
11195
11201
  init_surfaces_learning();
11196
11202
  init_markdown_block();
@@ -23371,6 +23377,7 @@ var exports_service3 = {};
23371
23377
  __export(exports_service3, {
23372
23378
  AC_CHECK_TOKEN_BUDGET: () => AC_CHECK_TOKEN_BUDGET,
23373
23379
  CONFIRMATION_CAVEAT: () => CONFIRMATION_CAVEAT,
23380
+ REVIEW_GATE_CONFIG_PATH: () => REVIEW_GATE_CONFIG_PATH,
23374
23381
  acCheckCacheKey: () => acCheckCacheKey,
23375
23382
  acCheckCachePath: () => acCheckCachePath,
23376
23383
  acCriterionKnown: () => acCriterionKnown,
@@ -37245,6 +37252,18 @@ var HELP_GROUPS = [
37245
37252
  group: "Managed work",
37246
37253
  summary: "Opt-in routing classifier: each request runs on its routing category's model \u2014 /route [on|off]."
37247
37254
  },
37255
+ {
37256
+ kind: "slash",
37257
+ name: "/editguard",
37258
+ group: "Managed work",
37259
+ summary: "Jev EDIT GUARD status, threshold and recent flags for the Claude Code PostToolUse hook, with a toggle."
37260
+ },
37261
+ {
37262
+ kind: "slash",
37263
+ name: "/jevprofile",
37264
+ group: "Managed work",
37265
+ summary: "Every review.jev.* setting next to its measured verdict; toggle one or apply the recommended profile."
37266
+ },
37248
37267
  { kind: "slash", name: "/plan", group: "Managed work", summary: "Toggle read-only mode \u2014 /plan [on|off]." },
37249
37268
  {
37250
37269
  kind: "slash",
package/docs/README.md CHANGED
@@ -14,6 +14,8 @@ intent, implementation plans, and release evidence do not get mixed together.
14
14
  Gherkin scenarios for complete setup, validation, repair, and handoff.
15
15
  - [Documentation index](docs/index.md) — compact navigation for the generated
16
16
  current-behavior reference.
17
+ - [OpenAI API and ChatGPT subscriptions](docs/cli-reference.md#openai-api-and-chatgpt-subscriptions)
18
+ — separate providers, browser-completed device login, and connection checks.
17
19
 
18
20
  ## Product intent
19
21
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrciphersmith/keryx",
3
- "version": "0.3.5",
3
+ "version": "0.3.7",
4
4
  "description": "Version-controlled project context for AI coding agents: code graph, architecture wiki, project memory, relevant tests, quality signals, and task flows.",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -116,6 +116,52 @@
116
116
  ],
117
117
  "stackDetectionAware": true
118
118
  },
119
+ "django": {
120
+ "description": "Common rules plus the Django-aware component set (extends `python`), installed when `keryx stack detect` finds a matching tag (fail open when detection is unavailable or uncertain).",
121
+ "modules": [
122
+ "core-common-rules",
123
+ "skill-lifecycle"
124
+ ],
125
+ "components": [
126
+ "framework:django",
127
+ "lang:python"
128
+ ],
129
+ "stackDetectionAware": true
130
+ },
131
+ "fastapi": {
132
+ "description": "Common rules plus the FastAPI-aware component set (extends `python`), installed when `keryx stack detect` finds a matching tag (fail open when detection is unavailable or uncertain).",
133
+ "modules": [
134
+ "core-common-rules",
135
+ "skill-lifecycle"
136
+ ],
137
+ "components": [
138
+ "framework:fastapi",
139
+ "lang:python"
140
+ ],
141
+ "stackDetectionAware": true
142
+ },
143
+ "rust": {
144
+ "description": "Common rules plus the Rust stack pack component (`rust-rules` + `rust-skills`, from src/gdskills/bundled/stacks/rust/), installed when `keryx stack detect` finds a matching tag.",
145
+ "modules": [
146
+ "core-common-rules",
147
+ "skill-lifecycle"
148
+ ],
149
+ "components": [
150
+ "lang:rust"
151
+ ],
152
+ "stackDetectionAware": true
153
+ },
154
+ "java-kotlin-spring": {
155
+ "description": "Common rules plus the Java/Kotlin + Spring Boot stack pack component (`java-kotlin-spring-rules` + `java-kotlin-spring-skills`, from src/gdskills/bundled/stacks/java-kotlin-spring/), installed when `keryx stack detect` finds a matching tag.",
156
+ "modules": [
157
+ "core-common-rules",
158
+ "skill-lifecycle"
159
+ ],
160
+ "components": [
161
+ "framework:java-kotlin-spring"
162
+ ],
163
+ "stackDetectionAware": true
164
+ },
119
165
  "docker-k8s-terraform": {
120
166
  "description": "Common rules plus the Docker/Kubernetes/Terraform tool pack component, installed when `keryx stack detect` finds a matching tag (docker, docker-compose, or terraform). Experimental: has not cleared the honest behavioral eval gate yet.",
121
167
  "modules": [
@@ -138,80 +184,6 @@
138
184
  ],
139
185
  "stackDetectionAware": true
140
186
  },
141
- "full": {
142
- "description": "Every registered module and component, unconditionally.",
143
- "modules": [
144
- "core-common-rules",
145
- "skill-lifecycle",
146
- "orchestration-skills",
147
- "quality-skills",
148
- "review-core-skills",
149
- "react-review-skills",
150
- "mobx-review-skill",
151
- "mobx-store-template-rule",
152
- "mobx-rules",
153
- "mobx-skills",
154
- "nestjs-review-skill",
155
- "nestjs-dto-rule",
156
- "nestjs-rules",
157
- "nestjs-skills",
158
- "python-rules",
159
- "python-skills",
160
- "ts-js-node-rules",
161
- "ts-js-node-skills",
162
- "react-rules",
163
- "react-skills",
164
- "go-rules",
165
- "go-skills",
166
- "vue-rules",
167
- "vue-skills",
168
- "angular-rules",
169
- "angular-skills",
170
- "nextjs-nuxt-rules",
171
- "nextjs-nuxt-skills",
172
- "docker-k8s-terraform-rules",
173
- "docker-k8s-terraform-skills",
174
- "ci-github-gitlab-rules",
175
- "ci-github-gitlab-skills",
176
- "php-laravel-rules",
177
- "php-laravel-skills",
178
- "ruby-rails-rules",
179
- "ruby-rails-skills",
180
- "c-cpp-rules",
181
- "c-cpp-skills",
182
- "sql-db-rules",
183
- "sql-db-skills",
184
- "csharp-dotnet-rules",
185
- "csharp-dotnet-skills",
186
- "swift-ios-rules",
187
- "swift-ios-skills",
188
- "kotlin-android-rules",
189
- "kotlin-android-skills",
190
- "flutter-dart-rules",
191
- "flutter-dart-skills"
192
- ],
193
- "components": [
194
- "lang:ts-js-node",
195
- "framework:react",
196
- "capability:mobx",
197
- "framework:nestjs",
198
- "lang:python",
199
- "lang:go",
200
- "framework:vue",
201
- "framework:angular",
202
- "framework:nextjs-nuxt",
203
- "tool:docker-k8s-terraform",
204
- "tool:ci-github-gitlab",
205
- "framework:php-laravel",
206
- "framework:ruby-rails",
207
- "lang:c-cpp",
208
- "capability:sql-db",
209
- "lang:csharp-dotnet",
210
- "framework:swift-ios",
211
- "framework:kotlin-android",
212
- "framework:flutter-dart"
213
- ]
214
- },
215
187
  "php-laravel": {
216
188
  "description": "Common rules plus the PHP/Laravel stack pack component (`php-laravel-rules` + `php-laravel-skills`, from src/gdskills/bundled/stacks/php-laravel/), installed when `keryx stack detect` finds a matching tag.",
217
189
  "modules": [
@@ -299,6 +271,92 @@
299
271
  "framework:flutter-dart"
300
272
  ],
301
273
  "stackDetectionAware": true
274
+ },
275
+ "full": {
276
+ "description": "Every registered module and component, unconditionally.",
277
+ "modules": [
278
+ "core-common-rules",
279
+ "skill-lifecycle",
280
+ "orchestration-skills",
281
+ "quality-skills",
282
+ "review-core-skills",
283
+ "react-review-skills",
284
+ "mobx-review-skill",
285
+ "mobx-store-template-rule",
286
+ "mobx-rules",
287
+ "mobx-skills",
288
+ "nestjs-review-skill",
289
+ "nestjs-dto-rule",
290
+ "nestjs-rules",
291
+ "nestjs-skills",
292
+ "python-rules",
293
+ "python-skills",
294
+ "ts-js-node-rules",
295
+ "ts-js-node-skills",
296
+ "react-rules",
297
+ "react-skills",
298
+ "go-rules",
299
+ "go-skills",
300
+ "vue-rules",
301
+ "vue-skills",
302
+ "angular-rules",
303
+ "angular-skills",
304
+ "nextjs-nuxt-rules",
305
+ "nextjs-nuxt-skills",
306
+ "django-rules",
307
+ "django-skills",
308
+ "fastapi-rules",
309
+ "fastapi-skills",
310
+ "rust-rules",
311
+ "rust-skills",
312
+ "java-kotlin-spring-rules",
313
+ "java-kotlin-spring-skills",
314
+ "docker-k8s-terraform-rules",
315
+ "docker-k8s-terraform-skills",
316
+ "ci-github-gitlab-rules",
317
+ "ci-github-gitlab-skills",
318
+ "php-laravel-rules",
319
+ "php-laravel-skills",
320
+ "ruby-rails-rules",
321
+ "ruby-rails-skills",
322
+ "c-cpp-rules",
323
+ "c-cpp-skills",
324
+ "sql-db-rules",
325
+ "sql-db-skills",
326
+ "csharp-dotnet-rules",
327
+ "csharp-dotnet-skills",
328
+ "swift-ios-rules",
329
+ "swift-ios-skills",
330
+ "kotlin-android-rules",
331
+ "kotlin-android-skills",
332
+ "flutter-dart-rules",
333
+ "flutter-dart-skills"
334
+ ],
335
+ "components": [
336
+ "lang:ts-js-node",
337
+ "framework:react",
338
+ "capability:mobx",
339
+ "framework:nestjs",
340
+ "lang:python",
341
+ "lang:go",
342
+ "framework:vue",
343
+ "framework:angular",
344
+ "framework:nextjs-nuxt",
345
+ "framework:django",
346
+ "framework:fastapi",
347
+ "lang:rust",
348
+ "framework:java-kotlin-spring",
349
+ "tool:docker-k8s-terraform",
350
+ "tool:ci-github-gitlab",
351
+ "framework:php-laravel",
352
+ "framework:ruby-rails",
353
+ "lang:c-cpp",
354
+ "capability:sql-db",
355
+ "lang:csharp-dotnet",
356
+ "framework:swift-ios",
357
+ "framework:kotlin-android",
358
+ "framework:flutter-dart"
359
+ ]
302
360
  }
303
361
  },
304
362
  "modules": {
@@ -522,7 +580,7 @@
522
580
  "dependencies": [],
523
581
  "defaultInstall": true,
524
582
  "cost": "light",
525
- "stability": "stable"
583
+ "stability": "experimental"
526
584
  },
527
585
  "python-skills": {
528
586
  "kind": "skill",
@@ -537,7 +595,7 @@
537
595
  "dependencies": [],
538
596
  "defaultInstall": true,
539
597
  "cost": "medium",
540
- "stability": "stable"
598
+ "stability": "experimental"
541
599
  },
542
600
  "ts-js-node-rules": {
543
601
  "kind": "rule",
@@ -667,6 +725,40 @@
667
725
  "cost": "medium",
668
726
  "stability": "experimental"
669
727
  },
728
+ "django-rules": {
729
+ "kind": "rule",
730
+ "description": "Django stack pack rules (coding-style, patterns, security, testing; scoped to *.py/*.pyi, extends python) from src/gdskills/bundled/stacks/django/rules/.",
731
+ "paths": [
732
+ "src/gdskills/bundled/stacks/django/rules/*.mdc"
733
+ ],
734
+ "targets": [
735
+ "claude",
736
+ "keryx-shell"
737
+ ],
738
+ "dependencies": [
739
+ "python-rules"
740
+ ],
741
+ "defaultInstall": true,
742
+ "cost": "light",
743
+ "stability": "experimental"
744
+ },
745
+ "django-skills": {
746
+ "kind": "skill",
747
+ "description": "Django stack pack skills (implementation, testing, code review, build-fix, migrate) from src/gdskills/bundled/stacks/django/skills/.",
748
+ "paths": [
749
+ "src/gdskills/bundled/stacks/django/skills/**"
750
+ ],
751
+ "targets": [
752
+ "claude",
753
+ "keryx-shell"
754
+ ],
755
+ "dependencies": [
756
+ "python-skills"
757
+ ],
758
+ "defaultInstall": true,
759
+ "cost": "medium",
760
+ "stability": "experimental"
761
+ },
670
762
  "vue-rules": {
671
763
  "kind": "rule",
672
764
  "description": "Vue stack pack rules (coding-style, patterns, security, testing; scoped to *.vue) from src/gdskills/bundled/stacks/vue/rules/.",
@@ -684,6 +776,23 @@
684
776
  "cost": "light",
685
777
  "stability": "experimental"
686
778
  },
779
+ "fastapi-rules": {
780
+ "kind": "rule",
781
+ "description": "FastAPI stack pack rules (coding-style, patterns, security, testing; scoped to *.py/*.pyi, extends python) from src/gdskills/bundled/stacks/fastapi/rules/.",
782
+ "paths": [
783
+ "src/gdskills/bundled/stacks/fastapi/rules/*.mdc"
784
+ ],
785
+ "targets": [
786
+ "claude",
787
+ "keryx-shell"
788
+ ],
789
+ "dependencies": [
790
+ "python-rules"
791
+ ],
792
+ "defaultInstall": true,
793
+ "cost": "light",
794
+ "stability": "experimental"
795
+ },
687
796
  "vue-skills": {
688
797
  "kind": "skill",
689
798
  "description": "Vue stack pack skills (implementation, testing, code review, build-fix, Vue 2 to Vue 3 migration) from src/gdskills/bundled/stacks/vue/skills/.",
@@ -701,6 +810,23 @@
701
810
  "cost": "medium",
702
811
  "stability": "experimental"
703
812
  },
813
+ "fastapi-skills": {
814
+ "kind": "skill",
815
+ "description": "FastAPI stack pack skills (implementation, testing, code review, build-fix) from src/gdskills/bundled/stacks/fastapi/skills/.",
816
+ "paths": [
817
+ "src/gdskills/bundled/stacks/fastapi/skills/**"
818
+ ],
819
+ "targets": [
820
+ "claude",
821
+ "keryx-shell"
822
+ ],
823
+ "dependencies": [
824
+ "python-skills"
825
+ ],
826
+ "defaultInstall": true,
827
+ "cost": "medium",
828
+ "stability": "experimental"
829
+ },
704
830
  "angular-rules": {
705
831
  "kind": "rule",
706
832
  "description": "Angular stack pack rules (coding-style, patterns, security, testing; scoped to *.ts/*.html) from src/gdskills/bundled/stacks/angular/rules/.",
@@ -718,6 +844,21 @@
718
844
  "cost": "light",
719
845
  "stability": "experimental"
720
846
  },
847
+ "rust-rules": {
848
+ "kind": "rule",
849
+ "description": "Rust stack pack rules (coding-style, patterns, security, testing; scoped to *.rs) from src/gdskills/bundled/stacks/rust/rules/.",
850
+ "paths": [
851
+ "src/gdskills/bundled/stacks/rust/rules/*.mdc"
852
+ ],
853
+ "targets": [
854
+ "claude",
855
+ "keryx-shell"
856
+ ],
857
+ "dependencies": [],
858
+ "defaultInstall": true,
859
+ "cost": "light",
860
+ "stability": "experimental"
861
+ },
721
862
  "angular-skills": {
722
863
  "kind": "skill",
723
864
  "description": "Angular stack pack skills (implementation, testing, code review, build-fix) from src/gdskills/bundled/stacks/angular/skills/.",
@@ -735,6 +876,21 @@
735
876
  "cost": "medium",
736
877
  "stability": "experimental"
737
878
  },
879
+ "rust-skills": {
880
+ "kind": "skill",
881
+ "description": "Rust stack pack skills (implementation, testing, code review, build-fix) from src/gdskills/bundled/stacks/rust/skills/.",
882
+ "paths": [
883
+ "src/gdskills/bundled/stacks/rust/skills/**"
884
+ ],
885
+ "targets": [
886
+ "claude",
887
+ "keryx-shell"
888
+ ],
889
+ "dependencies": [],
890
+ "defaultInstall": true,
891
+ "cost": "medium",
892
+ "stability": "experimental"
893
+ },
738
894
  "nextjs-nuxt-rules": {
739
895
  "kind": "rule",
740
896
  "description": "Next.js/Nuxt meta-framework stack pack rules (coding-style, patterns, security, testing; scoped to *.tsx/*.jsx/*.vue) from src/gdskills/bundled/stacks/nextjs-nuxt/rules/.",
@@ -753,6 +909,21 @@
753
909
  "cost": "light",
754
910
  "stability": "experimental"
755
911
  },
912
+ "java-kotlin-spring-rules": {
913
+ "kind": "rule",
914
+ "description": "Java/Kotlin + Spring Boot stack pack rules (coding-style, patterns, security, testing; scoped to *.java/*.kt/*.kts) from src/gdskills/bundled/stacks/java-kotlin-spring/rules/.",
915
+ "paths": [
916
+ "src/gdskills/bundled/stacks/java-kotlin-spring/rules/*.mdc"
917
+ ],
918
+ "targets": [
919
+ "claude",
920
+ "keryx-shell"
921
+ ],
922
+ "dependencies": [],
923
+ "defaultInstall": true,
924
+ "cost": "light",
925
+ "stability": "experimental"
926
+ },
756
927
  "nextjs-nuxt-skills": {
757
928
  "kind": "skill",
758
929
  "description": "Next.js/Nuxt meta-framework stack pack skills (implementation, testing, code review, build-fix, upgrade migration) from src/gdskills/bundled/stacks/nextjs-nuxt/skills/.",
@@ -771,6 +942,21 @@
771
942
  "cost": "medium",
772
943
  "stability": "experimental"
773
944
  },
945
+ "java-kotlin-spring-skills": {
946
+ "kind": "skill",
947
+ "description": "Java/Kotlin + Spring Boot stack pack skills (implementation, testing, code review, build-fix, migrate) from src/gdskills/bundled/stacks/java-kotlin-spring/skills/.",
948
+ "paths": [
949
+ "src/gdskills/bundled/stacks/java-kotlin-spring/skills/**"
950
+ ],
951
+ "targets": [
952
+ "claude",
953
+ "keryx-shell"
954
+ ],
955
+ "dependencies": [],
956
+ "defaultInstall": true,
957
+ "cost": "medium",
958
+ "stability": "experimental"
959
+ },
774
960
  "mobx-rules": {
775
961
  "kind": "rule",
776
962
  "description": "MobX stack pack rules (coding-style, patterns, security, testing; scoped to *.ts/*.tsx) from src/gdskills/bundled/stacks/mobx/rules/. Complements, does not replace, the existing mobx-store-template-rule.",
@@ -1233,6 +1419,63 @@
1233
1419
  "origin": "authored"
1234
1420
  }
1235
1421
  },
1422
+ "framework:django": {
1423
+ "family": "framework",
1424
+ "modules": [
1425
+ "django-rules",
1426
+ "django-skills"
1427
+ ],
1428
+ "detectionMarkers": [
1429
+ "django"
1430
+ ],
1431
+ "provenance": {
1432
+ "origin": "authored",
1433
+ "sourceRef": "flow 335, Wave 4 batch 3"
1434
+ }
1435
+ },
1436
+ "framework:fastapi": {
1437
+ "family": "framework",
1438
+ "modules": [
1439
+ "fastapi-rules",
1440
+ "fastapi-skills"
1441
+ ],
1442
+ "detectionMarkers": [
1443
+ "fastapi"
1444
+ ],
1445
+ "provenance": {
1446
+ "origin": "authored",
1447
+ "sourceRef": "flow 335, Wave 4 batch 3"
1448
+ }
1449
+ },
1450
+ "lang:rust": {
1451
+ "family": "language",
1452
+ "modules": [
1453
+ "rust-rules",
1454
+ "rust-skills"
1455
+ ],
1456
+ "detectionMarkers": [
1457
+ "rust"
1458
+ ],
1459
+ "provenance": {
1460
+ "origin": "authored",
1461
+ "sourceRef": "flow 335, Wave 4 batch 3"
1462
+ }
1463
+ },
1464
+ "framework:java-kotlin-spring": {
1465
+ "family": "framework",
1466
+ "modules": [
1467
+ "java-kotlin-spring-rules",
1468
+ "java-kotlin-spring-skills"
1469
+ ],
1470
+ "detectionMarkers": [
1471
+ "spring-boot",
1472
+ "spring"
1473
+ ],
1474
+ "provenance": {
1475
+ "origin": "authored",
1476
+ "sourceRef": "flow 335, Wave 4 batch 3"
1477
+ }
1478
+ },
1236
1479
  "tool:docker-k8s-terraform": {
1237
1480
  "family": "tool",
1238
1481
  "modules": [
@@ -151,6 +151,17 @@ Capture:
151
151
  - Exit code
152
152
  - List of circular chains (if any)
153
153
 
154
+ **2.4 GitHub CI results (only when the dispatch names a PR or run id):**
155
+ ```bash
156
+ gh pr checks <pr> --json name,state,link # or use the run id already given
157
+ ```
158
+ For each failed check, when `review.jev.ci_triage` is on, run `keryx review
159
+ ci-triage --run <id> --json` before filing it as a finding — `real-regression`
160
+ files CRITICAL as usual; `flaky`/`deterministic` files INFO, "likely flaky —
161
+ rerun before treating as a defect"; `infra` files INFO, "infra failure, not a
162
+ code defect." Every red check still appears; only severity and note change.
163
+ Setting off → file CRITICAL as before, no Jev call.
164
+
154
165
  ---
155
166
 
156
167
  ### Phase 3: ANALYZE
@@ -259,26 +270,13 @@ STATUS: BLOCKED — could not run checks (missing tooling, wrong directory
259
270
 
260
271
  ## Integration with job-orchestrator
261
272
 
262
- The orchestrator dispatches `code-verifier` at two points:
263
-
264
- **After task-implementer wave (pre-review gate):**
265
- ```
266
- code-verifier:
267
- codebase_path: <worktree_path>
268
- scope: changed
269
- base_branch: <base_branch from JOB_STATE>
270
- → If gate: FAIL → dispatch fix tasks → re-run code-verifier
271
- → If gate: PASS → proceed to review
272
- ```
273
+ The orchestrator dispatches `code-verifier` at two points, always with
274
+ `codebase_path: <worktree_path>` and `scope: changed`:
273
275
 
274
- **After fix iterations (post-fix gate):**
275
- ```
276
- code-verifier:
277
- codebase_path: <worktree_path>
278
- scope: changed
279
- → If gate still FAIL after 3 iterations → report as BLOCKED, skip to report
280
- → If gate: PASS → proceed to report
281
- ```
276
+ | Dispatch point | Extra input | On FAIL | On PASS |
277
+ |---|---|---|---|
278
+ | After task-implementer wave (pre-review gate) | `base_branch` from JOB_STATE | dispatch fix tasks, re-run | proceed to review |
279
+ | After fix iterations (post-fix gate) | — | after 3 iterations: report BLOCKED, skip to report | proceed to report |
282
280
 
283
281
  **The orchestrator's internal "checks" step (2.8) is replaced by `code-verifier` dispatch.**
284
282
 
@@ -287,14 +285,9 @@ code-verifier:
287
285
  ## Standalone Usage
288
286
 
289
287
  ```bash
290
- # Run on current directory, changed files only
291
- /code-verifier
292
-
293
- # Run on specific project
288
+ /code-verifier # current directory, changed files only
294
289
  /code-verifier --path /path/to/project
295
-
296
- # Full project scan (not just changed files)
297
- /code-verifier --scope full
290
+ /code-verifier --scope full # full project scan
298
291
  ```
299
292
 
300
293
  ---
@@ -26,13 +26,9 @@ license: "MIT"
26
26
  Flow Orchestrator is the Task Manager-aware implementation orchestrator. Plan bridge: publish the tasks with `plan_set` under the ids `T1`…`Tn`, mirror each `keryx flow task done` with `plan_update`, and publish Phase 4's completion choice as `proposed` — see the `session-plan-bridge` rule.
27
27
  It wraps the existing gdskills pipeline with `keryx flow` state.
28
28
 
29
- Use this skill instead of `job-orchestrator` when the user wants a managed
30
- story/issue lifecycle with frozen acceptance criteria, task state, an explicit
31
- completion choice, Code Health, and a durable flow package in
32
- `.metaproject/flows/`.
29
+ Use this skill instead of `job-orchestrator` when the user wants a managed story/issue lifecycle with frozen acceptance criteria, task state, an explicit completion choice, Code Health, and a durable flow package in `.metaproject/flows/`.
33
30
 
34
- Do not modify `job-orchestrator` or `task-implementer` behavior. They remain
35
- usable without Task Manager. This skill coordinates them through flow state.
31
+ Do not modify `job-orchestrator` or `task-implementer` behavior. They remain usable without Task Manager. This skill coordinates them through flow state.
36
32
 
37
33
  ## Hard Preconditions
38
34
 
@@ -311,6 +307,8 @@ Recommended worker routing:
311
307
  | `review` | `review-orchestrator` |
312
308
  | `docs` | `job-documenter`, `prd-creator`, or documentation-specific project skill |
313
309
 
310
+ **Before the first `task-implementer` dispatch of the run:** when `review.jev.edit_guard` is on (`.metaproject/tasks.config.json`), confirm the guard is active — `keryx review jev-edit-guard status`, else `keryx review jev-edit-guard install` — and say why in one line.
311
+
314
312
  ### Worker communication is schema-governed
315
313
 
316
314
  Workers do not inherit session state; every dispatch is constructed explicitly
@@ -546,6 +544,8 @@ the bound plus an escalation — never an unbounded loop.
546
544
  2. If findings or required check failures remain, create or update a flow fix
547
545
  task, dispatch `task-implementer`, push the fix, and run review again.
548
546
 
547
+ **A required check failure is not automatically a fix task.** When `review.jev.ci_triage` is on, run `keryx review ci-triage --run <id> --json` on each failed run first: `top: flaky` (or a `deterministic` override) → rerun once (`gh run rerun --failed <id>`), record it in `journal.md`, and treat a second failure as `real-regression` regardless; `top: real-regression` → investigate and fix as usual; `top: infra` → report it in the completion notes and leave the code alone. The verdict is advisory only — never the sole reason to skip a fix task.
548
+
549
549
  **The threshold is `minor`.** The loop exits when the round reports zero
550
550
  findings at `blocker`, `major` or `minor`; `info` does not hold it. State the
551
551
  remaining `info` findings in the completion report rather than fixing them