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.
When & Why to Use This Skill
This Claude skill serves as a comprehensive architectural blueprint and decision-making framework for software development. It provides curated project type definitions, essential discovery questions, and optimized technology stacks (primarily focused on high-performance Rust and modern web ecosystems). By offering standardized patterns and directory structures, it helps developers and architects move from initial concept to technical specification with precision and consistency.
Use Cases
- Initial Project Scoping: Use the discovery questions to systematically gather requirements for new CLI tools, REST APIs, or mobile applications.
- Tech Stack Standardization: Reference the recommended libraries and frameworks (e.g., Axum for APIs, Teloxide for bots) to ensure high-performance and maintainable codebases.
- Architecture Validation: Compare proposed system designs against established patterns for data pipelines, browser extensions, and multi-tenant SaaS applications.
- Rapid Prototyping: Utilize the 'Example Structure' and 'Quick Selection Guide' to quickly scaffold new projects with industry-standard directory layouts.
| name | project-types |
|---|---|
| description | | |
| Use when | determining project architecture, asking type-specific questions. |
| Referenced by | idea-validation, brainstorming, /ship command. |
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