omgkit 1.0.0
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/LICENSE +21 -0
- package/README.md +252 -0
- package/bin/omgkit.js +122 -0
- package/lib/.gitkeep +0 -0
- package/lib/cli.js +513 -0
- package/lib/index.js +35 -0
- package/package.json +52 -0
- package/plugin/.claude-plugin/.gitkeep +0 -0
- package/plugin/.claude-plugin/plugin.json +11 -0
- package/plugin/agents/.gitkeep +0 -0
- package/plugin/agents/api-designer.md +66 -0
- package/plugin/agents/architect.md +81 -0
- package/plugin/agents/brainstormer.md +60 -0
- package/plugin/agents/cicd-manager.md +50 -0
- package/plugin/agents/code-reviewer.md +45 -0
- package/plugin/agents/copywriter.md +48 -0
- package/plugin/agents/database-admin.md +49 -0
- package/plugin/agents/debugger.md +55 -0
- package/plugin/agents/docs-manager.md +52 -0
- package/plugin/agents/fullstack-developer.md +67 -0
- package/plugin/agents/git-manager.md +48 -0
- package/plugin/agents/journal-writer.md +51 -0
- package/plugin/agents/oracle.md +91 -0
- package/plugin/agents/pipeline-architect.md +52 -0
- package/plugin/agents/planner.md +60 -0
- package/plugin/agents/project-manager.md +43 -0
- package/plugin/agents/researcher.md +37 -0
- package/plugin/agents/scout.md +37 -0
- package/plugin/agents/security-auditor.md +53 -0
- package/plugin/agents/sprint-master.md +84 -0
- package/plugin/agents/tester.md +50 -0
- package/plugin/agents/ui-ux-designer.md +61 -0
- package/plugin/agents/vulnerability-scanner.md +53 -0
- package/plugin/commands/context/.gitkeep +0 -0
- package/plugin/commands/context/checkpoint.md +20 -0
- package/plugin/commands/context/index.md +17 -0
- package/plugin/commands/context/load.md +16 -0
- package/plugin/commands/context/mode.md +20 -0
- package/plugin/commands/context/spawn-collect.md +14 -0
- package/plugin/commands/context/spawn.md +20 -0
- package/plugin/commands/design/.gitkeep +0 -0
- package/plugin/commands/design/cro.md +27 -0
- package/plugin/commands/design/enhance.md +16 -0
- package/plugin/commands/design/fast.md +17 -0
- package/plugin/commands/design/good.md +23 -0
- package/plugin/commands/design/screenshot.md +21 -0
- package/plugin/commands/dev/.gitkeep +0 -0
- package/plugin/commands/dev/feature.md +25 -0
- package/plugin/commands/dev/fix-ci.md +23 -0
- package/plugin/commands/dev/fix-fast.md +19 -0
- package/plugin/commands/dev/fix-hard.md +25 -0
- package/plugin/commands/dev/fix-logs.md +21 -0
- package/plugin/commands/dev/fix-test.md +23 -0
- package/plugin/commands/dev/fix.md +22 -0
- package/plugin/commands/dev/review.md +31 -0
- package/plugin/commands/dev/tdd.md +29 -0
- package/plugin/commands/dev/test.md +25 -0
- package/plugin/commands/git/.gitkeep +0 -0
- package/plugin/commands/git/cm.md +13 -0
- package/plugin/commands/git/commit.md +31 -0
- package/plugin/commands/git/cp.md +14 -0
- package/plugin/commands/git/deploy.md +21 -0
- package/plugin/commands/git/pr.md +20 -0
- package/plugin/commands/git/ship.md +29 -0
- package/plugin/commands/omega/.gitkeep +0 -0
- package/plugin/commands/omega/1000x.md +41 -0
- package/plugin/commands/omega/100x.md +39 -0
- package/plugin/commands/omega/10x.md +47 -0
- package/plugin/commands/omega/dimensions.md +26 -0
- package/plugin/commands/omega/principles.md +43 -0
- package/plugin/commands/planning/.gitkeep +0 -0
- package/plugin/commands/planning/ask.md +21 -0
- package/plugin/commands/planning/brainstorm.md +33 -0
- package/plugin/commands/planning/doc.md +28 -0
- package/plugin/commands/planning/execute-plan.md +28 -0
- package/plugin/commands/planning/plan-detailed.md +32 -0
- package/plugin/commands/planning/plan-parallel.md +35 -0
- package/plugin/commands/planning/plan.md +39 -0
- package/plugin/commands/planning/research.md +39 -0
- package/plugin/commands/quality/.gitkeep +0 -0
- package/plugin/commands/quality/api-gen.md +25 -0
- package/plugin/commands/quality/lint.md +15 -0
- package/plugin/commands/quality/optimize.md +23 -0
- package/plugin/commands/quality/refactor.md +22 -0
- package/plugin/commands/quality/security-scan.md +28 -0
- package/plugin/commands/sprint/.gitkeep +0 -0
- package/plugin/commands/sprint/backlog-add.md +21 -0
- package/plugin/commands/sprint/backlog-prioritize.md +18 -0
- package/plugin/commands/sprint/backlog-show.md +25 -0
- package/plugin/commands/sprint/init.md +27 -0
- package/plugin/commands/sprint/sprint-current.md +22 -0
- package/plugin/commands/sprint/sprint-end.md +33 -0
- package/plugin/commands/sprint/sprint-new.md +31 -0
- package/plugin/commands/sprint/sprint-start.md +17 -0
- package/plugin/commands/sprint/team-ask.md +21 -0
- package/plugin/commands/sprint/team-run.md +29 -0
- package/plugin/commands/sprint/team-status.md +23 -0
- package/plugin/commands/sprint/vision-set.md +21 -0
- package/plugin/commands/sprint/vision-show.md +15 -0
- package/plugin/mcp/.gitkeep +0 -0
- package/plugin/mcp/.mcp.json +20 -0
- package/plugin/mcp/README.md +68 -0
- package/plugin/modes/.gitkeep +0 -0
- package/plugin/modes/autonomous.md +48 -0
- package/plugin/modes/brainstorm.md +33 -0
- package/plugin/modes/deep-research.md +41 -0
- package/plugin/modes/default.md +25 -0
- package/plugin/modes/implementation.md +35 -0
- package/plugin/modes/omega.md +38 -0
- package/plugin/modes/orchestration.md +41 -0
- package/plugin/modes/review.md +44 -0
- package/plugin/modes/token-efficient.md +37 -0
- package/plugin/skills/databases/.gitkeep +0 -0
- package/plugin/skills/databases/mongodb/SKILL.md +43 -0
- package/plugin/skills/databases/postgresql/SKILL.md +43 -0
- package/plugin/skills/databases/prisma/SKILL.md +55 -0
- package/plugin/skills/databases/redis/SKILL.md +41 -0
- package/plugin/skills/devops/.gitkeep +0 -0
- package/plugin/skills/devops/aws/SKILL.md +51 -0
- package/plugin/skills/devops/docker/SKILL.md +54 -0
- package/plugin/skills/devops/github-actions/SKILL.md +63 -0
- package/plugin/skills/devops/kubernetes/SKILL.md +64 -0
- package/plugin/skills/frameworks/.gitkeep +0 -0
- package/plugin/skills/frameworks/django/SKILL.md +47 -0
- package/plugin/skills/frameworks/express/SKILL.md +55 -0
- package/plugin/skills/frameworks/fastapi/SKILL.md +58 -0
- package/plugin/skills/frameworks/laravel/SKILL.md +65 -0
- package/plugin/skills/frameworks/nestjs/SKILL.md +67 -0
- package/plugin/skills/frameworks/nextjs/SKILL.md +77 -0
- package/plugin/skills/frameworks/rails/SKILL.md +56 -0
- package/plugin/skills/frameworks/react/SKILL.md +61 -0
- package/plugin/skills/frameworks/spring/SKILL.md +70 -0
- package/plugin/skills/frameworks/vue/SKILL.md +62 -0
- package/plugin/skills/frontend/.gitkeep +0 -0
- package/plugin/skills/frontend/accessibility/SKILL.md +52 -0
- package/plugin/skills/frontend/frontend-design/SKILL.md +47 -0
- package/plugin/skills/frontend/responsive/SKILL.md +46 -0
- package/plugin/skills/frontend/shadcn-ui/SKILL.md +58 -0
- package/plugin/skills/frontend/tailwindcss/SKILL.md +52 -0
- package/plugin/skills/frontend/threejs/SKILL.md +59 -0
- package/plugin/skills/languages/.gitkeep +0 -0
- package/plugin/skills/languages/javascript/SKILL.md +62 -0
- package/plugin/skills/languages/python/SKILL.md +63 -0
- package/plugin/skills/languages/typescript/SKILL.md +66 -0
- package/plugin/skills/methodology/.gitkeep +0 -0
- package/plugin/skills/methodology/brainstorming/SKILL.md +34 -0
- package/plugin/skills/methodology/defense-in-depth/SKILL.md +51 -0
- package/plugin/skills/methodology/dispatching-parallel-agents/SKILL.md +43 -0
- package/plugin/skills/methodology/executing-plans/SKILL.md +34 -0
- package/plugin/skills/methodology/finishing-development-branch/SKILL.md +41 -0
- package/plugin/skills/methodology/receiving-code-review/SKILL.md +41 -0
- package/plugin/skills/methodology/requesting-code-review/SKILL.md +38 -0
- package/plugin/skills/methodology/root-cause-tracing/SKILL.md +53 -0
- package/plugin/skills/methodology/systematic-debugging/SKILL.md +50 -0
- package/plugin/skills/methodology/test-driven-development/SKILL.md +39 -0
- package/plugin/skills/methodology/testing-anti-patterns/SKILL.md +50 -0
- package/plugin/skills/methodology/token-optimization/SKILL.md +51 -0
- package/plugin/skills/methodology/verification-before-completion/SKILL.md +32 -0
- package/plugin/skills/methodology/writing-plans/SKILL.md +34 -0
- package/plugin/skills/omega/.gitkeep +0 -0
- package/plugin/skills/omega/omega-architecture/SKILL.md +59 -0
- package/plugin/skills/omega/omega-coding/SKILL.md +61 -0
- package/plugin/skills/omega/omega-sprint/SKILL.md +64 -0
- package/plugin/skills/omega/omega-testing/SKILL.md +71 -0
- package/plugin/skills/omega/omega-thinking/SKILL.md +54 -0
- package/plugin/skills/security/.gitkeep +0 -0
- package/plugin/skills/security/better-auth/SKILL.md +53 -0
- package/plugin/skills/security/oauth/SKILL.md +50 -0
- package/plugin/skills/security/owasp/SKILL.md +57 -0
- package/plugin/skills/testing/.gitkeep +0 -0
- package/plugin/skills/testing/playwright/SKILL.md +60 -0
- package/plugin/skills/testing/pytest/SKILL.md +58 -0
- package/plugin/skills/testing/vitest/SKILL.md +64 -0
- package/templates/.gitkeep +0 -0
- package/templates/OMEGA.md +80 -0
- package/templates/backlog.yaml +25 -0
- package/templates/config.yaml +44 -0
- package/templates/settings.json +20 -0
- package/templates/vision.yaml +30 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spring
|
|
3
|
+
description: Spring Boot development. Use for Spring projects, REST APIs, JPA.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spring Boot Skill
|
|
7
|
+
|
|
8
|
+
## Patterns
|
|
9
|
+
|
|
10
|
+
### Controller
|
|
11
|
+
```java
|
|
12
|
+
@RestController
|
|
13
|
+
@RequestMapping("/api/users")
|
|
14
|
+
public class UserController {
|
|
15
|
+
@Autowired
|
|
16
|
+
private UserService userService;
|
|
17
|
+
|
|
18
|
+
@GetMapping
|
|
19
|
+
public List<User> findAll() {
|
|
20
|
+
return userService.findAll();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@PostMapping
|
|
24
|
+
public ResponseEntity<User> create(@RequestBody CreateUserDto dto) {
|
|
25
|
+
User user = userService.create(dto);
|
|
26
|
+
return ResponseEntity.status(HttpStatus.CREATED).body(user);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Service
|
|
32
|
+
```java
|
|
33
|
+
@Service
|
|
34
|
+
public class UserService {
|
|
35
|
+
@Autowired
|
|
36
|
+
private UserRepository userRepository;
|
|
37
|
+
|
|
38
|
+
public List<User> findAll() {
|
|
39
|
+
return userRepository.findAll();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Repository
|
|
45
|
+
```java
|
|
46
|
+
@Repository
|
|
47
|
+
public interface UserRepository extends JpaRepository<User, Long> {
|
|
48
|
+
Optional<User> findByEmail(String email);
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Entity
|
|
53
|
+
```java
|
|
54
|
+
@Entity
|
|
55
|
+
@Table(name = "users")
|
|
56
|
+
public class User {
|
|
57
|
+
@Id
|
|
58
|
+
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
59
|
+
private Long id;
|
|
60
|
+
|
|
61
|
+
@Column(unique = true)
|
|
62
|
+
private String email;
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Best Practices
|
|
67
|
+
- Use constructor injection
|
|
68
|
+
- Use DTOs for API contracts
|
|
69
|
+
- Use @Transactional for writes
|
|
70
|
+
- Use Spring Security
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vue
|
|
3
|
+
description: Vue.js development. Use for Vue 3 projects, Composition API, Pinia.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Vue.js Skill
|
|
7
|
+
|
|
8
|
+
## Composition API
|
|
9
|
+
|
|
10
|
+
### Component
|
|
11
|
+
```vue
|
|
12
|
+
<script setup lang="ts">
|
|
13
|
+
import { ref, computed } from 'vue';
|
|
14
|
+
|
|
15
|
+
const count = ref(0);
|
|
16
|
+
const doubled = computed(() => count.value * 2);
|
|
17
|
+
|
|
18
|
+
function increment() {
|
|
19
|
+
count.value++;
|
|
20
|
+
}
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<template>
|
|
24
|
+
<button @click="increment">{{ count }} ({{ doubled }})</button>
|
|
25
|
+
</template>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Composable
|
|
29
|
+
```typescript
|
|
30
|
+
// composables/useUser.ts
|
|
31
|
+
export function useUser(id: Ref<string>) {
|
|
32
|
+
const user = ref<User | null>(null);
|
|
33
|
+
const loading = ref(true);
|
|
34
|
+
|
|
35
|
+
watch(id, async (newId) => {
|
|
36
|
+
loading.value = true;
|
|
37
|
+
user.value = await fetchUser(newId);
|
|
38
|
+
loading.value = false;
|
|
39
|
+
}, { immediate: true });
|
|
40
|
+
|
|
41
|
+
return { user, loading };
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Pinia Store
|
|
46
|
+
```typescript
|
|
47
|
+
export const useUserStore = defineStore('user', () => {
|
|
48
|
+
const user = ref<User | null>(null);
|
|
49
|
+
|
|
50
|
+
async function login(email: string, password: string) {
|
|
51
|
+
user.value = await api.login(email, password);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return { user, login };
|
|
55
|
+
});
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Best Practices
|
|
59
|
+
- Use Composition API
|
|
60
|
+
- Use `<script setup>`
|
|
61
|
+
- Create composables for logic
|
|
62
|
+
- Use Pinia for state
|
|
File without changes
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: accessibility
|
|
3
|
+
description: Accessibility (a11y). Use for WCAG compliance, screen readers, keyboard navigation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Accessibility Skill
|
|
7
|
+
|
|
8
|
+
## Semantic HTML
|
|
9
|
+
```html
|
|
10
|
+
<header>
|
|
11
|
+
<nav aria-label="Main">
|
|
12
|
+
<main>
|
|
13
|
+
<article>
|
|
14
|
+
<aside>
|
|
15
|
+
<footer>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## ARIA
|
|
19
|
+
```html
|
|
20
|
+
<button aria-label="Close" aria-pressed="false">
|
|
21
|
+
<div role="alert" aria-live="polite">
|
|
22
|
+
<input aria-describedby="hint-id">
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Keyboard Navigation
|
|
26
|
+
```tsx
|
|
27
|
+
function handleKeyDown(e: KeyboardEvent) {
|
|
28
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
29
|
+
activate();
|
|
30
|
+
}
|
|
31
|
+
if (e.key === 'Escape') {
|
|
32
|
+
close();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Focus Management
|
|
38
|
+
```tsx
|
|
39
|
+
const ref = useRef<HTMLButtonElement>(null);
|
|
40
|
+
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
if (isOpen) ref.current?.focus();
|
|
43
|
+
}, [isOpen]);
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Checklist
|
|
47
|
+
- [ ] Color contrast 4.5:1+
|
|
48
|
+
- [ ] Keyboard accessible
|
|
49
|
+
- [ ] Focus visible
|
|
50
|
+
- [ ] Alt text on images
|
|
51
|
+
- [ ] Form labels
|
|
52
|
+
- [ ] Skip links
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend-design
|
|
3
|
+
description: Frontend design patterns. Use for component architecture, state management.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Frontend Design Skill
|
|
7
|
+
|
|
8
|
+
## Component Patterns
|
|
9
|
+
|
|
10
|
+
### Compound Components
|
|
11
|
+
```tsx
|
|
12
|
+
<Select>
|
|
13
|
+
<SelectTrigger>Select option</SelectTrigger>
|
|
14
|
+
<SelectContent>
|
|
15
|
+
<SelectItem value="1">Option 1</SelectItem>
|
|
16
|
+
</SelectContent>
|
|
17
|
+
</Select>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Render Props
|
|
21
|
+
```tsx
|
|
22
|
+
<DataFetcher url="/api/users">
|
|
23
|
+
{({ data, loading }) => loading ? <Spinner /> : <UserList users={data} />}
|
|
24
|
+
</DataFetcher>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Custom Hooks
|
|
28
|
+
```tsx
|
|
29
|
+
function useLocalStorage<T>(key: string, initial: T) {
|
|
30
|
+
const [value, setValue] = useState<T>(() => {
|
|
31
|
+
const stored = localStorage.getItem(key);
|
|
32
|
+
return stored ? JSON.parse(stored) : initial;
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
localStorage.setItem(key, JSON.stringify(value));
|
|
37
|
+
}, [key, value]);
|
|
38
|
+
|
|
39
|
+
return [value, setValue] as const;
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Best Practices
|
|
44
|
+
- Single responsibility components
|
|
45
|
+
- Lift state appropriately
|
|
46
|
+
- Colocate related code
|
|
47
|
+
- Use composition over inheritance
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: responsive
|
|
3
|
+
description: Responsive design. Use for mobile-first, adaptive layouts.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Responsive Design Skill
|
|
7
|
+
|
|
8
|
+
## Breakpoints
|
|
9
|
+
```css
|
|
10
|
+
/* Mobile first */
|
|
11
|
+
.element { /* Mobile styles */ }
|
|
12
|
+
|
|
13
|
+
@media (min-width: 640px) { /* sm */ }
|
|
14
|
+
@media (min-width: 768px) { /* md */ }
|
|
15
|
+
@media (min-width: 1024px) { /* lg */ }
|
|
16
|
+
@media (min-width: 1280px) { /* xl */ }
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Patterns
|
|
20
|
+
|
|
21
|
+
### Fluid Typography
|
|
22
|
+
```css
|
|
23
|
+
font-size: clamp(1rem, 2.5vw, 2rem);
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Responsive Grid
|
|
27
|
+
```css
|
|
28
|
+
.grid {
|
|
29
|
+
display: grid;
|
|
30
|
+
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
31
|
+
gap: 1rem;
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Container Queries
|
|
36
|
+
```css
|
|
37
|
+
@container (min-width: 400px) {
|
|
38
|
+
.card { flex-direction: row; }
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Best Practices
|
|
43
|
+
- Mobile-first approach
|
|
44
|
+
- Use relative units
|
|
45
|
+
- Test on real devices
|
|
46
|
+
- Consider touch targets (44px min)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: shadcn-ui
|
|
3
|
+
description: shadcn/ui components. Use for pre-built accessible React components.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# shadcn/ui Skill
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
```bash
|
|
10
|
+
npx shadcn-ui@latest init
|
|
11
|
+
npx shadcn-ui@latest add button
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
```tsx
|
|
16
|
+
import { Button } from "@/components/ui/button"
|
|
17
|
+
import { Input } from "@/components/ui/input"
|
|
18
|
+
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"
|
|
19
|
+
|
|
20
|
+
<Button variant="default">Click me</Button>
|
|
21
|
+
<Button variant="outline">Outline</Button>
|
|
22
|
+
<Button variant="ghost">Ghost</Button>
|
|
23
|
+
|
|
24
|
+
<Card>
|
|
25
|
+
<CardHeader>
|
|
26
|
+
<CardTitle>Title</CardTitle>
|
|
27
|
+
</CardHeader>
|
|
28
|
+
<CardContent>
|
|
29
|
+
Content here
|
|
30
|
+
</CardContent>
|
|
31
|
+
</Card>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Form Pattern
|
|
35
|
+
```tsx
|
|
36
|
+
import { useForm } from "react-hook-form"
|
|
37
|
+
import { Form, FormField, FormItem, FormLabel, FormControl } from "@/components/ui/form"
|
|
38
|
+
|
|
39
|
+
<Form {...form}>
|
|
40
|
+
<FormField
|
|
41
|
+
control={form.control}
|
|
42
|
+
name="email"
|
|
43
|
+
render={({ field }) => (
|
|
44
|
+
<FormItem>
|
|
45
|
+
<FormLabel>Email</FormLabel>
|
|
46
|
+
<FormControl>
|
|
47
|
+
<Input {...field} />
|
|
48
|
+
</FormControl>
|
|
49
|
+
</FormItem>
|
|
50
|
+
)}
|
|
51
|
+
/>
|
|
52
|
+
</Form>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Best Practices
|
|
56
|
+
- Customize via CSS variables
|
|
57
|
+
- Use with React Hook Form
|
|
58
|
+
- Extend components as needed
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tailwindcss
|
|
3
|
+
description: Tailwind CSS styling. Use when styling with utility classes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Tailwind CSS Skill
|
|
7
|
+
|
|
8
|
+
## Core Utilities
|
|
9
|
+
```html
|
|
10
|
+
<!-- Spacing -->
|
|
11
|
+
<div class="p-4 m-2 space-y-4">
|
|
12
|
+
|
|
13
|
+
<!-- Flexbox -->
|
|
14
|
+
<div class="flex items-center justify-between gap-4">
|
|
15
|
+
|
|
16
|
+
<!-- Grid -->
|
|
17
|
+
<div class="grid grid-cols-3 gap-4">
|
|
18
|
+
|
|
19
|
+
<!-- Typography -->
|
|
20
|
+
<p class="text-lg font-bold text-gray-900">
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Responsive
|
|
24
|
+
```html
|
|
25
|
+
<div class="text-sm md:text-base lg:text-lg">
|
|
26
|
+
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Component Pattern
|
|
30
|
+
```html
|
|
31
|
+
<button class="
|
|
32
|
+
px-4 py-2
|
|
33
|
+
bg-blue-500 hover:bg-blue-600
|
|
34
|
+
text-white font-medium
|
|
35
|
+
rounded-lg
|
|
36
|
+
transition-colors
|
|
37
|
+
focus:outline-none focus:ring-2 focus:ring-blue-500
|
|
38
|
+
">
|
|
39
|
+
Click me
|
|
40
|
+
</button>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Dark Mode
|
|
44
|
+
```html
|
|
45
|
+
<div class="bg-white dark:bg-gray-900 text-black dark:text-white">
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Best Practices
|
|
49
|
+
- Use consistent spacing
|
|
50
|
+
- Mobile-first responsive
|
|
51
|
+
- Extract common patterns
|
|
52
|
+
- Use @apply sparingly
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: threejs
|
|
3
|
+
description: Three.js 3D graphics. Use for 3D scenes, WebGL, animations.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Three.js Skill
|
|
7
|
+
|
|
8
|
+
## Basic Setup
|
|
9
|
+
```javascript
|
|
10
|
+
import * as THREE from 'three';
|
|
11
|
+
|
|
12
|
+
const scene = new THREE.Scene();
|
|
13
|
+
const camera = new THREE.PerspectiveCamera(75, width / height, 0.1, 1000);
|
|
14
|
+
const renderer = new THREE.WebGLRenderer();
|
|
15
|
+
|
|
16
|
+
renderer.setSize(width, height);
|
|
17
|
+
document.body.appendChild(renderer.domElement);
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## React Three Fiber
|
|
21
|
+
```tsx
|
|
22
|
+
import { Canvas } from '@react-three/fiber';
|
|
23
|
+
import { OrbitControls } from '@react-three/drei';
|
|
24
|
+
|
|
25
|
+
function Scene() {
|
|
26
|
+
return (
|
|
27
|
+
<Canvas>
|
|
28
|
+
<ambientLight />
|
|
29
|
+
<pointLight position={[10, 10, 10]} />
|
|
30
|
+
<mesh>
|
|
31
|
+
<boxGeometry />
|
|
32
|
+
<meshStandardMaterial color="orange" />
|
|
33
|
+
</mesh>
|
|
34
|
+
<OrbitControls />
|
|
35
|
+
</Canvas>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Animation
|
|
41
|
+
```tsx
|
|
42
|
+
import { useFrame } from '@react-three/fiber';
|
|
43
|
+
|
|
44
|
+
function Box() {
|
|
45
|
+
const ref = useRef<THREE.Mesh>(null);
|
|
46
|
+
|
|
47
|
+
useFrame((state, delta) => {
|
|
48
|
+
if (ref.current) ref.current.rotation.y += delta;
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
return <mesh ref={ref}>...</mesh>;
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Best Practices
|
|
56
|
+
- Use React Three Fiber for React
|
|
57
|
+
- Dispose resources
|
|
58
|
+
- Optimize draw calls
|
|
59
|
+
- Use instances for repeated objects
|
|
File without changes
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: javascript
|
|
3
|
+
description: JavaScript development. Use for ES6+, async patterns, DOM manipulation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# JavaScript Skill
|
|
7
|
+
|
|
8
|
+
## Patterns
|
|
9
|
+
|
|
10
|
+
### Async/Await
|
|
11
|
+
```javascript
|
|
12
|
+
async function fetchData() {
|
|
13
|
+
try {
|
|
14
|
+
const response = await fetch('/api/data');
|
|
15
|
+
const data = await response.json();
|
|
16
|
+
return data;
|
|
17
|
+
} catch (error) {
|
|
18
|
+
console.error('Fetch failed:', error);
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Destructuring
|
|
25
|
+
```javascript
|
|
26
|
+
const { name, email } = user;
|
|
27
|
+
const [first, ...rest] = items;
|
|
28
|
+
const { data: userData } = response;
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Spread Operator
|
|
32
|
+
```javascript
|
|
33
|
+
const merged = { ...defaults, ...options };
|
|
34
|
+
const combined = [...array1, ...array2];
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Modules (ESM)
|
|
38
|
+
```javascript
|
|
39
|
+
// Named exports
|
|
40
|
+
export const helper = () => {};
|
|
41
|
+
export function process() {}
|
|
42
|
+
|
|
43
|
+
// Default export
|
|
44
|
+
export default class Service {}
|
|
45
|
+
|
|
46
|
+
// Import
|
|
47
|
+
import Service, { helper, process } from './service.js';
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Optional Chaining
|
|
51
|
+
```javascript
|
|
52
|
+
const street = user?.address?.street;
|
|
53
|
+
const result = callback?.();
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Best Practices
|
|
57
|
+
- Use const/let, never var
|
|
58
|
+
- Use arrow functions for callbacks
|
|
59
|
+
- Use template literals
|
|
60
|
+
- Use optional chaining
|
|
61
|
+
- Use nullish coalescing (??)
|
|
62
|
+
- Use modules (ESM)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: python
|
|
3
|
+
description: Python development. Use when writing Python code, using pip, or working with Python frameworks.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Python Skill
|
|
7
|
+
|
|
8
|
+
## Patterns
|
|
9
|
+
|
|
10
|
+
### Type Hints
|
|
11
|
+
```python
|
|
12
|
+
from typing import Optional, List
|
|
13
|
+
|
|
14
|
+
def create_user(email: str, password: str) -> User:
|
|
15
|
+
"""Create a new user."""
|
|
16
|
+
...
|
|
17
|
+
|
|
18
|
+
def get_users(limit: int = 10) -> List[User]:
|
|
19
|
+
...
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Async
|
|
23
|
+
```python
|
|
24
|
+
import asyncio
|
|
25
|
+
import aiohttp
|
|
26
|
+
|
|
27
|
+
async def fetch_data(url: str) -> dict:
|
|
28
|
+
async with aiohttp.ClientSession() as session:
|
|
29
|
+
async with session.get(url) as response:
|
|
30
|
+
return await response.json()
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Dataclasses
|
|
34
|
+
```python
|
|
35
|
+
from dataclasses import dataclass
|
|
36
|
+
from datetime import datetime
|
|
37
|
+
|
|
38
|
+
@dataclass
|
|
39
|
+
class User:
|
|
40
|
+
id: str
|
|
41
|
+
email: str
|
|
42
|
+
created_at: datetime = field(default_factory=datetime.now)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Pydantic
|
|
46
|
+
```python
|
|
47
|
+
from pydantic import BaseModel, EmailStr
|
|
48
|
+
|
|
49
|
+
class UserCreate(BaseModel):
|
|
50
|
+
email: EmailStr
|
|
51
|
+
password: str
|
|
52
|
+
|
|
53
|
+
class Config:
|
|
54
|
+
str_strip_whitespace = True
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Best Practices
|
|
58
|
+
- Use type hints everywhere
|
|
59
|
+
- Use dataclasses or Pydantic for data
|
|
60
|
+
- Use async for I/O operations
|
|
61
|
+
- Follow PEP 8
|
|
62
|
+
- Use virtual environments
|
|
63
|
+
- Write docstrings
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: typescript
|
|
3
|
+
description: TypeScript development. Use when writing TypeScript, using strict types, or type-safe code.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TypeScript Skill
|
|
7
|
+
|
|
8
|
+
## Patterns
|
|
9
|
+
|
|
10
|
+
### Strict Types
|
|
11
|
+
```typescript
|
|
12
|
+
interface User {
|
|
13
|
+
id: string;
|
|
14
|
+
email: string;
|
|
15
|
+
createdAt: Date;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface CreateUserInput {
|
|
19
|
+
email: string;
|
|
20
|
+
password: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function createUser(input: CreateUserInput): Promise<User> {
|
|
24
|
+
...
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Generics
|
|
29
|
+
```typescript
|
|
30
|
+
type Result<T, E = Error> =
|
|
31
|
+
| { ok: true; data: T }
|
|
32
|
+
| { ok: false; error: E };
|
|
33
|
+
|
|
34
|
+
async function fetchUser(id: string): Promise<Result<User>> {
|
|
35
|
+
try {
|
|
36
|
+
const user = await db.users.findById(id);
|
|
37
|
+
return { ok: true, data: user };
|
|
38
|
+
} catch (error) {
|
|
39
|
+
return { ok: false, error };
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Utility Types
|
|
45
|
+
```typescript
|
|
46
|
+
type Partial<T> = { [P in keyof T]?: T[P] };
|
|
47
|
+
type Required<T> = { [P in keyof T]-?: T[P] };
|
|
48
|
+
type Pick<T, K extends keyof T> = { [P in K]: T[P] };
|
|
49
|
+
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Const Assertions
|
|
53
|
+
```typescript
|
|
54
|
+
const CONFIG = {
|
|
55
|
+
API_URL: 'https://api.example.com',
|
|
56
|
+
TIMEOUT: 5000,
|
|
57
|
+
} as const;
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Best Practices
|
|
61
|
+
- Enable strict mode
|
|
62
|
+
- Use interfaces for objects
|
|
63
|
+
- Use type for unions/intersections
|
|
64
|
+
- Avoid `any`
|
|
65
|
+
- Use const assertions
|
|
66
|
+
- Prefer unknown over any
|
|
File without changes
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brainstorming
|
|
3
|
+
description: Creative brainstorming. Use when exploring ideas, generating options.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Brainstorming Skill
|
|
7
|
+
|
|
8
|
+
## Process
|
|
9
|
+
1. **Diverge** - Generate many ideas without judgment
|
|
10
|
+
2. **Explore** - Ask clarifying questions
|
|
11
|
+
3. **Converge** - Evaluate and prioritize
|
|
12
|
+
|
|
13
|
+
## Rules
|
|
14
|
+
- One question at a time
|
|
15
|
+
- No premature judgment
|
|
16
|
+
- Quantity over quality first
|
|
17
|
+
- Build on ideas
|
|
18
|
+
|
|
19
|
+
## Techniques
|
|
20
|
+
- Mind mapping
|
|
21
|
+
- SCAMPER
|
|
22
|
+
- Reverse brainstorming
|
|
23
|
+
- Random word association
|
|
24
|
+
|
|
25
|
+
## Output
|
|
26
|
+
```markdown
|
|
27
|
+
## Ideas Generated
|
|
28
|
+
1. [Idea] - [Brief rationale]
|
|
29
|
+
|
|
30
|
+
## Top Recommendations
|
|
31
|
+
1. **Best Overall**: [Why]
|
|
32
|
+
2. **Most Innovative**: [Why]
|
|
33
|
+
3. **Quickest Win**: [Why]
|
|
34
|
+
```
|