Agent skill
project-types
Project type definitions with type-specific questions, patterns, and stacks. Use when: determining project architecture, asking type-specific questions. Referenced by: idea-validation, brainstorming, /ship command.
Install this agent skill to your Project
npx add-skill https://github.com/timequity/vibe-coder/tree/main/skills/project-types
SKILL.md
Project Types Reference
Quick lookup for type-specific questions, patterns, and recommended stacks.
Type Index
| Type | Complexity | Default PRD | Recommended Stack |
|---|---|---|---|
| CLI Tool | Low | Minimal | Rust (clap) |
| REST API | Low-Medium | Minimal/Standard | Rust (axum) |
| Web App | Medium | Standard | Rust + HTMX |
| Telegram Bot | Medium | Standard | Rust (teloxide) |
| Discord Bot | Medium | Standard | Rust (serenity) |
| GraphQL API | Medium | Standard | Rust (async-graphql) |
| Mobile App | High | Full | Flutter/React Native |
| Data Pipeline | High | Full | Python/Rust |
| Browser Extension | Medium | Standard | TypeScript |
CLI Tool
Discovery Questions
- Execution model: One-shot or interactive?
- Arguments: Positional args, flags, or subcommands?
- Output: Text, JSON, or files?
- Config: Config file needed?
Patterns
- Use
clapfor argument parsing - Support
--jsonfor machine output - Use
anyhowfor error handling - Exit codes: 0 success, 1 error
Stack
[dependencies]
clap = { version = "4", features = ["derive"] }
anyhow = "1"
serde_json = "1" # if JSON output
Example Structure
src/
main.rs # Entry point, arg parsing
lib.rs # Core logic
commands/ # Subcommand handlers (if needed)
REST API
Discovery Questions
- Audience: Internal, public, or partner?
- Auth: None, API Key, JWT, OAuth2?
- Rate limiting: Needed?
- Versioning: /v1/, header, or none?
Patterns
- OpenAPI spec first (consider)
- JSON responses with consistent error format
- Health endpoint required:
GET /health - Structured logging (tracing)
Stack
[dependencies]
axum = "0.8"
tokio = { version = "1", features = ["full"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tracing = "0.1"
tracing-subscriber = "0.3"
Example Structure
src/
main.rs # Server setup
lib.rs # Router, handlers
routes/ # Route modules
models/ # Data structures
middleware/ # Auth, logging
Web App (SaaS)
Discovery Questions
- Auth: Email/password, OAuth, magic link, or none?
- Realtime: WebSocket, SSE, or none?
- Multi-tenant: Yes/no?
- Admin panel: Needed?
Patterns
- HTMX for interactivity (minimal JS)
- Server-rendered templates (Askama)
- Progressive enhancement
- CSRF protection on forms
Stack
[dependencies]
axum = "0.8"
tokio = { version = "1", features = ["full"] }
askama = "0.12"
askama_axum = "0.4"
tower-http = { version = "0.6", features = ["fs"] }
Example Structure
src/
main.rs
lib.rs
routes/
templates/
base.html
pages/
components/
static/
css/
js/ (minimal)
Telegram Bot
Discovery Questions
- Interaction: Commands, dialog, inline, or buttons?
- State: Stateless, SQLite, or PostgreSQL?
- Integrations: LLM, payments, external APIs?
- Delivery: Webhooks or polling?
Patterns
- Start with polling (simpler), switch to webhooks for prod
- FSM (finite state machine) for dialogs
- Inline keyboards for navigation
- Rate limit user requests
Stack
[dependencies]
teloxide = { version = "0.13", features = ["macros"] }
tokio = { version = "1", features = ["full"] }
sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite"] } # if DB
serde = { version = "1", features = ["derive"] }
Example Structure
src/
main.rs # Bot setup
lib.rs # Command handlers
handlers/
commands.rs # /start, /help, etc
callbacks.rs # Button callbacks
state.rs # FSM states (if dialog)
db.rs # Database (if needed)
Key Considerations
- Store bot token in env var:
TELOXIDE_TOKEN - Handle
/startand/helpcommands - Graceful shutdown for webhook mode
Discord Bot
Discovery Questions
- Type: Slash commands, prefix commands, or both?
- Scope: Single server or multi-server?
- Features: Moderation, games, integrations?
- State: In-memory, SQLite, or PostgreSQL?
Patterns
- Use slash commands (modern)
- Respect rate limits
- Handle guild joins/leaves
- Shard for 2500+ servers
Stack
[dependencies]
serenity = { version = "0.12", features = ["framework", "standard_framework"] }
tokio = { version = "1", features = ["full"] }
sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite"] } # if DB
Mobile App
Discovery Questions
- Platforms: iOS, Android, or both?
- Offline: Offline-first or online-only?
- Push: Push notifications needed?
- Native: Camera, GPS, sensors?
Patterns
- Consider Flutter for cross-platform
- Local storage with Hive/SQLite
- Deep linking support
- App store submission requirements
Stack Options
- Flutter: Dart, single codebase
- React Native: JS/TS, web dev friendly
- Native: Swift/Kotlin for full control
Key Considerations
- Design for both platforms (different UX conventions)
- Handle offline gracefully
- Consider app size
- Test on real devices
Data Pipeline
Discovery Questions
- Trigger: Schedule, event, or manual?
- Volume: How much data? How often?
- Sources: APIs, databases, files?
- Output: Database, files, API?
Patterns
- Idempotent operations
- Checkpointing for resumability
- Structured logging
- Alerting on failures
Stack
[dependencies]
tokio = { version = "1", features = ["full"] }
reqwest = { version = "0.12", features = ["json"] }
sqlx = { version = "0.8", features = ["runtime-tokio", "postgres"] }
serde = { version = "1", features = ["derive"] }
chrono = "0.4"
Browser Extension
Discovery Questions
- Browser: Chrome, Firefox, or both?
- Permissions: What site access?
- UI: Popup, sidebar, or page action?
- Storage: Local or sync?
Patterns
- Manifest V3 for Chrome
- Content scripts for page interaction
- Background service workers
- Careful with permissions (minimal)
Stack
- TypeScript for type safety
- Vite for bundling
- Chrome Extension APIs
Example Structure
src/
background.ts # Service worker
content.ts # Content script
popup/ # Popup UI
options/ # Options page
manifest.json
Quick Selection Guide
Need CLI tool?
→ Rust + clap
Need API?
→ REST: Rust + axum
→ GraphQL: Rust + async-graphql
Need Web UI?
→ Simple: Rust + HTMX
→ Complex SPA: Consider separate frontend
Need Bot?
→ Telegram: Rust + teloxide
→ Discord: Rust + serenity
Need Mobile?
→ Cross-platform: Flutter
→ Web skills: React Native
Need Data Processing?
→ Batch: Rust or Python
→ Stream: Rust + Tokio
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
mvp-help
Help and documentation for Idea to MVP plugin. Use when: user asks about building MVPs, vibe coding, or available commands. Triggers: "help", "what can you do", "mvp help", "how to build".
verification-gate
Hidden quality gate that runs before showing "Done!" to user - ensures all tests pass, build succeeds, and requirements met before claiming completion
brainstorming
Refine ideas into detailed designs through Socratic dialogue. Use when: user has rough idea, needs to clarify requirements, explore approaches. Triggers: "brainstorm", "discuss idea", "I'm thinking about", "what if", "help me think through", "explore options", "/brainstorm".
subagent-creator
Guide for creating effective subagents (custom agents). Use when users want to create a new subagent that can be dispatched via Task tool for autonomous work. Covers frontmatter fields (name, description, tools, model, permissionMode, skills), prompt design, and when to use subagents vs skills.
backend-rust
Modern Rust backend with Axum, SQLx, tokio + CI/CD automation. Use when: building Rust APIs, high-performance services, or needing build/test/lint/audit automation. Triggers: "axum", "rust backend", "rust api", "sqlx", "tokio", "cargo build", "cargo test", "clippy", "rustfmt", "cargo-audit", "cross-compile", "rust ci", "release build", "rust security", "shuttle", "actix".
test-driven-development
Write failing test first, then minimal code to pass. Red-Green-Refactor cycle. Use when: implementing features, fixing bugs, refactoring code. Triggers: "implement", "add feature", "fix bug", "tdd", "test first", "write tests", "test-driven".
Didn't find tool you were looking for?