@smicolon/ai-kit 0.3.2 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/README.md +73 -40
  2. package/dist/index.js +312 -127
  3. package/package.json +5 -5
  4. package/.claude-plugin/marketplace.json +0 -369
  5. package/packs/architect/CHANGELOG.md +0 -17
  6. package/packs/architect/README.md +0 -58
  7. package/packs/architect/agents/system-architect.md +0 -768
  8. package/packs/architect/commands/diagram-create.md +0 -300
  9. package/packs/better-auth/.mcp.json +0 -14
  10. package/packs/better-auth/CHANGELOG.md +0 -26
  11. package/packs/better-auth/README.md +0 -125
  12. package/packs/better-auth/agents/auth-architect.md +0 -278
  13. package/packs/better-auth/commands/auth-provider-add.md +0 -265
  14. package/packs/better-auth/commands/auth-setup.md +0 -298
  15. package/packs/better-auth/skills/auth-security/SKILL.md +0 -425
  16. package/packs/better-auth/skills/better-auth-patterns/SKILL.md +0 -455
  17. package/packs/dev-loop/CHANGELOG.md +0 -69
  18. package/packs/dev-loop/README.md +0 -155
  19. package/packs/dev-loop/commands/cancel-dev.md +0 -21
  20. package/packs/dev-loop/commands/dev-loop.md +0 -72
  21. package/packs/dev-loop/commands/dev-plan.md +0 -351
  22. package/packs/dev-loop/hooks/hooks.json +0 -15
  23. package/packs/dev-loop/hooks/stop-hook.sh +0 -178
  24. package/packs/dev-loop/scripts/setup-dev-loop.sh +0 -194
  25. package/packs/dev-loop/skills/tdd-planner/SKILL.md +0 -249
  26. package/packs/dev-loop/skills/tdd-planner/references/framework-patterns.md +0 -874
  27. package/packs/dev-loop/skills/tdd-planner/references/good-example.md +0 -260
  28. package/packs/dev-loop/skills/tdd-planner/references/plan-template.md +0 -275
  29. package/packs/django/CHANGELOG.md +0 -39
  30. package/packs/django/README.md +0 -92
  31. package/packs/django/agents/django-architect.md +0 -182
  32. package/packs/django/agents/django-builder.md +0 -250
  33. package/packs/django/agents/django-feature-based.md +0 -420
  34. package/packs/django/agents/django-reviewer.md +0 -253
  35. package/packs/django/agents/django-tester.md +0 -230
  36. package/packs/django/commands/api-endpoint.md +0 -285
  37. package/packs/django/commands/model-create.md +0 -178
  38. package/packs/django/commands/test-generate.md +0 -325
  39. package/packs/django/rules/migrations.md +0 -138
  40. package/packs/django/rules/models.md +0 -167
  41. package/packs/django/rules/serializers.md +0 -126
  42. package/packs/django/rules/services.md +0 -131
  43. package/packs/django/rules/tests.md +0 -140
  44. package/packs/django/rules/views.md +0 -102
  45. package/packs/django/skills/import-convention-enforcer/SKILL.md +0 -226
  46. package/packs/django/skills/import-convention-enforcer/patterns/django-imports.md +0 -343
  47. package/packs/django/skills/migration-safety-checker/SKILL.md +0 -375
  48. package/packs/django/skills/model-entity-validator/SKILL.md +0 -298
  49. package/packs/django/skills/performance-optimizer/SKILL.md +0 -447
  50. package/packs/django/skills/red-phase-verifier/SKILL.md +0 -180
  51. package/packs/django/skills/security-first-validator/SKILL.md +0 -435
  52. package/packs/django/skills/test-coverage-advisor/SKILL.md +0 -394
  53. package/packs/django/skills/test-validity-checker/SKILL.md +0 -194
  54. package/packs/failure-log/CHANGELOG.md +0 -20
  55. package/packs/failure-log/README.md +0 -168
  56. package/packs/failure-log/commands/failure-add.md +0 -106
  57. package/packs/failure-log/commands/failure-list.md +0 -89
  58. package/packs/failure-log/hooks/hooks.json +0 -16
  59. package/packs/failure-log/hooks/scripts/inject-failures.sh +0 -64
  60. package/packs/failure-log/skills/failure-log-manager/SKILL.md +0 -164
  61. package/packs/flutter/CHANGELOG.md +0 -19
  62. package/packs/flutter/README.md +0 -170
  63. package/packs/flutter/agents/flutter-architect.md +0 -166
  64. package/packs/flutter/agents/flutter-builder.md +0 -303
  65. package/packs/flutter/agents/release-manager.md +0 -355
  66. package/packs/flutter/commands/fastlane-setup.md +0 -188
  67. package/packs/flutter/commands/flutter-build.md +0 -90
  68. package/packs/flutter/commands/flutter-deploy.md +0 -133
  69. package/packs/flutter/commands/flutter-test.md +0 -117
  70. package/packs/flutter/commands/signing-setup.md +0 -209
  71. package/packs/flutter/hooks/hooks.json +0 -17
  72. package/packs/flutter/skills/fastlane-knowledge/SKILL.md +0 -193
  73. package/packs/flutter/skills/flutter-architecture/SKILL.md +0 -127
  74. package/packs/flutter/skills/store-publishing/SKILL.md +0 -163
  75. package/packs/hono/CHANGELOG.md +0 -19
  76. package/packs/hono/README.md +0 -143
  77. package/packs/hono/agents/hono-architect.md +0 -240
  78. package/packs/hono/agents/hono-builder.md +0 -285
  79. package/packs/hono/agents/hono-reviewer.md +0 -279
  80. package/packs/hono/agents/hono-tester.md +0 -346
  81. package/packs/hono/commands/middleware-create.md +0 -223
  82. package/packs/hono/commands/project-init.md +0 -306
  83. package/packs/hono/commands/route-create.md +0 -153
  84. package/packs/hono/commands/rpc-client.md +0 -263
  85. package/packs/hono/skills/cloudflare-bindings/SKILL.md +0 -408
  86. package/packs/hono/skills/hono-patterns/SKILL.md +0 -309
  87. package/packs/hono/skills/rpc-typesafe/SKILL.md +0 -388
  88. package/packs/hono/skills/zod-validation/SKILL.md +0 -332
  89. package/packs/nestjs/CHANGELOG.md +0 -29
  90. package/packs/nestjs/README.md +0 -75
  91. package/packs/nestjs/agents/nestjs-architect.md +0 -402
  92. package/packs/nestjs/agents/nestjs-builder.md +0 -301
  93. package/packs/nestjs/agents/nestjs-tester.md +0 -437
  94. package/packs/nestjs/commands/module-create.md +0 -369
  95. package/packs/nestjs/rules/controllers.md +0 -92
  96. package/packs/nestjs/rules/dto.md +0 -124
  97. package/packs/nestjs/rules/entities.md +0 -102
  98. package/packs/nestjs/rules/services.md +0 -106
  99. package/packs/nestjs/skills/barrel-export-manager/SKILL.md +0 -389
  100. package/packs/nestjs/skills/import-convention-enforcer/SKILL.md +0 -365
  101. package/packs/nextjs/CHANGELOG.md +0 -36
  102. package/packs/nextjs/README.md +0 -76
  103. package/packs/nextjs/agents/frontend-tester.md +0 -680
  104. package/packs/nextjs/agents/frontend-visual.md +0 -820
  105. package/packs/nextjs/agents/nextjs-architect.md +0 -331
  106. package/packs/nextjs/agents/nextjs-modular.md +0 -433
  107. package/packs/nextjs/commands/component-create.md +0 -398
  108. package/packs/nextjs/rules/api-routes.md +0 -129
  109. package/packs/nextjs/rules/components.md +0 -106
  110. package/packs/nextjs/rules/hooks.md +0 -132
  111. package/packs/nextjs/skills/accessibility-validator/SKILL.md +0 -445
  112. package/packs/nextjs/skills/import-convention-enforcer/SKILL.md +0 -399
  113. package/packs/nextjs/skills/react-form-validator/SKILL.md +0 -569
  114. package/packs/nuxtjs/CHANGELOG.md +0 -30
  115. package/packs/nuxtjs/README.md +0 -56
  116. package/packs/nuxtjs/agents/frontend-tester.md +0 -680
  117. package/packs/nuxtjs/agents/frontend-visual.md +0 -820
  118. package/packs/nuxtjs/agents/nuxtjs-architect.md +0 -537
  119. package/packs/nuxtjs/commands/component-create.md +0 -223
  120. package/packs/nuxtjs/rules/components.md +0 -101
  121. package/packs/nuxtjs/rules/composables.md +0 -118
  122. package/packs/nuxtjs/rules/server-routes.md +0 -127
  123. package/packs/nuxtjs/skills/accessibility-validator/SKILL.md +0 -183
  124. package/packs/nuxtjs/skills/import-convention-enforcer/SKILL.md +0 -196
  125. package/packs/nuxtjs/skills/veevalidate-form-validator/SKILL.md +0 -190
  126. package/packs/onboard/CHANGELOG.md +0 -22
  127. package/packs/onboard/README.md +0 -103
  128. package/packs/onboard/agents/onboard-guide.md +0 -118
  129. package/packs/onboard/commands/onboard.md +0 -313
  130. package/packs/onboard/skills/onboard-context-provider/SKILL.md +0 -98
  131. package/packs/tanstack-router/CHANGELOG.md +0 -30
  132. package/packs/tanstack-router/README.md +0 -113
  133. package/packs/tanstack-router/agents/tanstack-architect.md +0 -173
  134. package/packs/tanstack-router/agents/tanstack-builder.md +0 -360
  135. package/packs/tanstack-router/agents/tanstack-tester.md +0 -454
  136. package/packs/tanstack-router/commands/form-create.md +0 -313
  137. package/packs/tanstack-router/commands/query-create.md +0 -263
  138. package/packs/tanstack-router/commands/route-create.md +0 -190
  139. package/packs/tanstack-router/commands/table-create.md +0 -413
  140. package/packs/tanstack-router/skills/ai-patterns/SKILL.md +0 -370
  141. package/packs/tanstack-router/skills/db-patterns/SKILL.md +0 -346
  142. package/packs/tanstack-router/skills/devtools-patterns/SKILL.md +0 -415
  143. package/packs/tanstack-router/skills/form-patterns/SKILL.md +0 -425
  144. package/packs/tanstack-router/skills/pacer-patterns/SKILL.md +0 -341
  145. package/packs/tanstack-router/skills/query-patterns/SKILL.md +0 -359
  146. package/packs/tanstack-router/skills/router-patterns/SKILL.md +0 -285
  147. package/packs/tanstack-router/skills/store-patterns/SKILL.md +0 -351
  148. package/packs/tanstack-router/skills/table-patterns/SKILL.md +0 -531
  149. package/packs/tanstack-router/skills/tanstack-conventions/SKILL.md +0 -428
  150. package/packs/tanstack-router/skills/virtual-patterns/SKILL.md +0 -490
  151. package/packs/worktree/CHANGELOG.md +0 -45
  152. package/packs/worktree/README.md +0 -219
  153. package/packs/worktree/commands/wt.md +0 -93
  154. package/packs/worktree/scripts/wt.sh +0 -957
  155. package/packs/worktree/skills/worktree-manager/SKILL.md +0 -113
@@ -1,183 +0,0 @@
1
- ---
2
- name: vue-accessibility-validator
3
- description: Automatically validate Vue 3/Nuxt.js components meet WCAG 2.1 AA standards. Use when creating components, forms, buttons, modals, navigation, or any interactive UI elements.
4
- ---
5
-
6
- # Vue Accessibility Validator
7
-
8
- ## Activation Triggers
9
-
10
- This skill activates when:
11
- - Creating Vue components
12
- - Writing template sections
13
- - Adding interactive elements
14
- - Mentioning "component", "form", "button"
15
-
16
- ## Checks
17
-
18
- ### Check 1: Semantic HTML
19
-
20
- ```vue
21
- <!-- WRONG -->
22
- <div @click="handleAction">Click me</div>
23
-
24
- <!-- CORRECT -->
25
- <button type="button" @click="handleAction">
26
- Click me
27
- </button>
28
- ```
29
-
30
- **Rule**: Interactive elements must use semantic HTML (`<button>`, `<a>`, `<input>`) not generic `<div>` or `<span>`.
31
-
32
- ### Check 2: Form Labels
33
-
34
- ```vue
35
- <!-- WRONG -->
36
- <input v-model="email" placeholder="Email" />
37
-
38
- <!-- CORRECT -->
39
- <label for="email">Email</label>
40
- <input id="email" v-model="email" aria-describedby="email-hint" />
41
- <span id="email-hint">Your work email address</span>
42
- ```
43
-
44
- **Rule**: All form inputs must have associated labels or aria-label.
45
-
46
- ### Check 3: Keyboard Navigation
47
-
48
- ```vue
49
- <!-- WRONG - Only mouse -->
50
- <div @click="toggle" class="dropdown">
51
-
52
- <!-- CORRECT - Keyboard accessible -->
53
- <button
54
- type="button"
55
- @click="toggle"
56
- @keydown.enter="toggle"
57
- @keydown.space.prevent="toggle"
58
- :aria-expanded="isOpen"
59
- aria-haspopup="listbox"
60
- >
61
- ```
62
-
63
- **Rule**: All interactive elements must be keyboard accessible.
64
-
65
- ### Check 4: Focus Management
66
-
67
- ```vue
68
- <!-- Modal with focus trap -->
69
- <template>
70
- <div
71
- v-if="isOpen"
72
- role="dialog"
73
- aria-modal="true"
74
- aria-labelledby="modal-title"
75
- @keydown.escape="close"
76
- >
77
- <h2 id="modal-title">Modal Title</h2>
78
- <!-- Focus trapped inside -->
79
- <button ref="closeButton" @click="close">Close</button>
80
- </div>
81
- </template>
82
-
83
- <script setup lang="ts">
84
- import { nextTick, ref, watch } from 'vue'
85
-
86
- const closeButton = ref<HTMLButtonElement>()
87
-
88
- watch(isOpen, async (open) => {
89
- if (open) {
90
- await nextTick()
91
- closeButton.value?.focus()
92
- }
93
- })
94
- </script>
95
- ```
96
-
97
- ### Check 5: Image Alt Text
98
-
99
- ```vue
100
- <!-- WRONG -->
101
- <img :src="product.image" />
102
-
103
- <!-- CORRECT - Informative image -->
104
- <img :src="product.image" :alt="product.name" />
105
-
106
- <!-- CORRECT - Decorative image -->
107
- <img :src="decorativePattern" alt="" role="presentation" />
108
- ```
109
-
110
- ### Check 6: Color Contrast
111
-
112
- Ensure 4.5:1 ratio for normal text, 3:1 for large text.
113
-
114
- ```vue
115
- <!-- Use Tailwind classes that meet contrast -->
116
- <p class="text-gray-700 bg-white">Readable text</p>
117
-
118
- <!-- WRONG - Low contrast -->
119
- <p class="text-gray-400 bg-white">Hard to read</p>
120
- ```
121
-
122
- ### Check 7: ARIA Attributes
123
-
124
- ```vue
125
- <!-- Loading state -->
126
- <button :aria-busy="isLoading" :disabled="isLoading">
127
- <span v-if="isLoading" aria-live="polite">Loading...</span>
128
- <span v-else>Submit</span>
129
- </button>
130
-
131
- <!-- Expandable section -->
132
- <button
133
- :aria-expanded="isExpanded"
134
- :aria-controls="panelId"
135
- @click="toggle"
136
- >
137
- Show Details
138
- </button>
139
- <div :id="panelId" v-show="isExpanded">
140
- Details content
141
- </div>
142
- ```
143
-
144
- ## Auto-Fix Actions
145
-
146
- When issues detected:
147
-
148
- 1. **div with @click** -> Convert to `<button type="button">`
149
- 2. **Missing label** -> Add `<label>` or `aria-label`
150
- 3. **Missing keyboard handler** -> Add `@keydown` handlers
151
- 4. **Missing ARIA** -> Add appropriate ARIA attributes
152
- 5. **Missing alt** -> Prompt for alt text
153
-
154
- ## Validation Report
155
-
156
- ```
157
- ACCESSIBILITY VALIDATION
158
-
159
- File: components/ProductCard.vue
160
-
161
- Semantic HTML: Using button elements
162
- Form labels: All inputs labeled
163
- Keyboard nav: Tab order correct
164
- Focus management: Modal traps focus
165
- Image alt text: All images have alt
166
-
167
- Issues:
168
- Line 45: <div @click> should be <button>
169
- Line 72: Input missing aria-describedby for error
170
-
171
- Summary: 2 issues to fix
172
- ```
173
-
174
- ## WCAG 2.1 AA Checklist
175
-
176
- - [ ] 1.1.1 Non-text Content: Alt text for images
177
- - [ ] 1.3.1 Info and Relationships: Semantic markup
178
- - [ ] 1.4.3 Contrast: 4.5:1 minimum
179
- - [ ] 2.1.1 Keyboard: All functionality accessible
180
- - [ ] 2.4.3 Focus Order: Logical tab sequence
181
- - [ ] 2.4.7 Focus Visible: Focus indicators
182
- - [ ] 3.3.2 Labels: Form inputs labeled
183
- - [ ] 4.1.2 Name, Role, Value: ARIA correct
@@ -1,196 +0,0 @@
1
- ---
2
- name: nuxtjs-import-enforcer
3
- description: Automatically enforce consistent import patterns using Nuxt.js ~/ path aliases and proper organization. Use when writing imports, creating new Vue/TS files, or organizing code structure.
4
- ---
5
-
6
- # Nuxt.js Import Convention Enforcer
7
-
8
- ## Activation Triggers
9
-
10
- This skill activates when:
11
- - Writing imports in Vue/TS files
12
- - Creating new files
13
- - Modifying existing files with imports
14
-
15
- ## Import Order
16
-
17
- 1. Vue/Nuxt built-ins (usually auto-imported)
18
- 2. Third-party packages
19
- 3. Composables (auto-imported from ~/composables/)
20
- 4. Components (auto-imported from ~/components/)
21
- 5. Types
22
-
23
- ## Pattern
24
-
25
- ```vue
26
- <script setup lang="ts">
27
- // 1. Vue (only if explicitly needed - usually auto-imported)
28
- import { ref, computed, watch } from 'vue'
29
-
30
- // 2. Third-party
31
- import { z } from 'zod'
32
- import dayjs from 'dayjs'
33
-
34
- // 3. Composables (only if not auto-imported)
35
- import { useAuth } from '~/composables/useAuth'
36
-
37
- // 4. Types
38
- import type { User } from '~/types/user'
39
-
40
- // Implementation
41
- const user = ref<User | null>(null)
42
- </script>
43
- ```
44
-
45
- ## Path Aliases
46
-
47
- ```typescript
48
- // CORRECT - Use ~/ alias
49
- import { useAuth } from '~/composables/useAuth'
50
- import type { User } from '~/types/user'
51
- import { formatDate } from '~/utils/date'
52
-
53
- // WRONG - Relative imports
54
- import { useAuth } from '../../../composables/useAuth'
55
-
56
- // WRONG - @ alias (use ~/ for Nuxt)
57
- import { useAuth } from '@/composables/useAuth'
58
- ```
59
-
60
- ## Auto-Import Awareness
61
-
62
- Nuxt auto-imports these - DON'T import explicitly:
63
-
64
- ### Vue Composition API
65
- ```typescript
66
- // DON'T import - auto-imported
67
- ref, reactive, computed, watch, watchEffect, toRef, toRefs
68
- onMounted, onUnmounted, onBeforeMount, onBeforeUnmount
69
- provide, inject
70
- ```
71
-
72
- ### Nuxt Composables
73
- ```typescript
74
- // DON'T import - auto-imported
75
- useFetch, useAsyncData, useLazyFetch, useLazyAsyncData
76
- useState, useCookie, useHead, useSeoMeta
77
- useRoute, useRouter, useRuntimeConfig
78
- navigateTo, abortNavigation
79
- definePageMeta, defineNuxtComponent
80
- ```
81
-
82
- ### Components
83
- ```typescript
84
- // DON'T import - auto-imported from ~/components/
85
- // Just use directly in template
86
- <MyComponent />
87
- <BaseButton />
88
- <ui-card />
89
- ```
90
-
91
- ## Detection Rules
92
-
93
- ### Rule 1: Unnecessary Vue Imports
94
-
95
- ```typescript
96
- // WRONG
97
- import { ref, computed } from 'vue'
98
-
99
- // CORRECT - Just use directly
100
- const count = ref(0)
101
- const doubled = computed(() => count.value * 2)
102
- ```
103
-
104
- **Action**: Remove unnecessary imports, use auto-imported functions
105
-
106
- ### Rule 2: Unnecessary Nuxt Imports
107
-
108
- ```typescript
109
- // WRONG
110
- import { useFetch } from '#app'
111
- import { useRoute } from 'vue-router'
112
-
113
- // CORRECT - Just use directly
114
- const { data } = await useFetch('/api/users')
115
- const route = useRoute()
116
- ```
117
-
118
- **Action**: Remove unnecessary imports
119
-
120
- ### Rule 3: Component Imports
121
-
122
- ```vue
123
- <!-- WRONG -->
124
- <script setup>
125
- import MyComponent from '~/components/MyComponent.vue'
126
- </script>
127
- <template>
128
- <MyComponent />
129
- </template>
130
-
131
- <!-- CORRECT - Auto-imported -->
132
- <script setup>
133
- // No import needed
134
- </script>
135
- <template>
136
- <MyComponent />
137
- </template>
138
- ```
139
-
140
- ### Rule 4: Relative Import Detection
141
-
142
- ```typescript
143
- // WRONG
144
- import { formatDate } from '../utils/date'
145
- import { User } from '../../types/user'
146
-
147
- // CORRECT
148
- import { formatDate } from '~/utils/date'
149
- import type { User } from '~/types/user'
150
- ```
151
-
152
- **Action**: Convert to ~/ path alias
153
-
154
- ## Auto-Fix Actions
155
-
156
- 1. **Unnecessary Vue import** -> Remove import statement
157
- 2. **Unnecessary Nuxt import** -> Remove import statement
158
- 3. **Component import** -> Remove import, verify component exists
159
- 4. **Relative import** -> Convert to ~/path
160
- 5. **@ alias** -> Convert to ~/
161
-
162
- ## Validation Report
163
-
164
- ```
165
- IMPORT CONVENTION CHECK
166
-
167
- File: pages/users/[id].vue
168
-
169
- Import order: Correct (third-party, then local)
170
- Path aliases: Using ~/
171
- Auto-imports: Correctly utilized
172
-
173
- Issues:
174
- Line 3: Remove "import { ref } from 'vue'" - auto-imported
175
- Line 5: Remove "import { useFetch } from '#app'" - auto-imported
176
- Line 8: Convert "../utils" to "~/utils"
177
-
178
- Auto-fix available: Apply 3 fixes
179
- ```
180
-
181
- ## Configuration
182
-
183
- In `nuxt.config.ts`:
184
-
185
- ```typescript
186
- export default defineNuxtConfig({
187
- imports: {
188
- // Customize auto-import dirs
189
- dirs: ['composables', 'utils'],
190
- },
191
- components: {
192
- // Customize component auto-import
193
- dirs: ['~/components'],
194
- },
195
- })
196
- ```
@@ -1,190 +0,0 @@
1
- ---
2
- name: veevalidate-form-validator
3
- description: This skill should be used when the user asks to "create a form", "add validation", "handle form submission", "use VeeValidate", or when creating login, signup, or data entry forms in Nuxt.js/Vue 3. Enforces VeeValidate + Zod pattern.
4
- ---
5
-
6
- # VeeValidate + Zod Form Validator
7
-
8
- ## Activation Triggers
9
-
10
- This skill activates when:
11
- - Creating form components
12
- - Mentioning "form", "validation", "input"
13
- - Writing `<form>` or v-model
14
- - Handling user input
15
-
16
- ## Required Pattern
17
-
18
- ```vue
19
- <script setup lang="ts">
20
- import { useForm } from 'vee-validate'
21
- import { toTypedSchema } from '@vee-validate/zod'
22
- import { z } from 'zod'
23
-
24
- // Define schema with Zod
25
- const schema = toTypedSchema(
26
- z.object({
27
- email: z.string().email('Invalid email'),
28
- password: z.string().min(8, 'Password too short'),
29
- })
30
- )
31
-
32
- // Create form with VeeValidate
33
- const { handleSubmit, errors, defineField } = useForm({
34
- validationSchema: schema,
35
- })
36
-
37
- // Define reactive fields
38
- const [email, emailAttrs] = defineField('email')
39
- const [password, passwordAttrs] = defineField('password')
40
-
41
- // Type-safe submit handler
42
- const onSubmit = handleSubmit((values) => {
43
- // values is typed: { email: string, password: string }
44
- console.log(values.email, values.password)
45
- })
46
- </script>
47
-
48
- <template>
49
- <form @submit="onSubmit">
50
- <div>
51
- <label for="email">Email</label>
52
- <input
53
- id="email"
54
- v-model="email"
55
- v-bind="emailAttrs"
56
- type="email"
57
- aria-describedby="email-error"
58
- />
59
- <span v-if="errors.email" id="email-error" class="error" role="alert">
60
- {{ errors.email }}
61
- </span>
62
- </div>
63
-
64
- <div>
65
- <label for="password">Password</label>
66
- <input
67
- id="password"
68
- v-model="password"
69
- v-bind="passwordAttrs"
70
- type="password"
71
- aria-describedby="password-error"
72
- />
73
- <span v-if="errors.password" id="password-error" class="error" role="alert">
74
- {{ errors.password }}
75
- </span>
76
- </div>
77
-
78
- <button type="submit">Submit</button>
79
- </form>
80
- </template>
81
- ```
82
-
83
- ## Forbidden Patterns
84
-
85
- ```vue
86
- <!-- WRONG: No validation -->
87
- <input v-model="email" />
88
- <button @click="submit">Submit</button>
89
-
90
- <!-- WRONG: Manual validation -->
91
- <input v-model="email" @blur="validateEmail" />
92
-
93
- <!-- WRONG: Template-only validation -->
94
- <input v-model="email" :class="{ error: !isValidEmail }" />
95
- ```
96
-
97
- ## Complex Form Example
98
-
99
- ```vue
100
- <script setup lang="ts">
101
- import { useForm, useFieldArray } from 'vee-validate'
102
- import { toTypedSchema } from '@vee-validate/zod'
103
- import { z } from 'zod'
104
-
105
- const schema = toTypedSchema(
106
- z.object({
107
- name: z.string().min(1, 'Name required'),
108
- email: z.string().email(),
109
- role: z.enum(['admin', 'user', 'guest']),
110
- skills: z.array(z.object({
111
- name: z.string().min(1),
112
- level: z.number().min(1).max(5),
113
- })).min(1, 'At least one skill required'),
114
- })
115
- )
116
-
117
- const { handleSubmit, errors, defineField, values } = useForm({
118
- validationSchema: schema,
119
- initialValues: {
120
- name: '',
121
- email: '',
122
- role: 'user',
123
- skills: [{ name: '', level: 1 }],
124
- },
125
- })
126
-
127
- const { fields, push, remove } = useFieldArray('skills')
128
-
129
- const [name, nameAttrs] = defineField('name')
130
- const [email, emailAttrs] = defineField('email')
131
- const [role, roleAttrs] = defineField('role')
132
- </script>
133
- ```
134
-
135
- ## Error Display Pattern
136
-
137
- ```vue
138
- <!-- Inline errors -->
139
- <div class="field">
140
- <label for="email">Email</label>
141
- <input
142
- id="email"
143
- v-model="email"
144
- v-bind="emailAttrs"
145
- :class="{ 'border-red-500': errors.email }"
146
- aria-invalid="errors.email ? 'true' : undefined"
147
- aria-describedby="email-error"
148
- />
149
- <Transition name="fade">
150
- <p v-if="errors.email" id="email-error" class="text-red-500 text-sm" role="alert">
151
- {{ errors.email }}
152
- </p>
153
- </Transition>
154
- </div>
155
- ```
156
-
157
- ## Async Validation
158
-
159
- ```typescript
160
- const schema = toTypedSchema(
161
- z.object({
162
- username: z.string()
163
- .min(3)
164
- .refine(async (val) => {
165
- const response = await $fetch(`/api/check-username?q=${val}`)
166
- return response.available
167
- }, 'Username already taken'),
168
- })
169
- )
170
- ```
171
-
172
- ## Validation Report
173
-
174
- ```
175
- FORM VALIDATION CHECK
176
-
177
- File: components/LoginForm.vue
178
-
179
- VeeValidate: useForm imported and used
180
- Zod schema: Defined with proper types
181
- Error display: Errors shown with role="alert"
182
- Accessibility: Labels and aria attributes present
183
- Type safety: Form values properly typed
184
-
185
- Issues:
186
- Line 23: Missing aria-describedby on password input
187
- Line 34: Error message not accessible (missing role="alert")
188
-
189
- Summary: 2 issues to fix
190
- ```
@@ -1,22 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to smi-onboard will be documented in this file.
4
-
5
- ## [Unreleased]
6
-
7
- ### Changed
8
- - Renamed from `smi-onboard` to `onboard` as part of ai-kit migration
9
- - Moved from `plugins/smi-onboard/` to `packs/onboard/`
10
-
11
- ## [0.1.0] - 2026-02-02
12
-
13
- ### Added
14
- - `/onboard` command for interactive engineer onboarding
15
- - `@onboard-guide` agent for ongoing personalized Q&A
16
- - `onboard-context-provider` skill for background-aware assistance
17
- - Auto-detection of project type and tech stack
18
- - Adaptive skill assessment (3 core + conditional follow-ups)
19
- - Knowledge gap analysis with priority levels
20
- - Personalized explanations using analogies to engineer's background
21
- - Generated artifacts: profile, cheatsheet, task plan
22
- - Support for `--quick` and `--task` flags
@@ -1,103 +0,0 @@
1
- # onboard
2
-
3
- Intelligent engineer onboarding that cuts ramp-up time by personalizing project guidance based on the engineer's background and first task.
4
-
5
- ## The Problem
6
-
7
- Onboarding a new engineer typically requires:
8
- - 1-2 hours of the project lead's time explaining architecture
9
- - The engineer reading docs that explain things they already know
10
- - Trial and error to find conventions and patterns
11
- - Repeated "where does this go?" questions
12
-
13
- ## The Solution
14
-
15
- One command: `/onboard`
16
-
17
- - Asks 3-5 adaptive questions about the engineer's background
18
- - Auto-analyzes the project (tech stack, conventions, patterns)
19
- - Identifies knowledge gaps and explains only what's new
20
- - Generates a personalized cheat sheet and task plan
21
-
22
- ## Installation
23
-
24
- ```bash
25
- /plugin install onboard
26
- ```
27
-
28
- ## Usage
29
-
30
- ### First-Time Onboarding
31
-
32
- ```bash
33
- /onboard
34
- ```
35
-
36
- Interactive flow (~3-5 minutes):
37
- 1. Background assessment (adaptive — asks more only if gaps detected)
38
- 2. Automatic project analysis
39
- 3. Knowledge gap identification
40
- 4. Task-specific guidance generation
41
-
42
- ### Quick Mode
43
-
44
- ```bash
45
- /onboard --quick
46
- ```
47
-
48
- Skips skill assessment. Assumes mid-level generalist.
49
-
50
- ### With Pre-specified Task
51
-
52
- ```bash
53
- /onboard --task "Implement user authentication"
54
- ```
55
-
56
- Skips the task question, jumps straight to analysis and guidance.
57
-
58
- ### Ongoing Questions
59
-
60
- After onboarding, use the agent for follow-up questions:
61
-
62
- ```
63
- @onboard-guide "How do I add a new API endpoint?"
64
- @onboard-guide "What's the testing pattern here?"
65
- @onboard-guide "Where should this file go?"
66
- ```
67
-
68
- Answers are personalized based on your onboarding profile.
69
-
70
- ## Generated Artifacts
71
-
72
- All saved to `.claude/` (local, gitignored):
73
-
74
- | File | Purpose |
75
- |------|---------|
76
- | `onboard-profile.local.md` | Your background + knowledge gaps |
77
- | `onboard-cheatsheet.local.md` | Quick reference for commands and conventions |
78
- | `onboard-task-plan.local.md` | Step-by-step plan for your first task |
79
-
80
- ## How Personalization Works
81
-
82
- The plugin maps new concepts to what you already know:
83
-
84
- | You Know | Project Uses | You'll See |
85
- |----------|-------------|------------|
86
- | Django views | Next.js Server Components | "Like Django views but in JSX" |
87
- | React state | Django ORM | "Like useState but for database records" |
88
- | REST APIs | GraphQL | "Same data, different query language" |
89
- | JavaScript | TypeScript | "Your JS + type annotations" |
90
-
91
- Senior engineers get concise syntax-focused answers. Junior engineers get more context and "why" explanations.
92
-
93
- ## Components
94
-
95
- | Component | Type | Purpose |
96
- |-----------|------|---------|
97
- | `/onboard` | Command | Interactive onboarding flow |
98
- | `@onboard-guide` | Agent | Ongoing personalized Q&A |
99
- | `onboard-context-provider` | Skill | Auto-personalizes explanations |
100
-
101
- ## Integration
102
-
103
- Works with all Smicolon framework plugins. When the project uses `django`, `nextjs`, or others, the onboarding automatically includes framework-specific conventions.