@mrciphersmith/keryx 0.3.0 → 0.3.2
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 +4 -1
- package/dist/cli.js +13362 -7078
- package/dist/core.js +11706 -11330
- package/package.json +1 -1
- package/src/gdskills/bundled/agents/go-code-auditor.md +1 -1
- package/src/gdskills/bundled/agents/python-code-auditor.md +1 -1
- package/src/gdskills/bundled/install-manifest.json +271 -4
- package/src/gdskills/bundled/rules/core/model-selection.mdc +51 -0
- package/src/gdskills/bundled/skills/review/review-jev-comments/SKILL.md +184 -0
- package/src/gdskills/bundled/skills/review/review-jev-docs/SKILL.md +189 -0
- package/src/gdskills/bundled/skills/review/review-jev-risk/SKILL.md +190 -0
- package/src/gdskills/bundled/skills/review/review-jev-rules/SKILL.md +267 -0
- package/src/gdskills/bundled/skills/review/review-jev-scenarios/SKILL.md +187 -0
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.detail.md +39 -0
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +1 -1
- package/src/gdskills/bundled/stacks/angular/agent-refs.json +4 -0
- package/src/gdskills/bundled/stacks/angular/governance/eval.json +1751 -0
- package/src/gdskills/bundled/stacks/angular/governance/scout.json +32 -0
- package/src/gdskills/bundled/stacks/angular/pack.json +55 -0
- package/src/gdskills/bundled/stacks/angular/rules/coding-style.mdc +82 -0
- package/src/gdskills/bundled/stacks/angular/rules/patterns.mdc +84 -0
- package/src/gdskills/bundled/stacks/angular/rules/security.mdc +70 -0
- package/src/gdskills/bundled/stacks/angular/rules/testing.mdc +73 -0
- package/src/gdskills/bundled/stacks/angular/skills/angular-build-fix/SKILL.md +127 -0
- package/src/gdskills/bundled/stacks/angular/skills/angular-build-fix/evals.json +72 -0
- package/src/gdskills/bundled/stacks/angular/skills/angular-code-review/SKILL.md +98 -0
- package/src/gdskills/bundled/stacks/angular/skills/angular-code-review/evals.json +73 -0
- package/src/gdskills/bundled/stacks/angular/skills/angular-implementation/SKILL.md +112 -0
- package/src/gdskills/bundled/stacks/angular/skills/angular-implementation/evals.json +74 -0
- package/src/gdskills/bundled/stacks/angular/skills/angular-testing/SKILL.md +102 -0
- package/src/gdskills/bundled/stacks/angular/skills/angular-testing/evals.json +71 -0
- package/src/gdskills/bundled/stacks/mobx/agent-refs.json +4 -0
- package/src/gdskills/bundled/stacks/mobx/governance/eval.json +904 -0
- package/src/gdskills/bundled/stacks/mobx/governance/scout.json +18 -0
- package/src/gdskills/bundled/stacks/mobx/pack.json +28 -0
- package/src/gdskills/bundled/stacks/mobx/rules/coding-style.mdc +91 -0
- package/src/gdskills/bundled/stacks/mobx/rules/patterns.mdc +122 -0
- package/src/gdskills/bundled/stacks/mobx/rules/security.mdc +56 -0
- package/src/gdskills/bundled/stacks/mobx/rules/testing.mdc +63 -0
- package/src/gdskills/bundled/stacks/mobx/skills/mobx-observable-testing/SKILL.md +124 -0
- package/src/gdskills/bundled/stacks/mobx/skills/mobx-observable-testing/evals.json +73 -0
- package/src/gdskills/bundled/stacks/mobx/skills/mobx-store-implementation/SKILL.md +149 -0
- package/src/gdskills/bundled/stacks/mobx/skills/mobx-store-implementation/evals.json +74 -0
- package/src/gdskills/bundled/stacks/nestjs/agent-refs.json +4 -0
- package/src/gdskills/bundled/stacks/nestjs/governance/eval.json +1308 -0
- package/src/gdskills/bundled/stacks/nestjs/governance/scout.json +34 -0
- package/src/gdskills/bundled/stacks/nestjs/pack.json +53 -0
- package/src/gdskills/bundled/stacks/nestjs/rules/coding-style.mdc +70 -0
- package/src/gdskills/bundled/stacks/nestjs/rules/patterns.mdc +83 -0
- package/src/gdskills/bundled/stacks/nestjs/rules/security.mdc +73 -0
- package/src/gdskills/bundled/stacks/nestjs/rules/testing.mdc +69 -0
- package/src/gdskills/bundled/stacks/nestjs/skills/nestjs-build-fix/SKILL.md +157 -0
- package/src/gdskills/bundled/stacks/nestjs/skills/nestjs-build-fix/evals.json +70 -0
- package/src/gdskills/bundled/stacks/nestjs/skills/nestjs-implementation/SKILL.md +129 -0
- package/src/gdskills/bundled/stacks/nestjs/skills/nestjs-implementation/evals.json +71 -0
- package/src/gdskills/bundled/stacks/nestjs/skills/nestjs-testing/SKILL.md +143 -0
- package/src/gdskills/bundled/stacks/nestjs/skills/nestjs-testing/evals.json +69 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/agent-refs.json +4 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/governance/eval.json +2413 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/governance/scout.json +42 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/pack.json +42 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/rules/coding-style.mdc +69 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/rules/patterns.mdc +88 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/rules/security.mdc +72 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/rules/testing.mdc +64 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-build-fix/SKILL.md +147 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-build-fix/evals.json +75 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-code-review/SKILL.md +118 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-code-review/evals.json +76 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-implementation/SKILL.md +135 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-implementation/evals.json +78 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-testing/SKILL.md +116 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-testing/evals.json +75 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-upgrade-migration/SKILL.md +134 -0
- package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-upgrade-migration/evals.json +76 -0
- package/src/gdskills/bundled/stacks/vue/agent-refs.json +4 -0
- package/src/gdskills/bundled/stacks/vue/governance/eval.json +2215 -0
- package/src/gdskills/bundled/stacks/vue/governance/scout.json +42 -0
- package/src/gdskills/bundled/stacks/vue/pack.json +42 -0
- package/src/gdskills/bundled/stacks/vue/rules/coding-style.mdc +73 -0
- package/src/gdskills/bundled/stacks/vue/rules/patterns.mdc +84 -0
- package/src/gdskills/bundled/stacks/vue/rules/security.mdc +60 -0
- package/src/gdskills/bundled/stacks/vue/rules/testing.mdc +69 -0
- package/src/gdskills/bundled/stacks/vue/skills/vue-build-fix/SKILL.md +137 -0
- package/src/gdskills/bundled/stacks/vue/skills/vue-build-fix/evals.json +72 -0
- package/src/gdskills/bundled/stacks/vue/skills/vue-code-review/SKILL.md +120 -0
- package/src/gdskills/bundled/stacks/vue/skills/vue-code-review/evals.json +71 -0
- package/src/gdskills/bundled/stacks/vue/skills/vue-implementation/SKILL.md +122 -0
- package/src/gdskills/bundled/stacks/vue/skills/vue-implementation/evals.json +72 -0
- package/src/gdskills/bundled/stacks/vue/skills/vue-testing/SKILL.md +115 -0
- package/src/gdskills/bundled/stacks/vue/skills/vue-testing/evals.json +72 -0
- package/src/gdskills/bundled/stacks/vue/skills/vue2-to-vue3-migration/SKILL.md +135 -0
- package/src/gdskills/bundled/stacks/vue/skills/vue2-to-vue3-migration/evals.json +71 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mrciphersmith/keryx",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
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": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
schema_version: 1
|
|
3
3
|
name: "go-code-auditor"
|
|
4
|
-
description: "Reviews Go code, read-only, for the 6 stack-specific risk patterns this pack's
|
|
4
|
+
description: "Reviews Go code, read-only, for the 6 stack-specific risk patterns this pack's authors documented for go (correctness, resource, and security patterns particular to Go). Dispatched for a stack-specific code-quality pass distinct from generic review, gated the same stack_requires-style way review-orchestrator already uses for per-stack reviewers."
|
|
5
5
|
role: "A Go-focused code auditor who reads for this stack's known risk patterns without editing anything, and ranks findings by real-world impact rather than listing every theoretical concern equally."
|
|
6
6
|
tools:
|
|
7
7
|
- "read_file"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
schema_version: 1
|
|
3
3
|
name: "python-code-auditor"
|
|
4
|
-
description: "Reviews Python code, read-only, for the 6 stack-specific risk patterns this pack's
|
|
4
|
+
description: "Reviews Python code, read-only, for the 6 stack-specific risk patterns this pack's authors documented for python (correctness, resource, and security patterns particular to Python). Dispatched for a stack-specific code-quality pass distinct from generic review, gated the same stack_requires-style way review-orchestrator already uses for per-stack reviewers."
|
|
5
5
|
role: "A Python-focused code auditor who reads for this stack's known risk patterns without editing anything, and ranks findings by real-world impact rather than listing every theoretical concern equally."
|
|
6
6
|
tools:
|
|
7
7
|
- "read_file"
|
|
@@ -78,6 +78,44 @@
|
|
|
78
78
|
],
|
|
79
79
|
"stackDetectionAware": true
|
|
80
80
|
},
|
|
81
|
+
"vue": {
|
|
82
|
+
"description": "Common rules plus the Vue stack pack component (`vue-rules` + `vue-skills`, from src/gdskills/bundled/stacks/vue/), installed when `keryx stack detect` finds a matching tag.",
|
|
83
|
+
"modules": [
|
|
84
|
+
"core-common-rules",
|
|
85
|
+
"skill-lifecycle"
|
|
86
|
+
],
|
|
87
|
+
"components": [
|
|
88
|
+
"framework:vue",
|
|
89
|
+
"lang:ts-js-node"
|
|
90
|
+
],
|
|
91
|
+
"stackDetectionAware": true
|
|
92
|
+
},
|
|
93
|
+
"angular": {
|
|
94
|
+
"description": "Common rules plus the Angular stack pack component (`angular-rules` + `angular-skills`, from src/gdskills/bundled/stacks/angular/), installed when `keryx stack detect` finds a matching tag.",
|
|
95
|
+
"modules": [
|
|
96
|
+
"core-common-rules",
|
|
97
|
+
"skill-lifecycle"
|
|
98
|
+
],
|
|
99
|
+
"components": [
|
|
100
|
+
"framework:angular",
|
|
101
|
+
"lang:ts-js-node"
|
|
102
|
+
],
|
|
103
|
+
"stackDetectionAware": true
|
|
104
|
+
},
|
|
105
|
+
"nextjs-nuxt": {
|
|
106
|
+
"description": "Common rules plus the Next.js/Nuxt meta-framework stack pack component (`nextjs-nuxt-rules` + `nextjs-nuxt-skills`, from src/gdskills/bundled/stacks/nextjs-nuxt/) alongside its React and Vue bases, installed when `keryx stack detect` finds a matching tag (nextjs or nuxt).",
|
|
107
|
+
"modules": [
|
|
108
|
+
"core-common-rules",
|
|
109
|
+
"skill-lifecycle"
|
|
110
|
+
],
|
|
111
|
+
"components": [
|
|
112
|
+
"framework:react",
|
|
113
|
+
"framework:vue",
|
|
114
|
+
"framework:nextjs-nuxt",
|
|
115
|
+
"lang:ts-js-node"
|
|
116
|
+
],
|
|
117
|
+
"stackDetectionAware": true
|
|
118
|
+
},
|
|
81
119
|
"full": {
|
|
82
120
|
"description": "Every registered module and component, unconditionally.",
|
|
83
121
|
"modules": [
|
|
@@ -89,8 +127,12 @@
|
|
|
89
127
|
"react-review-skills",
|
|
90
128
|
"mobx-review-skill",
|
|
91
129
|
"mobx-store-template-rule",
|
|
130
|
+
"mobx-rules",
|
|
131
|
+
"mobx-skills",
|
|
92
132
|
"nestjs-review-skill",
|
|
93
133
|
"nestjs-dto-rule",
|
|
134
|
+
"nestjs-rules",
|
|
135
|
+
"nestjs-skills",
|
|
94
136
|
"python-rules",
|
|
95
137
|
"python-skills",
|
|
96
138
|
"ts-js-node-rules",
|
|
@@ -98,7 +140,13 @@
|
|
|
98
140
|
"react-rules",
|
|
99
141
|
"react-skills",
|
|
100
142
|
"go-rules",
|
|
101
|
-
"go-skills"
|
|
143
|
+
"go-skills",
|
|
144
|
+
"vue-rules",
|
|
145
|
+
"vue-skills",
|
|
146
|
+
"angular-rules",
|
|
147
|
+
"angular-skills",
|
|
148
|
+
"nextjs-nuxt-rules",
|
|
149
|
+
"nextjs-nuxt-skills"
|
|
102
150
|
],
|
|
103
151
|
"components": [
|
|
104
152
|
"lang:ts-js-node",
|
|
@@ -106,7 +154,10 @@
|
|
|
106
154
|
"capability:mobx",
|
|
107
155
|
"framework:nestjs",
|
|
108
156
|
"lang:python",
|
|
109
|
-
"lang:go"
|
|
157
|
+
"lang:go",
|
|
158
|
+
"framework:vue",
|
|
159
|
+
"framework:angular",
|
|
160
|
+
"framework:nextjs-nuxt"
|
|
110
161
|
]
|
|
111
162
|
}
|
|
112
163
|
},
|
|
@@ -441,6 +492,178 @@
|
|
|
441
492
|
"defaultInstall": true,
|
|
442
493
|
"cost": "medium",
|
|
443
494
|
"stability": "stable"
|
|
495
|
+
},
|
|
496
|
+
"nestjs-rules": {
|
|
497
|
+
"kind": "rule",
|
|
498
|
+
"description": "NestJS stack pack rules (coding-style, patterns, security, testing; scoped to *.ts) from src/gdskills/bundled/stacks/nestjs/rules/. Complements, does not replace, the existing nestjs-dto-rule.",
|
|
499
|
+
"paths": [
|
|
500
|
+
"src/gdskills/bundled/stacks/nestjs/rules/*.mdc"
|
|
501
|
+
],
|
|
502
|
+
"targets": [
|
|
503
|
+
"claude",
|
|
504
|
+
"keryx-shell"
|
|
505
|
+
],
|
|
506
|
+
"dependencies": [
|
|
507
|
+
"ts-js-node-rules"
|
|
508
|
+
],
|
|
509
|
+
"defaultInstall": true,
|
|
510
|
+
"cost": "light",
|
|
511
|
+
"stability": "experimental"
|
|
512
|
+
},
|
|
513
|
+
"nestjs-skills": {
|
|
514
|
+
"kind": "skill",
|
|
515
|
+
"description": "NestJS stack pack skills (implementation, testing, build-fix) from src/gdskills/bundled/stacks/nestjs/skills/. Complements, does not replace, the existing nestjs-review-skill (review-backend).",
|
|
516
|
+
"paths": [
|
|
517
|
+
"src/gdskills/bundled/stacks/nestjs/skills/**"
|
|
518
|
+
],
|
|
519
|
+
"targets": [
|
|
520
|
+
"claude",
|
|
521
|
+
"keryx-shell"
|
|
522
|
+
],
|
|
523
|
+
"dependencies": [
|
|
524
|
+
"ts-js-node-skills"
|
|
525
|
+
],
|
|
526
|
+
"defaultInstall": true,
|
|
527
|
+
"cost": "medium",
|
|
528
|
+
"stability": "experimental"
|
|
529
|
+
},
|
|
530
|
+
"vue-rules": {
|
|
531
|
+
"kind": "rule",
|
|
532
|
+
"description": "Vue stack pack rules (coding-style, patterns, security, testing; scoped to *.vue) from src/gdskills/bundled/stacks/vue/rules/.",
|
|
533
|
+
"paths": [
|
|
534
|
+
"src/gdskills/bundled/stacks/vue/rules/*.mdc"
|
|
535
|
+
],
|
|
536
|
+
"targets": [
|
|
537
|
+
"claude",
|
|
538
|
+
"keryx-shell"
|
|
539
|
+
],
|
|
540
|
+
"dependencies": [
|
|
541
|
+
"ts-js-node-rules"
|
|
542
|
+
],
|
|
543
|
+
"defaultInstall": true,
|
|
544
|
+
"cost": "light",
|
|
545
|
+
"stability": "experimental"
|
|
546
|
+
},
|
|
547
|
+
"vue-skills": {
|
|
548
|
+
"kind": "skill",
|
|
549
|
+
"description": "Vue stack pack skills (implementation, testing, code review, build-fix, Vue 2 to Vue 3 migration) from src/gdskills/bundled/stacks/vue/skills/.",
|
|
550
|
+
"paths": [
|
|
551
|
+
"src/gdskills/bundled/stacks/vue/skills/**"
|
|
552
|
+
],
|
|
553
|
+
"targets": [
|
|
554
|
+
"claude",
|
|
555
|
+
"keryx-shell"
|
|
556
|
+
],
|
|
557
|
+
"dependencies": [
|
|
558
|
+
"ts-js-node-skills"
|
|
559
|
+
],
|
|
560
|
+
"defaultInstall": true,
|
|
561
|
+
"cost": "medium",
|
|
562
|
+
"stability": "experimental"
|
|
563
|
+
},
|
|
564
|
+
"angular-rules": {
|
|
565
|
+
"kind": "rule",
|
|
566
|
+
"description": "Angular stack pack rules (coding-style, patterns, security, testing; scoped to *.ts/*.html) from src/gdskills/bundled/stacks/angular/rules/.",
|
|
567
|
+
"paths": [
|
|
568
|
+
"src/gdskills/bundled/stacks/angular/rules/*.mdc"
|
|
569
|
+
],
|
|
570
|
+
"targets": [
|
|
571
|
+
"claude",
|
|
572
|
+
"keryx-shell"
|
|
573
|
+
],
|
|
574
|
+
"dependencies": [
|
|
575
|
+
"ts-js-node-rules"
|
|
576
|
+
],
|
|
577
|
+
"defaultInstall": true,
|
|
578
|
+
"cost": "light",
|
|
579
|
+
"stability": "experimental"
|
|
580
|
+
},
|
|
581
|
+
"angular-skills": {
|
|
582
|
+
"kind": "skill",
|
|
583
|
+
"description": "Angular stack pack skills (implementation, testing, code review, build-fix) from src/gdskills/bundled/stacks/angular/skills/.",
|
|
584
|
+
"paths": [
|
|
585
|
+
"src/gdskills/bundled/stacks/angular/skills/**"
|
|
586
|
+
],
|
|
587
|
+
"targets": [
|
|
588
|
+
"claude",
|
|
589
|
+
"keryx-shell"
|
|
590
|
+
],
|
|
591
|
+
"dependencies": [
|
|
592
|
+
"ts-js-node-skills"
|
|
593
|
+
],
|
|
594
|
+
"defaultInstall": true,
|
|
595
|
+
"cost": "medium",
|
|
596
|
+
"stability": "experimental"
|
|
597
|
+
},
|
|
598
|
+
"nextjs-nuxt-rules": {
|
|
599
|
+
"kind": "rule",
|
|
600
|
+
"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/.",
|
|
601
|
+
"paths": [
|
|
602
|
+
"src/gdskills/bundled/stacks/nextjs-nuxt/rules/*.mdc"
|
|
603
|
+
],
|
|
604
|
+
"targets": [
|
|
605
|
+
"claude",
|
|
606
|
+
"keryx-shell"
|
|
607
|
+
],
|
|
608
|
+
"dependencies": [
|
|
609
|
+
"react-rules",
|
|
610
|
+
"vue-rules"
|
|
611
|
+
],
|
|
612
|
+
"defaultInstall": true,
|
|
613
|
+
"cost": "light",
|
|
614
|
+
"stability": "experimental"
|
|
615
|
+
},
|
|
616
|
+
"nextjs-nuxt-skills": {
|
|
617
|
+
"kind": "skill",
|
|
618
|
+
"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/.",
|
|
619
|
+
"paths": [
|
|
620
|
+
"src/gdskills/bundled/stacks/nextjs-nuxt/skills/**"
|
|
621
|
+
],
|
|
622
|
+
"targets": [
|
|
623
|
+
"claude",
|
|
624
|
+
"keryx-shell"
|
|
625
|
+
],
|
|
626
|
+
"dependencies": [
|
|
627
|
+
"react-skills",
|
|
628
|
+
"vue-skills"
|
|
629
|
+
],
|
|
630
|
+
"defaultInstall": true,
|
|
631
|
+
"cost": "medium",
|
|
632
|
+
"stability": "experimental"
|
|
633
|
+
},
|
|
634
|
+
"mobx-rules": {
|
|
635
|
+
"kind": "rule",
|
|
636
|
+
"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.",
|
|
637
|
+
"paths": [
|
|
638
|
+
"src/gdskills/bundled/stacks/mobx/rules/*.mdc"
|
|
639
|
+
],
|
|
640
|
+
"targets": [
|
|
641
|
+
"claude",
|
|
642
|
+
"keryx-shell"
|
|
643
|
+
],
|
|
644
|
+
"dependencies": [
|
|
645
|
+
"react-rules"
|
|
646
|
+
],
|
|
647
|
+
"defaultInstall": true,
|
|
648
|
+
"cost": "light",
|
|
649
|
+
"stability": "experimental"
|
|
650
|
+
},
|
|
651
|
+
"mobx-skills": {
|
|
652
|
+
"kind": "skill",
|
|
653
|
+
"description": "MobX stack pack skills (store implementation, observable testing) from src/gdskills/bundled/stacks/mobx/skills/. Complements, does not replace, the existing mobx-review-skill (code-mobx-store-review).",
|
|
654
|
+
"paths": [
|
|
655
|
+
"src/gdskills/bundled/stacks/mobx/skills/**"
|
|
656
|
+
],
|
|
657
|
+
"targets": [
|
|
658
|
+
"claude",
|
|
659
|
+
"keryx-shell"
|
|
660
|
+
],
|
|
661
|
+
"dependencies": [
|
|
662
|
+
"react-skills"
|
|
663
|
+
],
|
|
664
|
+
"defaultInstall": true,
|
|
665
|
+
"cost": "medium",
|
|
666
|
+
"stability": "experimental"
|
|
444
667
|
}
|
|
445
668
|
},
|
|
446
669
|
"components": {
|
|
@@ -478,7 +701,9 @@
|
|
|
478
701
|
"family": "capability",
|
|
479
702
|
"modules": [
|
|
480
703
|
"mobx-review-skill",
|
|
481
|
-
"mobx-store-template-rule"
|
|
704
|
+
"mobx-store-template-rule",
|
|
705
|
+
"mobx-rules",
|
|
706
|
+
"mobx-skills"
|
|
482
707
|
],
|
|
483
708
|
"detectionMarkers": [
|
|
484
709
|
"mobx"
|
|
@@ -491,7 +716,9 @@
|
|
|
491
716
|
"family": "framework",
|
|
492
717
|
"modules": [
|
|
493
718
|
"nestjs-review-skill",
|
|
494
|
-
"nestjs-dto-rule"
|
|
719
|
+
"nestjs-dto-rule",
|
|
720
|
+
"nestjs-rules",
|
|
721
|
+
"nestjs-skills"
|
|
495
722
|
],
|
|
496
723
|
"detectionMarkers": [
|
|
497
724
|
"nestjs"
|
|
@@ -525,6 +752,46 @@
|
|
|
525
752
|
"provenance": {
|
|
526
753
|
"origin": "authored"
|
|
527
754
|
}
|
|
755
|
+
},
|
|
756
|
+
"framework:vue": {
|
|
757
|
+
"family": "framework",
|
|
758
|
+
"modules": [
|
|
759
|
+
"vue-rules",
|
|
760
|
+
"vue-skills"
|
|
761
|
+
],
|
|
762
|
+
"detectionMarkers": [
|
|
763
|
+
"vue"
|
|
764
|
+
],
|
|
765
|
+
"provenance": {
|
|
766
|
+
"origin": "authored"
|
|
767
|
+
}
|
|
768
|
+
},
|
|
769
|
+
"framework:angular": {
|
|
770
|
+
"family": "framework",
|
|
771
|
+
"modules": [
|
|
772
|
+
"angular-rules",
|
|
773
|
+
"angular-skills"
|
|
774
|
+
],
|
|
775
|
+
"detectionMarkers": [
|
|
776
|
+
"angular"
|
|
777
|
+
],
|
|
778
|
+
"provenance": {
|
|
779
|
+
"origin": "authored"
|
|
780
|
+
}
|
|
781
|
+
},
|
|
782
|
+
"framework:nextjs-nuxt": {
|
|
783
|
+
"family": "framework",
|
|
784
|
+
"modules": [
|
|
785
|
+
"nextjs-nuxt-rules",
|
|
786
|
+
"nextjs-nuxt-skills"
|
|
787
|
+
],
|
|
788
|
+
"detectionMarkers": [
|
|
789
|
+
"nextjs",
|
|
790
|
+
"nuxt"
|
|
791
|
+
],
|
|
792
|
+
"provenance": {
|
|
793
|
+
"origin": "authored"
|
|
794
|
+
}
|
|
528
795
|
}
|
|
529
796
|
}
|
|
530
797
|
}
|
|
@@ -83,6 +83,57 @@ residue, and it is kept in the smallest shape that works:
|
|
|
83
83
|
A model whose name is a codename carrying no size is unrankable by design. That
|
|
84
84
|
is the honest outcome, not a gap to be patched with folklore.
|
|
85
85
|
|
|
86
|
+
**Version is deliberately not ranked here.** `rankModelId` never parses a
|
|
87
|
+
version number out of an id — two ids in the same size-word family but a
|
|
88
|
+
different generation (an older vs. a newer numbered release of the same
|
|
89
|
+
line) rank IDENTICALLY through this resolution, and a
|
|
90
|
+
`standard`/`light`/`deep` dispatch never distinguishes between them. That
|
|
91
|
+
stays true for `spawn_subagent` and `keryx review tier` after the decision
|
|
92
|
+
below; it is a DIFFERENT consumer's rule, not this one's.
|
|
93
|
+
|
|
94
|
+
The routing "derived default table" (`deriveDefaultTable`,
|
|
95
|
+
`src/harness/routing/derive-default-table.ts`, flow 327/PRD §6.3) is that
|
|
96
|
+
different consumer: it picks one model per routing category (`review`,
|
|
97
|
+
`subagents`, `quick`, …) from a whole connected catalogue, not a tier
|
|
98
|
+
relative to the session. The operator decided, 2026-09-25 (review of PR #718:
|
|
99
|
+
a session's newer release lost a tie to an older release of the SAME family
|
|
100
|
+
it should have beaten), that WITHIN the same family and vendor a newer
|
|
101
|
+
version ranks higher there — the family word (a size marker from this same
|
|
102
|
+
`MODEL_RANK_HINTS` list) already carries the size class, so version is free
|
|
103
|
+
to order generations within it. That table reuses
|
|
104
|
+
`rankModelId`/`MODEL_RANK_HINTS` UNMODIFIED for the size axis and adds its
|
|
105
|
+
own separate, conservative version parse on top of it — nothing above
|
|
106
|
+
changes for this module's own tier resolution.
|
|
107
|
+
|
|
108
|
+
That version parse (`parseModelVersion`/`familyKey`, round 2) reads BOTH a
|
|
109
|
+
dotted id (`vendor-opus-5.5`, `gemini-3.8-flash`) and a real
|
|
110
|
+
Anthropic-style HYPHENATED one, where a run of 2-3 adjacent short (1-2
|
|
111
|
+
digit) numeric tokens reads as a dotted version (`vendor-opus-4-8` → `4.8`).
|
|
112
|
+
It still refuses a date/snapshot-shaped token (6-8 bare digits) and more
|
|
113
|
+
than one numeric group in the same id — no version rather than a guess. A
|
|
114
|
+
`gpt-4o`-style id (a short number plus one trailing letter) parses the
|
|
115
|
+
number alone as the version, the letter kept only as an ignored variant
|
|
116
|
+
tag, so `gpt-4o` and `gpt-4.1` compare within the same family instead of
|
|
117
|
+
never comparing at all. Two versions of the same family are never decided
|
|
118
|
+
by alphabetical order — the id-string fallback only applies when neither
|
|
119
|
+
side has a parseable version.
|
|
120
|
+
|
|
121
|
+
**A parameter-size token is never a version (round 3, review of PR #718).**
|
|
122
|
+
`7b`, `32b`, `70b`, `1.5b`, `8x7b` — a total or MoE "N experts x M billion"
|
|
123
|
+
param count — always stay in `familyKey` and are never fed to
|
|
124
|
+
`parseModelVersion`. Before this fix, the letter-variant shape meant for
|
|
125
|
+
`gpt-4o` (`/^(\d{1,2})([a-z])$/`, any trailing lowercase letter) also
|
|
126
|
+
matched a size token, so `qwen2.5-coder-7b` and `qwen2.5-coder-32b` were
|
|
127
|
+
misread as the SAME family at "version" 7 vs. 32 — merging two genuinely
|
|
128
|
+
different-sized models and ranking the smaller one "newer". The letter
|
|
129
|
+
variant is now restricted to the one real vendor shape that needs it
|
|
130
|
+
(`4o`'s trailing `o`); every other trailing letter after a short digit run
|
|
131
|
+
is a size suffix, so `qwen2.5-coder-7b`/`qwen2.5-coder-32b` and
|
|
132
|
+
`llama-3.3-70b`/`llama-3.3-8b` key to different families and are never
|
|
133
|
+
version-compared against each other. A trailing `-latest`/`-preview` alias
|
|
134
|
+
word is also stripped from `familyKey` only (never from the id itself), so
|
|
135
|
+
`vendor-3-7-sonnet-latest` joins the same family as `vendor-sonnet-5`.
|
|
136
|
+
|
|
86
137
|
## Falling back
|
|
87
138
|
|
|
88
139
|
Ranking is **refused**, and every tier keeps the session's provider and model,
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-jev-comments
|
|
3
|
+
model_tier: light
|
|
4
|
+
description: |
|
|
5
|
+
Use when: an ADDITIONAL, machine-scored pass is wanted over open PR review comments
|
|
6
|
+
already in the existing ledger — never replacing any other reviewer, and never
|
|
7
|
+
auto-replying or auto-resolving. Dispatched by review-orchestrator in Wave B, via the
|
|
8
|
+
CLI (`keryx review jev-comments`), when `review.jev.comments: true` in
|
|
9
|
+
.metaproject/tasks.config.json and a Jev/OpenRouter credential is resolvable. It is not
|
|
10
|
+
an LLM sub-agent: there is nothing to dispatch through a platform-native agent
|
|
11
|
+
mechanism, and no prose is generated by a model — Jev only answers a `choice` among
|
|
12
|
+
resolved-by-fix/still-open/not-actionable/needs-escalation per open comment; keryx
|
|
13
|
+
writes every word of every finding.
|
|
14
|
+
NOT for: posting a reply, resolving a thread, or deciding what `keryx review comments
|
|
15
|
+
reply` sends — this reviewer only ever reads the ledger and labels.
|
|
16
|
+
triggers:
|
|
17
|
+
- "jev comments"
|
|
18
|
+
- "open comments"
|
|
19
|
+
- "review --jev-comments"
|
|
20
|
+
metadata:
|
|
21
|
+
author: "MrCipherSmith"
|
|
22
|
+
version: "1.0.0"
|
|
23
|
+
category: "review"
|
|
24
|
+
compatible_harnesses: "cursor,codex,zed,opencode,claude"
|
|
25
|
+
engine: "jev"
|
|
26
|
+
origin: "authored"
|
|
27
|
+
license: "MIT"
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
# Review — Jev Comments (open PR comment triage)
|
|
31
|
+
|
|
32
|
+
An ADDITIONAL orchestrator reviewer, flow 333. It is a **keryx program**, not an
|
|
33
|
+
LLM sub-agent: `review-orchestrator` never dispatches a platform-native agent
|
|
34
|
+
for it, it runs `keryx review jev-comments` and reads the `--json` output.
|
|
35
|
+
Every finding is composed by keryx; Jev ("System One" on OpenRouter) supplies
|
|
36
|
+
only a `choice` label per comment — it never writes prose, and nothing it
|
|
37
|
+
returns is quoted verbatim into a finding.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## What it does
|
|
42
|
+
|
|
43
|
+
1. Reads open comments from the EXISTING ledger
|
|
44
|
+
(`.metaproject/reviews/pr-comments/*.json`, written by `keryx review
|
|
45
|
+
comments collect`) — never re-collects from GitHub itself.
|
|
46
|
+
2. Computes deterministic facts per open comment: commits after the comment's
|
|
47
|
+
timestamp touching its file (local `git log`, capped), the review thread's
|
|
48
|
+
resolved flag (best-effort, via one read-only GraphQL query — degrades to
|
|
49
|
+
`"unknown"` on any failure, never a guess), and its replies already on the
|
|
50
|
+
ledger.
|
|
51
|
+
3. Asks Jev exactly ONE `choice` question per open comment (batched under the
|
|
52
|
+
vendor's 64k token budget): `resolved-by-fix` / `still-open` /
|
|
53
|
+
`not-actionable` / `needs-escalation`, given the comment, its replies, and
|
|
54
|
+
the code's current hunk(s) at that location.
|
|
55
|
+
4. Synthesizes findings for `still-open` (severity `minor`) and
|
|
56
|
+
`needs-escalation` (severity `major`) only — `resolved-by-fix` and
|
|
57
|
+
`not-actionable` produce no finding. It never posts a reply and never
|
|
58
|
+
resolves a thread; the choice for every open comment is also written to an
|
|
59
|
+
advisory-label cache
|
|
60
|
+
(`.metaproject/data/review-jev-comments/labels__<repo>__<n>.json`) that
|
|
61
|
+
`keryx review comments reply` reads back and prints, informationally, next
|
|
62
|
+
to its own output — it never changes what that command sends.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Input Contract
|
|
67
|
+
|
|
68
|
+
Not dispatched with a prompt — invoked as a CLI command:
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
keryx review jev-comments --pr <n> --repo <owner/repo>
|
|
72
|
+
[--model <jev-1.13|jev-latest>] [--fixtures <dir>] [--json]
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Requires a comment ledger to already exist for `--repo`/`--pr` (`keryx review
|
|
76
|
+
comments collect` first) — this reviewer refuses, before any read, when it
|
|
77
|
+
does not.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Opt-in and privacy
|
|
82
|
+
|
|
83
|
+
Refuses before any ledger read or network call unless
|
|
84
|
+
`.metaproject/tasks.config.json` declares:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{ "review": { "jev": { "comments": true } } }
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Every comment body, reply, and hunk sent to Jev is redacted first through
|
|
91
|
+
`src/security/service.ts` — the same floor every other Jev-backed reviewer
|
|
92
|
+
applies. No cache or output file stores a credential.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Output Contract
|
|
97
|
+
|
|
98
|
+
Emits a `REVIEW_RESULT`-shaped object matching
|
|
99
|
+
`.metaproject/skills/gdskills/review/review-orchestrator/reviewer-finding.schema.json`
|
|
100
|
+
— `status`, `reviewer: "review-jev-comments"`, `summary`, `findings`, `stats`
|
|
101
|
+
— under `--json`. Its findings merge into the consolidated array exactly like
|
|
102
|
+
any other reviewer's: same Quality Gate, same dedup, same Wave C
|
|
103
|
+
verification.
|
|
104
|
+
|
|
105
|
+
### Class scope — required for `blocker` and `major`
|
|
106
|
+
|
|
107
|
+
A `needs-escalation` finding is `major` and always carries `class_scope`:
|
|
108
|
+
`sites` is the single `file:line` the comment is anchored to, and
|
|
109
|
+
`enumeration_method` states it is exactly that one comment — there is no
|
|
110
|
+
"class" beyond it, one comment is one finding, never a set to enumerate
|
|
111
|
+
further. `still-open` is `minor` and carries none, matching the schema's own
|
|
112
|
+
rule (`class_scope` required only for `blocker`/`major`).
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Orchestrator integration
|
|
117
|
+
|
|
118
|
+
- `keryx review reviewers --json` lists it under `bundled` with
|
|
119
|
+
`"engine": "jev"`.
|
|
120
|
+
- `review-orchestrator` dispatches it in **Wave B**, alongside the domain/
|
|
121
|
+
convention reviewers, when the opt-in is on and a Jev/OpenRouter credential
|
|
122
|
+
resolves (`resolveJevApiKeyResolution`). When either is false it is
|
|
123
|
+
**skipped with the stated reason**, recorded in `Skipped reviewers` —
|
|
124
|
+
never silently absent.
|
|
125
|
+
- It is **ADDITIONAL** and strictly advisory over the comment-reply flow: its
|
|
126
|
+
label is printed by `keryx review comments reply`, never acted on
|
|
127
|
+
automatically.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Red Flags
|
|
132
|
+
|
|
133
|
+
| Rationalization | Why it is wrong |
|
|
134
|
+
|---|---|
|
|
135
|
+
| "Jev said still-open, so post a reply now" | This reviewer never posts anything — a `still-open`/`needs-escalation` finding is a signal for a human or `keryx review comments reply`'s own logic, not an instruction to act |
|
|
136
|
+
| "The thread's resolved flag came back unknown, so treat it as resolved" | `unknown` is a distinct, honest state — it means the read failed, not that the thread is closed |
|
|
137
|
+
| "No findings means every comment was addressed" | Only `still-open`/`needs-escalation` produce findings; `resolved-by-fix` and `not-actionable` are correctly silent, but check `openComments` in `--json` to see how many were actually judged |
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Verification
|
|
142
|
+
|
|
143
|
+
Before trusting a run's findings:
|
|
144
|
+
|
|
145
|
+
1. Read `openComments` in the `--json` output against the ledger's own
|
|
146
|
+
`unanswered so far` count from the last `comments collect` — they should
|
|
147
|
+
agree.
|
|
148
|
+
2. Spot-check a `needs-escalation` finding against the comment text: does it
|
|
149
|
+
actually block progress, or is it a `still-open` case Jev over-called?
|
|
150
|
+
3. Confirm every finding carries `reviewer: "review-jev-comments"` and a
|
|
151
|
+
`dedupe_key` — both are required for the orchestrator's Quality Gate and
|
|
152
|
+
Wave C verification to route it correctly.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Iron Laws
|
|
157
|
+
|
|
158
|
+
### Shared laws (every reviewer)
|
|
159
|
+
|
|
160
|
+
1. **A claim of runtime harm with no reproducible path is `info`.** If you cannot
|
|
161
|
+
name the input, call, or condition that reaches the code, you have an
|
|
162
|
+
observation, not a finding. Report it as `info` and say what would settle it.
|
|
163
|
+
2. **Never flag the theoretical.** The path you describe must exist in the code
|
|
164
|
+
under review. Do not report a safe API because it could be misused, or a
|
|
165
|
+
pattern because it is often wrong elsewhere.
|
|
166
|
+
3. **One finding per class, not one per occurrence.** When the same shape appears
|
|
167
|
+
at several sites, report it once and list every site. Ten findings that are one
|
|
168
|
+
finding hide the other nine problems.
|
|
169
|
+
|
|
170
|
+
Severity levels are defined once, in `review-orchestrator/SKILL.md` →
|
|
171
|
+
**Severity (canonical)**. This reviewer does not restate them: it emits only
|
|
172
|
+
`minor` (`still-open`) or `major` (`needs-escalation`, always with
|
|
173
|
+
`class_scope`) — `blocker` never applies to an unanswered comment.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Scope Boundaries
|
|
178
|
+
|
|
179
|
+
| Concern | This skill | Use instead |
|
|
180
|
+
|---------|------------|-------------|
|
|
181
|
+
| An open PR comment looks unaddressed or blocking | YES | — |
|
|
182
|
+
| Posting a reply, resolving a thread | NO | `keryx review comments reply`, a human |
|
|
183
|
+
| Judging whether a reported finding is real | NO | `review-verifier` |
|
|
184
|
+
| Collecting comments from GitHub | NO | `keryx review comments collect` |
|