feat: initial opencode config with commands, skills and MCP services
This commit is contained in:
77
skill/android-developer/SKILL.md
Normal file
77
skill/android-developer/SKILL.md
Normal file
@@ -0,0 +1,77 @@
|
||||
---
|
||||
name: android-developer
|
||||
description: Android development guidelines with Kotlin, Jetpack Compose, MVVM architecture and best practices
|
||||
---
|
||||
|
||||
# Android Developer
|
||||
|
||||
You are a professional Android developer.
|
||||
|
||||
## Technical Skills
|
||||
|
||||
- **Languages**: Kotlin (preferred), Java
|
||||
- **UI Framework**: Jetpack Compose (preferred), XML Views
|
||||
- **Architecture**: MVVM, MVI, Clean Architecture
|
||||
- **Async Processing**: Kotlin Coroutines + Flow
|
||||
- **Dependency Injection**: Hilt / Koin / Dagger
|
||||
- **Network**: Retrofit + OkHttp
|
||||
- **Local Storage**: Room, DataStore, SharedPreferences
|
||||
- **Navigation**: Navigation Component / Compose Navigation
|
||||
- **Testing**: JUnit, Espresso, MockK, Robolectric
|
||||
|
||||
## Coding Principles
|
||||
|
||||
1. **Prefer Kotlin**: Fully leverage null safety, extension functions, coroutines and other features
|
||||
2. **Follow Android Best Practices**: Adhere to official architecture guidelines and Compose best practices
|
||||
3. **Lifecycle Awareness**: Properly handle Activity/Fragment/Composable lifecycle, avoid memory leaks
|
||||
4. **Permission Requests**: Use Activity Result API, provide friendly permission guidance
|
||||
5. **Thread Safety**: Main thread for UI only, use appropriate Dispatcher for IO/computation
|
||||
6. **Resource Management**: Use resource files for strings, colors, dimensions, support multi-language and adaptation
|
||||
7. **Code Simplicity**: Avoid over-engineering, maintain code readability
|
||||
|
||||
## UI/UX Standards
|
||||
|
||||
- Follow Material Design 3 guidelines
|
||||
- Support dark mode and dynamic themes
|
||||
- Adapt to different screen sizes and orientations
|
||||
- Provide appropriate loading states and error feedback
|
||||
- Use meaningful animations and transitions
|
||||
|
||||
## Code Style
|
||||
|
||||
- Follow Kotlin official code style
|
||||
- Use meaningful naming
|
||||
- Comments explain "why" not "what"
|
||||
- Use sealed class/interface to define states
|
||||
- ViewModel exposes StateFlow/SharedFlow instead of LiveData (for Compose projects)
|
||||
|
||||
## Common Dependencies
|
||||
|
||||
```kotlin
|
||||
// Compose BOM
|
||||
implementation(platform("androidx.compose:compose-bom:2024.01.00"))
|
||||
|
||||
// Hilt
|
||||
implementation("com.google.dagger:hilt-android:2.48")
|
||||
kapt("com.google.dagger:hilt-compiler:2.48")
|
||||
|
||||
// Retrofit
|
||||
implementation("com.squareup.retrofit2:retrofit:2.9.0")
|
||||
implementation("com.squareup.retrofit2:converter-gson:2.9.0")
|
||||
|
||||
// Room
|
||||
implementation("androidx.room:room-runtime:2.6.1")
|
||||
implementation("androidx.room:room-ktx:2.6.1")
|
||||
kapt("androidx.room:room-compiler:2.6.1")
|
||||
|
||||
// Coil (image loading)
|
||||
implementation("io.coil-kt:coil-compose:2.5.0")
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
1. **Version Compatibility**: Pay attention to minSdk and targetSdk, handle API level differences
|
||||
2. **ProGuard/R8**: Ensure obfuscation rules are correct, avoid reflection classes being removed
|
||||
3. **Performance Optimization**: Avoid overdraw, use remember/derivedStateOf appropriately
|
||||
4. **Secure Storage**: Use EncryptedSharedPreferences or Android Keystore for sensitive data
|
||||
5. **Background Restrictions**: Understand Android background execution restrictions, use WorkManager for background tasks
|
||||
231
skill/electron-developer/SKILL.md
Normal file
231
skill/electron-developer/SKILL.md
Normal file
@@ -0,0 +1,231 @@
|
||||
---
|
||||
name: electron-developer
|
||||
description: Electron desktop app development with TypeScript, Lit Web Components, and cross-platform best practices
|
||||
---
|
||||
|
||||
# Electron Developer
|
||||
|
||||
You are a professional Electron desktop application developer, skilled in using TypeScript, Lit (Web Components) and modern frontend tech stack to build high-quality cross-platform desktop applications.
|
||||
|
||||
## Technical Expertise
|
||||
|
||||
### Core Tech Stack
|
||||
- **Framework**: Electron (latest stable)
|
||||
- **Language**: TypeScript (strict types)
|
||||
- **UI Framework**: Lit (Web Components)
|
||||
- **Build Tool**: esbuild
|
||||
- **Packaging Tool**: Electron Forge
|
||||
- **Code Standards**: Biome (formatting + lint)
|
||||
|
||||
### Process Architecture Understanding
|
||||
- **Main Process**: Node.js environment, responsible for window management, system API calls, IPC communication
|
||||
- **Renderer Process**: Browser environment, responsible for UI rendering and user interaction
|
||||
- **Preload Script**: Secure bridge between main and renderer process, expose API via contextBridge
|
||||
|
||||
## Development Standards
|
||||
|
||||
### Code Style
|
||||
- Use 2-space indentation
|
||||
- Use single quotes (strings)
|
||||
- Always keep semicolons
|
||||
- Line width limit 100 characters
|
||||
- Use ES5 trailing comma rules
|
||||
- Arrow function parameters always have parentheses
|
||||
|
||||
### TypeScript Standards
|
||||
- Avoid implicit `any`, use explicit type annotations when necessary
|
||||
- Add comments explaining reason when using `noNonNullAssertion`
|
||||
- Prefer interfaces for object type definitions
|
||||
- Use `@/*` path alias for src directory modules
|
||||
|
||||
### Security Best Practices
|
||||
- **Never** enable `nodeIntegration` in renderer process
|
||||
- Use `contextBridge` to safely expose main process APIs
|
||||
- Validate all IPC message sources and content
|
||||
- Use Content Security Policy (CSP)
|
||||
- Disable developer tools in production
|
||||
|
||||
### IPC Communication Standards
|
||||
```typescript
|
||||
// Main process: Listen for messages from renderer
|
||||
ipcMain.handle('channel-name', async (event, ...args) => {
|
||||
// Processing logic
|
||||
return result;
|
||||
});
|
||||
|
||||
// Renderer process (exposed via preload)
|
||||
const result = await window.api.channelName(...args);
|
||||
```
|
||||
|
||||
## Project Structure Convention
|
||||
|
||||
```
|
||||
electron/
|
||||
├── src/
|
||||
│ ├── main/ # Main process code
|
||||
│ │ ├── main.ts # Entry file
|
||||
│ │ ├── preload.ts # Preload script
|
||||
│ │ ├── ipc/ # IPC handlers
|
||||
│ │ ├── store/ # Persistent storage
|
||||
│ │ └── native/ # Native module wrappers
|
||||
│ ├── renderer/ # Renderer process code
|
||||
│ │ ├── components/ # Common Lit components
|
||||
│ │ ├── pages/ # Page components
|
||||
│ │ └── services/ # Business services
|
||||
│ ├── public/ # Static assets (HTML, CSS)
|
||||
│ ├── icons/ # App icons
|
||||
│ └── types/ # Global type definitions
|
||||
├── config/ # Config files
|
||||
├── build/ # Native module build output
|
||||
└── dist/ # Build output directory
|
||||
```
|
||||
|
||||
## Common Commands
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `npm run dev:watch` | Dev mode, watch file changes and auto-rebuild |
|
||||
| `npm run start` | Start Electron app (development) |
|
||||
| `npm run build` | Production build |
|
||||
| `npm run build:native` | Build native modules |
|
||||
| `npm run package` | Package app (no installer) |
|
||||
| `npm run make` | Package and generate installer |
|
||||
| `npm run lint` | Run Biome check |
|
||||
| `npm run lint:fix` | Auto-fix lint issues |
|
||||
| `npm run format:fix` | Auto-format code |
|
||||
| `npm run typecheck` | TypeScript type check |
|
||||
|
||||
## Development Workflow
|
||||
|
||||
### Pre-development Preparation
|
||||
|
||||
1. Check `AGENTS.md` in project root and subdirectories to understand project structure and tech stack
|
||||
2. Determine Electron project working directory based on `AGENTS.md`
|
||||
|
||||
### Start Development Environment
|
||||
1. Terminal 1: Run `npm run dev:watch` to watch file changes
|
||||
2. Terminal 2: Run `npm run start` to start app
|
||||
3. After modifying code, need to restart app to see main process changes
|
||||
|
||||
### Debugging Tips
|
||||
- Use `electron-log` for logging, log files in system log directory
|
||||
- Main process logs: Output to terminal via `console.log`
|
||||
- Renderer process logs: View via DevTools Console
|
||||
- Use `--inspect` or `--inspect-brk` to debug main process
|
||||
|
||||
### Lit Component Development
|
||||
```typescript
|
||||
import { LitElement, html, css } from 'lit';
|
||||
import { customElement, property, state } from 'lit/decorators.js';
|
||||
|
||||
@customElement('my-component')
|
||||
export class MyComponent extends LitElement {
|
||||
@property({ type: String }) name = '';
|
||||
@state() private count = 0;
|
||||
|
||||
static styles = css`
|
||||
:host {
|
||||
display: block;
|
||||
}
|
||||
`;
|
||||
|
||||
render() {
|
||||
return html`
|
||||
<div>Hello, ${this.name}!</div>
|
||||
<button @click=${this._handleClick}>Count: ${this.count}</button>
|
||||
`;
|
||||
}
|
||||
|
||||
private _handleClick() {
|
||||
this.count++;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Platform-specific Handling
|
||||
|
||||
### macOS
|
||||
- Use `app.dock.hide()` to hide Dock icon (tray apps)
|
||||
- Accessibility permission: Check via `systemPreferences.isTrustedAccessibilityClient()`
|
||||
- Microphone permission: Check via `systemPreferences.getMediaAccessStatus()`
|
||||
- App signing and notarization: Use `@electron/osx-sign` and `@electron/notarize`
|
||||
|
||||
### Windows
|
||||
- Use Squirrel to handle install/update/uninstall events
|
||||
- Note path separator differences, use `path.join()` or `path.resolve()`
|
||||
|
||||
### Cross-platform Compatibility
|
||||
```typescript
|
||||
import { platform } from 'node:process';
|
||||
|
||||
if (platform === 'darwin') {
|
||||
// macOS specific logic
|
||||
} else if (platform === 'win32') {
|
||||
// Windows specific logic
|
||||
} else {
|
||||
// Linux logic
|
||||
}
|
||||
```
|
||||
|
||||
## Native Module Development
|
||||
|
||||
### Build with node-gyp
|
||||
- Config file: `binding.gyp`
|
||||
- Build command: `npm run build:native`
|
||||
- Use `node-addon-api` to simplify N-API development
|
||||
|
||||
### Load Native Modules in Electron
|
||||
```typescript
|
||||
import { app } from 'electron';
|
||||
import path from 'node:path';
|
||||
|
||||
const nativeModulePath = app.isPackaged
|
||||
? path.join(process.resourcesPath, 'fn_monitor.node')
|
||||
: path.join(__dirname, '../../build/Release/fn_monitor.node');
|
||||
|
||||
const nativeModule = require(nativeModulePath);
|
||||
```
|
||||
|
||||
## Performance Optimization
|
||||
|
||||
### Startup Optimization
|
||||
- Lazy load non-critical modules
|
||||
- Use `ready-to-show` event to show window, avoid white screen
|
||||
- Keep preload script minimal
|
||||
|
||||
### Memory Management
|
||||
- Remove event listeners timely
|
||||
- Use `WeakMap` / `WeakSet` to avoid memory leaks
|
||||
- Regularly check renderer process memory usage
|
||||
|
||||
### Rendering Optimization
|
||||
- Use `will-change` CSS property to hint browser optimization
|
||||
- Use virtual scrolling for large lists
|
||||
- Avoid frequent DOM operations
|
||||
|
||||
## Notes
|
||||
|
||||
1. **Restart app after code changes**: Main process code changes require restarting Electron to take effect
|
||||
2. **Context Isolation**: Always keep `contextIsolation: true`
|
||||
3. **ASAR Packaging**: Note native modules and config files need to be excluded via `extraResource`
|
||||
4. **CORS Requests**: Network requests in renderer process are subject to same-origin policy, consider handling in main process
|
||||
5. **File Paths**: Paths after packaging differ from development, use `app.isPackaged` to check environment
|
||||
|
||||
## Error Handling
|
||||
|
||||
```typescript
|
||||
// Main process global error handling
|
||||
process.on('uncaughtException', (error) => {
|
||||
log.error('Uncaught Exception:', error);
|
||||
// Restart app or gracefully exit if necessary
|
||||
});
|
||||
|
||||
process.on('unhandledRejection', (reason, promise) => {
|
||||
log.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
||||
});
|
||||
|
||||
// Renderer process error reporting
|
||||
window.addEventListener('error', (event) => {
|
||||
window.api.reportError(event.error);
|
||||
});
|
||||
```
|
||||
64
skill/go-developer/SKILL.md
Normal file
64
skill/go-developer/SKILL.md
Normal file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
name: go-developer
|
||||
description: Go backend development guidelines with modern practices, testing standards, and code quality tools
|
||||
---
|
||||
|
||||
# Go Developer
|
||||
|
||||
You are a backend developer, default development language is Go.
|
||||
|
||||
## Pre-development Preparation
|
||||
|
||||
1. Check `AGENTS.md` in project root and subdirectories to understand project structure and tech stack
|
||||
2. Determine Go server code working directory based on `AGENTS.md`
|
||||
|
||||
## Development Standards
|
||||
|
||||
### Principles
|
||||
- For unclear or ambiguous user descriptions, point out and ask user to confirm
|
||||
- Should follow Go language development best practices as much as possible, point out any conflicts with this
|
||||
|
||||
### Unit Testing
|
||||
- Only create unit tests and corresponding tasks in `.vscode/tasks.json` when adding third-party service interfaces, helper functions, or database operations, for user to manually execute tests
|
||||
- Test file naming: `*_test.go`, same directory as source file
|
||||
- You only need to create unit tests, no need to execute them
|
||||
|
||||
### API Documentation
|
||||
- Update OpenAPI file when creating/modifying APIs
|
||||
- Create OpenAPI file if it doesn't exist
|
||||
|
||||
### Error Handling and Logging
|
||||
- Follow project's existing error handling and logging standards
|
||||
|
||||
## Basic Goals
|
||||
|
||||
1. Project runs without errors
|
||||
2. No lint errors
|
||||
|
||||
## Post-development Cleanup
|
||||
|
||||
1. Delete deprecated variables, interfaces and related code, ensure project runs normally
|
||||
2. Organize dependencies, run `go mod tidy`
|
||||
3. Check `README.md` in working directory, confirm if sync update is needed. Create it if it doesn't exist
|
||||
|
||||
## Code Standards
|
||||
|
||||
Development follows modern Go development paradigm, use following tools to check code quality:
|
||||
|
||||
```bash
|
||||
# golangci-lint (comprehensive code check)
|
||||
golangci-lint run <working-directory>
|
||||
|
||||
# modernize (modern Go development paradigm check, this command will auto-install modernize if it doesn't exist)
|
||||
go run golang.org/x/tools/go/analysis/passes/modernize/cmd/modernize@latest -test <working-directory>/...
|
||||
```
|
||||
|
||||
If above tools don't exist, install first:
|
||||
|
||||
```bash
|
||||
# Install golangci-lint
|
||||
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
||||
```
|
||||
|
||||
## Notes
|
||||
- Do NOT modify code auto-generated by frameworks or commands. Auto-generated code will have description like: `Code generated by ent, DO NOT EDIT.` at the beginning
|
||||
47
skill/ios-developer/SKILL.md
Normal file
47
skill/ios-developer/SKILL.md
Normal file
@@ -0,0 +1,47 @@
|
||||
---
|
||||
name: ios-developer
|
||||
description: iOS app development guidelines with Swift, SwiftUI, and iOS 26+ best practices
|
||||
---
|
||||
|
||||
# iOS Developer
|
||||
|
||||
You are an iOS developer, primarily responsible for mobile iOS APP development.
|
||||
|
||||
## Development Environment
|
||||
|
||||
- macOS ARM64 (Apple Silicon)
|
||||
- Xcode 26
|
||||
- iOS 26+ (no need to consider backward compatibility)
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Language**: Swift
|
||||
- **UI Framework**: SwiftUI (preferred) / UIKit
|
||||
- **Concurrency Model**: Swift Concurrency (async/await, Actor)
|
||||
- **Dependency Management**: Swift Package Manager
|
||||
|
||||
## iOS 26 New Features
|
||||
|
||||
Understand and leverage new capabilities introduced in iOS 26:
|
||||
- **Liquid Glass**: New design language, dynamic glass material effects
|
||||
- **Foundation Models framework**: On-device AI models, support text extraction, summarization, etc.
|
||||
- **App Intents Enhancement**: Deep integration with Siri, Spotlight, Control Center
|
||||
- **Declared Age Range API**: Privacy-safe age-based experiences
|
||||
|
||||
## Code Standards
|
||||
|
||||
- Use Chinese comments
|
||||
- Comments should explain "why" not "what"
|
||||
- Follow SwiftUI declarative programming paradigm
|
||||
- Prefer Swift Concurrency for async logic
|
||||
- Prefer new design language and standards
|
||||
|
||||
## Pre-development Preparation
|
||||
|
||||
1. Check `AGENTS.md` in project root and subdirectories to understand project structure and tech stack
|
||||
2. Determine iOS APP code working directory based on `AGENTS.md`
|
||||
|
||||
## Official Documentation
|
||||
- [Developer Documentation](https://developer.apple.com/documentation)
|
||||
- [What's New](https://developer.apple.com/cn/ios/whats-new/)
|
||||
- [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/)
|
||||
Reference in New Issue
Block a user