@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.
Files changed (93) hide show
  1. package/README.md +4 -1
  2. package/dist/cli.js +13362 -7078
  3. package/dist/core.js +11706 -11330
  4. package/package.json +1 -1
  5. package/src/gdskills/bundled/agents/go-code-auditor.md +1 -1
  6. package/src/gdskills/bundled/agents/python-code-auditor.md +1 -1
  7. package/src/gdskills/bundled/install-manifest.json +271 -4
  8. package/src/gdskills/bundled/rules/core/model-selection.mdc +51 -0
  9. package/src/gdskills/bundled/skills/review/review-jev-comments/SKILL.md +184 -0
  10. package/src/gdskills/bundled/skills/review/review-jev-docs/SKILL.md +189 -0
  11. package/src/gdskills/bundled/skills/review/review-jev-risk/SKILL.md +190 -0
  12. package/src/gdskills/bundled/skills/review/review-jev-rules/SKILL.md +267 -0
  13. package/src/gdskills/bundled/skills/review/review-jev-scenarios/SKILL.md +187 -0
  14. package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.detail.md +39 -0
  15. package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +1 -1
  16. package/src/gdskills/bundled/stacks/angular/agent-refs.json +4 -0
  17. package/src/gdskills/bundled/stacks/angular/governance/eval.json +1751 -0
  18. package/src/gdskills/bundled/stacks/angular/governance/scout.json +32 -0
  19. package/src/gdskills/bundled/stacks/angular/pack.json +55 -0
  20. package/src/gdskills/bundled/stacks/angular/rules/coding-style.mdc +82 -0
  21. package/src/gdskills/bundled/stacks/angular/rules/patterns.mdc +84 -0
  22. package/src/gdskills/bundled/stacks/angular/rules/security.mdc +70 -0
  23. package/src/gdskills/bundled/stacks/angular/rules/testing.mdc +73 -0
  24. package/src/gdskills/bundled/stacks/angular/skills/angular-build-fix/SKILL.md +127 -0
  25. package/src/gdskills/bundled/stacks/angular/skills/angular-build-fix/evals.json +72 -0
  26. package/src/gdskills/bundled/stacks/angular/skills/angular-code-review/SKILL.md +98 -0
  27. package/src/gdskills/bundled/stacks/angular/skills/angular-code-review/evals.json +73 -0
  28. package/src/gdskills/bundled/stacks/angular/skills/angular-implementation/SKILL.md +112 -0
  29. package/src/gdskills/bundled/stacks/angular/skills/angular-implementation/evals.json +74 -0
  30. package/src/gdskills/bundled/stacks/angular/skills/angular-testing/SKILL.md +102 -0
  31. package/src/gdskills/bundled/stacks/angular/skills/angular-testing/evals.json +71 -0
  32. package/src/gdskills/bundled/stacks/mobx/agent-refs.json +4 -0
  33. package/src/gdskills/bundled/stacks/mobx/governance/eval.json +904 -0
  34. package/src/gdskills/bundled/stacks/mobx/governance/scout.json +18 -0
  35. package/src/gdskills/bundled/stacks/mobx/pack.json +28 -0
  36. package/src/gdskills/bundled/stacks/mobx/rules/coding-style.mdc +91 -0
  37. package/src/gdskills/bundled/stacks/mobx/rules/patterns.mdc +122 -0
  38. package/src/gdskills/bundled/stacks/mobx/rules/security.mdc +56 -0
  39. package/src/gdskills/bundled/stacks/mobx/rules/testing.mdc +63 -0
  40. package/src/gdskills/bundled/stacks/mobx/skills/mobx-observable-testing/SKILL.md +124 -0
  41. package/src/gdskills/bundled/stacks/mobx/skills/mobx-observable-testing/evals.json +73 -0
  42. package/src/gdskills/bundled/stacks/mobx/skills/mobx-store-implementation/SKILL.md +149 -0
  43. package/src/gdskills/bundled/stacks/mobx/skills/mobx-store-implementation/evals.json +74 -0
  44. package/src/gdskills/bundled/stacks/nestjs/agent-refs.json +4 -0
  45. package/src/gdskills/bundled/stacks/nestjs/governance/eval.json +1308 -0
  46. package/src/gdskills/bundled/stacks/nestjs/governance/scout.json +34 -0
  47. package/src/gdskills/bundled/stacks/nestjs/pack.json +53 -0
  48. package/src/gdskills/bundled/stacks/nestjs/rules/coding-style.mdc +70 -0
  49. package/src/gdskills/bundled/stacks/nestjs/rules/patterns.mdc +83 -0
  50. package/src/gdskills/bundled/stacks/nestjs/rules/security.mdc +73 -0
  51. package/src/gdskills/bundled/stacks/nestjs/rules/testing.mdc +69 -0
  52. package/src/gdskills/bundled/stacks/nestjs/skills/nestjs-build-fix/SKILL.md +157 -0
  53. package/src/gdskills/bundled/stacks/nestjs/skills/nestjs-build-fix/evals.json +70 -0
  54. package/src/gdskills/bundled/stacks/nestjs/skills/nestjs-implementation/SKILL.md +129 -0
  55. package/src/gdskills/bundled/stacks/nestjs/skills/nestjs-implementation/evals.json +71 -0
  56. package/src/gdskills/bundled/stacks/nestjs/skills/nestjs-testing/SKILL.md +143 -0
  57. package/src/gdskills/bundled/stacks/nestjs/skills/nestjs-testing/evals.json +69 -0
  58. package/src/gdskills/bundled/stacks/nextjs-nuxt/agent-refs.json +4 -0
  59. package/src/gdskills/bundled/stacks/nextjs-nuxt/governance/eval.json +2413 -0
  60. package/src/gdskills/bundled/stacks/nextjs-nuxt/governance/scout.json +42 -0
  61. package/src/gdskills/bundled/stacks/nextjs-nuxt/pack.json +42 -0
  62. package/src/gdskills/bundled/stacks/nextjs-nuxt/rules/coding-style.mdc +69 -0
  63. package/src/gdskills/bundled/stacks/nextjs-nuxt/rules/patterns.mdc +88 -0
  64. package/src/gdskills/bundled/stacks/nextjs-nuxt/rules/security.mdc +72 -0
  65. package/src/gdskills/bundled/stacks/nextjs-nuxt/rules/testing.mdc +64 -0
  66. package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-build-fix/SKILL.md +147 -0
  67. package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-build-fix/evals.json +75 -0
  68. package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-code-review/SKILL.md +118 -0
  69. package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-code-review/evals.json +76 -0
  70. package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-implementation/SKILL.md +135 -0
  71. package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-implementation/evals.json +78 -0
  72. package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-testing/SKILL.md +116 -0
  73. package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-testing/evals.json +75 -0
  74. package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-upgrade-migration/SKILL.md +134 -0
  75. package/src/gdskills/bundled/stacks/nextjs-nuxt/skills/nextjs-nuxt-upgrade-migration/evals.json +76 -0
  76. package/src/gdskills/bundled/stacks/vue/agent-refs.json +4 -0
  77. package/src/gdskills/bundled/stacks/vue/governance/eval.json +2215 -0
  78. package/src/gdskills/bundled/stacks/vue/governance/scout.json +42 -0
  79. package/src/gdskills/bundled/stacks/vue/pack.json +42 -0
  80. package/src/gdskills/bundled/stacks/vue/rules/coding-style.mdc +73 -0
  81. package/src/gdskills/bundled/stacks/vue/rules/patterns.mdc +84 -0
  82. package/src/gdskills/bundled/stacks/vue/rules/security.mdc +60 -0
  83. package/src/gdskills/bundled/stacks/vue/rules/testing.mdc +69 -0
  84. package/src/gdskills/bundled/stacks/vue/skills/vue-build-fix/SKILL.md +137 -0
  85. package/src/gdskills/bundled/stacks/vue/skills/vue-build-fix/evals.json +72 -0
  86. package/src/gdskills/bundled/stacks/vue/skills/vue-code-review/SKILL.md +120 -0
  87. package/src/gdskills/bundled/stacks/vue/skills/vue-code-review/evals.json +71 -0
  88. package/src/gdskills/bundled/stacks/vue/skills/vue-implementation/SKILL.md +122 -0
  89. package/src/gdskills/bundled/stacks/vue/skills/vue-implementation/evals.json +72 -0
  90. package/src/gdskills/bundled/stacks/vue/skills/vue-testing/SKILL.md +115 -0
  91. package/src/gdskills/bundled/stacks/vue/skills/vue-testing/evals.json +72 -0
  92. package/src/gdskills/bundled/stacks/vue/skills/vue2-to-vue3-migration/SKILL.md +135 -0
  93. package/src/gdskills/bundled/stacks/vue/skills/vue2-to-vue3-migration/evals.json +71 -0
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: nextjs-nuxt-upgrade-migration
3
+ description: "Use when migrating a Next.js project from the Pages Router to the App Router, upgrading a Next.js major version, or migrating a Nuxt 2 project to Nuxt 3+ (Options API to Composition API, the Vuex-to-Pinia move, module/plugin API changes). Covers rewriting data-fetching (getServerSideProps/getStaticProps to Server Components and route rendering config; asyncData/fetch to useAsyncData/useFetch), routing conventions, and rendering-mode equivalents between the old and new APIs. Not for a same-version bug fix or new feature (use nextjs-nuxt-implementation/nextjs-nuxt-build-fix), and not for a plain React/Vue version bump with no meta-framework routing change (use react-upgrade-migration or the vue pack's migration skill)."
4
+ triggers:
5
+ - "migrate this Next.js app from pages router to app router"
6
+ - "upgrade this Next.js project to the latest major version"
7
+ - "migrate this Nuxt 2 project to Nuxt 3"
8
+ - "convert getServerSideProps to the app router equivalent"
9
+ - "move this Nuxt 2 asyncData to useAsyncData"
10
+ - "migrate Vuex store to Pinia in this Nuxt project"
11
+ - "replace this Options API component with script setup during the Nuxt 3 migration"
12
+ metadata:
13
+ origin: authored
14
+ category: migrate
15
+ version: "1.0.0"
16
+ compatible_harnesses: "claude,codex,cursor,zed,opencode"
17
+ license: "MIT"
18
+ ---
19
+
20
+ # Next.js / Nuxt upgrade & migration
21
+
22
+ Migrate a Next.js project between the Pages Router and App Router (or
23
+ between major versions), or a Nuxt 2 project to Nuxt 3+. Covers rewriting
24
+ the old data-fetching/rendering APIs to their current equivalents. See
25
+ `rules/patterns.mdc` for the target-state idiom this migration moves
26
+ toward.
27
+
28
+ ## Workflow
29
+
30
+ ### Step 1: Establish the current and target state
31
+
32
+ - Confirm the exact starting point (Next.js Pages Router version, or Nuxt
33
+ 2 with which major module versions) and the target (App Router on
34
+ which Next.js version, or Nuxt 3/4) — the concrete API mapping differs
35
+ by version, so check the project's `package.json` before assuming a
36
+ mapping.
37
+ - Migrate route-by-route or module-by-module, not the whole app in one
38
+ pass — both frameworks support the old and new router/API coexisting
39
+ during a transition (Next.js: `pages/` and `app/` side by side; Nuxt:
40
+ incremental Nuxt Bridge or a full-rewrite branch per module), so land
41
+ working, tested increments.
42
+
43
+ ### Step 2: Migrate Next.js data-fetching and routing (Pages Router -> App Router)
44
+
45
+ - `getServerSideProps`/`getStaticProps` in a page -> fetch directly in
46
+ the now-Server Component (`app/.../page.tsx`); the per-request vs.
47
+ static choice becomes the route's default (dynamic) vs. `export const
48
+ revalidate = <seconds>` (ISR) rather than a separate exported function.
49
+ - `getStaticPaths` -> `generateStaticParams` in the App Router page.
50
+ - `_app.tsx`/`_document.tsx` -> `app/layout.tsx` (root layout) plus
51
+ nested `layout.tsx` files per route segment.
52
+ - `next/head`'s `<Head>` -> the `metadata` export or `generateMetadata`
53
+ function in `page.tsx`/`layout.tsx`.
54
+ - An API route under `pages/api/*.ts` -> a Route Handler under
55
+ `app/api/.../route.ts` exporting named HTTP method functions
56
+ (`GET`/`POST`/etc.) instead of a single default-exported handler.
57
+ - Any component using `useState`/`useEffect`/browser APIs needs an
58
+ explicit `'use client'` once moved into `app/` — it was implicitly
59
+ client-rendered before; the App Router defaults to server rendering.
60
+
61
+ ### Step 3: Migrate Nuxt 2 to Nuxt 3+
62
+
63
+ - Options API components (`export default { data() {...}, methods:
64
+ {...} }`) -> `<script setup lang="ts">` with `ref`/`reactive`/
65
+ `computed`/defined props — rewrite behavior, don't just wrap the old
66
+ object export.
67
+ - `asyncData`/`fetch` (Nuxt 2 page hooks) -> `useAsyncData`/`useFetch`
68
+ called in `<script setup>`.
69
+ - Vuex store modules -> Pinia stores (`defineStore`) — Nuxt 3 has no
70
+ built-in Vuex integration; a large store migrates incrementally,
71
+ module by module, with both coexisting only as a deliberate bridge
72
+ step, not a long-term end state.
73
+ - `nuxt.config.js` module/plugin registration syntax changed
74
+ substantially between Nuxt 2 and 3 — re-check each module's own current
75
+ docs for its Nuxt 3 registration shape rather than assuming the old
76
+ config key still works.
77
+ - Middleware (`middleware/*.js` global-by-filename in Nuxt 2) ->
78
+ `defineNuxtRouteMiddleware` in `middleware/`, explicitly referenced per
79
+ page via `definePageMeta({ middleware: [...] })` unless it is global.
80
+
81
+ ### Step 4: Verify each migrated increment
82
+
83
+ - Run the target framework's build/typecheck after each route/module
84
+ migrates, not only at the end — a broken increment is much cheaper to
85
+ isolate immediately than after the whole app has moved.
86
+ - Confirm the migrated route's rendering mode (static/dynamic/ISR, or
87
+ Nuxt's `ssr`/`routeRules`) matches what the original page actually
88
+ needed, not just "still compiles" — a migration can silently flip a
89
+ page from dynamic to accidentally-static or vice versa.
90
+
91
+ ### Step 5: Report
92
+
93
+ State what moved, the API mapping applied to each piece, and what still
94
+ needs a follow-up pass (e.g. remaining Pages Router routes, remaining
95
+ Vuex modules) rather than claiming the whole migration complete when only
96
+ part landed.
97
+
98
+ ## Rules
99
+
100
+ - Follow `rules/patterns.mdc` for the target Server/Client boundary,
101
+ rendering-mode, and data-fetching idiom each migrated piece should end
102
+ up in.
103
+ - Migrate incrementally with the old and new systems coexisting during
104
+ the transition; never a single unreviewable mass-rewrite commit.
105
+ - NEVER leave a migrated component silently missing `'use client'` when
106
+ it uses state/effects/browser APIs — the App Router's default flipped
107
+ from the Pages Router's implicit client rendering.
108
+ - NEVER migrate a Vuex module to Pinia by wrapping the old store object
109
+ unchanged inside `defineStore` — rewrite it to Pinia's actual API
110
+ (state/getters/actions as the store's own functions), not a shim.
111
+
112
+ ## Red Flags
113
+
114
+ | Rationalization | Why it is wrong |
115
+ |---|---|
116
+ | "I'll migrate the whole pages/ directory to app/ in one commit, faster than route by route" | A single mass-rewrite is unreviewable and all-or-nothing to roll back; migrate and verify route by route instead |
117
+ | "This component doesn't obviously use state, I'll skip adding 'use client' and see if the build complains" | The App Router's build error for a missing boundary is not guaranteed to catch every case (e.g. an indirect browser-API use); check explicitly rather than relying on the compiler to catch it |
118
+ | "I'll wrap the old Vuex module object inside defineStore so both APIs sort of work" | Produces a store that satisfies neither Vuex's nor Pinia's actual API contract; rewrite to Pinia's state/getters/actions shape |
119
+ | "The old getServerSideProps page worked fine, I'll just call it from inside the new Server Component instead of rewriting the fetch" | Keeps a Pages Router API alive inside App Router code instead of completing the actual migration to the framework's current data-fetching model |
120
+
121
+ ## Verification
122
+
123
+ Do not report a migrated piece done until:
124
+
125
+ - The target framework's build/typecheck passes for the migrated
126
+ route/module.
127
+ - Every migrated component that needs client interactivity has an
128
+ explicit `'use client'` (Next.js) or is confirmed to run correctly
129
+ under Nuxt 3's Composition API context (Nuxt).
130
+ - The migrated route's rendering mode matches the original's actual data
131
+ freshness need, checked explicitly, not assumed from "it still
132
+ builds".
133
+ - The report names exactly what migrated and what remains, not a blanket
134
+ "migration complete" for a partial pass.
@@ -0,0 +1,76 @@
1
+ {
2
+ "triggers": {
3
+ "positive": [
4
+ "This Next.js app still uses the pages router everywhere, I need to migrate it over to the app router, where should I begin?",
5
+ "Upgrade this Next.js project's pages/api routes to app router route handlers",
6
+ "This project is still running on the old Nuxt 2 major version and we need to bring it forward to Nuxt 3, what does that upgrade actually involve?",
7
+ "This page currently uses getServerSideProps for its data fetching, how do I convert that to the app router equivalent once we migrate it?",
8
+ "As part of bringing this page up to Nuxt 3, its old asyncData data-fetching call needs to become the new composable-based equivalent, how do I do that conversion?",
9
+ "As part of our Nuxt 3 upgrade, I need to migrate this store from Vuex over to Pinia, what does that conversion involve?",
10
+ "I still have a component built with the old Options API, and I want it rewritten to use script setup as part of moving to Nuxt 3, how should I approach that?"
11
+ ],
12
+ "negative": [
13
+ "Add a brand new page to this already-on-app-router Next.js project",
14
+ "Review this Next.js server action for auth issues",
15
+ "Write a test for this Nuxt composable",
16
+ "Fix this build error blocking next build right now",
17
+ "Upgrade this plain React 18 app to React 19 with no routing framework involved",
18
+ "Migrate this Python 2 script to Python 3 syntax"
19
+ ]
20
+ },
21
+ "scenarios": [
22
+ {
23
+ "id": "getserversideprops-to-app-router",
24
+ "prompt": "I have a Next.js Pages Router page using getServerSideProps to fetch an order by ID before render. How do I migrate this to the App Router?",
25
+ "strictness": "high",
26
+ "expected_behavior": [
27
+ { "grader": "regex", "value": "getServerSideProps" },
28
+ {
29
+ "grader": "judge",
30
+ "rubric": "A correct answer replaces getServerSideProps with fetching the order data directly inside the App Router page component (a Server Component, app/.../page.tsx), reading the route param instead of context.params, and notes that any interactive part of the old page needs its own 'use client' component once moved.",
31
+ "pass_criteria": [
32
+ "States that data fetching moves from getServerSideProps into the page component's own body (an async Server Component in app/.../page.tsx) rather than a separate exported function",
33
+ "Names that the route param (previously from context.params in getServerSideProps) is now read from the page component's own params argument",
34
+ "Notes that any interactive UI on the old page (event handlers, useState) needs to be extracted into a component with its own 'use client' directive, since the App Router defaults to server rendering"
35
+ ],
36
+ "fail_criteria": [
37
+ "Recommends keeping getServerSideProps as-is and calling it from inside the new App Router page as a workaround, instead of rewriting the fetch into the Server Component itself"
38
+ ]
39
+ }
40
+ ],
41
+ "calibration": {
42
+ "known_right": "Move the fetch logic directly into the App Router page component. Where you had:\n\nexport async function getServerSideProps(context) {\n const order = await getOrder(context.params.id);\n return { props: { order } };\n}\n\n...you now write app/orders/[id]/page.tsx as an async Server Component that fetches inline and reads the route param from its own `params` prop instead of context.params:\n\nexport default async function OrderPage({ params }: { params: { id: string } }) {\n const order = await getOrder(params.id);\n return <OrderView order={order} />;\n}\n\nThis renders per-request by default, matching getServerSideProps's original behavior. If the old page also had client-side interactivity (a button, local state), extract that into its own component file with 'use client' at the top, since the App Router page itself is now a Server Component by default and won't support hooks directly.",
43
+ "known_wrong": "Simplest migration: keep the old getServerSideProps function exactly as it is in a separate file, and just call it manually from inside the new app/orders/[id]/page.tsx to get the props, then render the same way you did before.",
44
+ "vague": "You'll need to move the data fetching into the new page component somehow and adjust how you read the route parameter.",
45
+ "subtle_wrong": "Move the fetch into the page component like this: async function OrderPage({ params }) { const order = await getOrder(params.id); return <OrderView order={order} /> } -- good so far, but I'd also add 'use client' to the top of this same page file just to be safe, in case any part of OrderView needs client-side hooks, rather than tracking down exactly which nested component needs it."
46
+ },
47
+ "anti_patterns": []
48
+ },
49
+ {
50
+ "id": "pinia-not-vuex-wrapper",
51
+ "prompt": "I'm migrating a Nuxt 2 project with a Vuex store module to Nuxt 3. Should I just wrap the existing Vuex module inside Pinia's defineStore to save time?",
52
+ "strictness": "high",
53
+ "expected_behavior": [
54
+ { "grader": "regex", "value": "defineStore" },
55
+ {
56
+ "grader": "judge",
57
+ "rubric": "A correct answer says no -- wrapping the old Vuex module object unchanged inside defineStore does not satisfy Pinia's actual API, and the store should be rewritten to Pinia's state/getters/actions shape instead.",
58
+ "pass_criteria": [
59
+ "States clearly that wrapping the Vuex module object as-is inside defineStore is not a valid approach",
60
+ "Describes rewriting the store to Pinia's actual shape: a state function/object, getters, and actions as the store's own methods, replacing Vuex's mutations/actions/getters pattern"
61
+ ],
62
+ "fail_criteria": [
63
+ "Endorses wrapping the existing Vuex module object directly inside defineStore as a time-saving shortcut -- naming this only to reject it is not a failure"
64
+ ]
65
+ }
66
+ ],
67
+ "calibration": {
68
+ "known_right": "No, don't just wrap the Vuex module inside defineStore -- Pinia has a genuinely different shape and Vuex's mutations/actions/getters object won't function correctly just dropped into Pinia's API. Rewrite the module: Vuex's `state` becomes Pinia's `state: () => ({...})`, Vuex `getters` map directly to Pinia `getters`, and Vuex's `mutations` + `actions` combine into Pinia's single `actions` (since Pinia actions can mutate state directly, no separate mutation-commit step is needed). For example, a Vuex module with state.orders, a SET_ORDERS mutation, and a fetchOrders action that commits it becomes a Pinia store with state: () => ({ orders: [] }) and an actions.fetchOrders() that calls the API and does `this.orders = result` directly. It takes more effort than a wrapper, but a wrapper wouldn't actually work -- Pinia doesn't recognize Vuex's mutation-commit contract.",
69
+ "known_wrong": "Sure, just export the existing Vuex module object as the store option passed to defineStore -- that saves rewriting all the mutations and actions, and Pinia is flexible enough to handle it since they're both just state management libraries.",
70
+ "vague": "It's better to migrate the store properly to Pinia's own patterns rather than trying to shortcut it.",
71
+ "subtle_wrong": "You're right not to wrap it directly -- I'd rewrite the getters and state to Pinia's format, but keep the original Vuex mutations object as a plain helper object referenced from inside one catch-all Pinia action, so you don't have to convert every individual mutation into its own Pinia action right away."
72
+ },
73
+ "anti_patterns": []
74
+ }
75
+ ]
76
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "agents": [],
3
+ "note": "honest gate (flow 318, T13; attribution corrected in R1 review PR #719, minor-3): vue-build-fix fails -- falsePositive=1 (trigger-negative-1, \"fix this tsc error in a plain typescript service file\": a CROSS-pack collision with ts-js-node/nodejs-build-fix, not a same-pack near-miss) and its template-union-type-narrowing behavior scenario scores 0.4, below the 0.8 PACK_BEHAVIOR_PASS_FLOOR, even though every other vue skill (implementation, testing, code-review, vue2-to-vue3-migration) clears the gate cleanly. See src/gdskills/bundled/stacks/vue/governance/eval.json. Stays experimental; no generated agent pair."
4
+ }