opencode-skills-collection 1.0.186 → 1.0.187
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/bundled-skills/.antigravity-install-manifest.json +5 -1
- package/bundled-skills/3d-web-experience/SKILL.md +152 -37
- package/bundled-skills/agent-evaluation/SKILL.md +1088 -26
- package/bundled-skills/agent-memory-systems/SKILL.md +1037 -25
- package/bundled-skills/agent-tool-builder/SKILL.md +668 -16
- package/bundled-skills/ai-agents-architect/SKILL.md +271 -31
- package/bundled-skills/ai-product/SKILL.md +716 -26
- package/bundled-skills/ai-wrapper-product/SKILL.md +450 -44
- package/bundled-skills/algolia-search/SKILL.md +867 -15
- package/bundled-skills/autonomous-agents/SKILL.md +1033 -26
- package/bundled-skills/aws-serverless/SKILL.md +1046 -35
- package/bundled-skills/azure-functions/SKILL.md +1318 -19
- package/bundled-skills/browser-automation/SKILL.md +1065 -28
- package/bundled-skills/browser-extension-builder/SKILL.md +159 -32
- package/bundled-skills/bullmq-specialist/SKILL.md +347 -16
- package/bundled-skills/clerk-auth/SKILL.md +796 -15
- package/bundled-skills/computer-use-agents/SKILL.md +1870 -28
- package/bundled-skills/context-window-management/SKILL.md +271 -18
- package/bundled-skills/conversation-memory/SKILL.md +453 -24
- package/bundled-skills/crewai/SKILL.md +252 -46
- package/bundled-skills/discord-bot-architect/SKILL.md +1207 -34
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/email-systems/SKILL.md +646 -26
- package/bundled-skills/faf-expert/SKILL.md +221 -0
- package/bundled-skills/faf-wizard/SKILL.md +252 -0
- package/bundled-skills/file-uploads/SKILL.md +212 -11
- package/bundled-skills/firebase/SKILL.md +646 -16
- package/bundled-skills/gcp-cloud-run/SKILL.md +1117 -32
- package/bundled-skills/graphql/SKILL.md +1026 -27
- package/bundled-skills/hubspot-integration/SKILL.md +804 -19
- package/bundled-skills/idea-darwin/SKILL.md +120 -0
- package/bundled-skills/inngest/SKILL.md +431 -16
- package/bundled-skills/interactive-portfolio/SKILL.md +342 -44
- package/bundled-skills/langfuse/SKILL.md +296 -41
- package/bundled-skills/langgraph/SKILL.md +259 -50
- package/bundled-skills/micro-saas-launcher/SKILL.md +343 -44
- package/bundled-skills/neon-postgres/SKILL.md +572 -15
- package/bundled-skills/nextjs-supabase-auth/SKILL.md +269 -21
- package/bundled-skills/notion-template-business/SKILL.md +371 -44
- package/bundled-skills/personal-tool-builder/SKILL.md +537 -44
- package/bundled-skills/plaid-fintech/SKILL.md +825 -19
- package/bundled-skills/prompt-caching/SKILL.md +438 -25
- package/bundled-skills/rag-engineer/SKILL.md +271 -29
- package/bundled-skills/salesforce-development/SKILL.md +912 -19
- package/bundled-skills/satori/SKILL.md +54 -0
- package/bundled-skills/scroll-experience/SKILL.md +381 -44
- package/bundled-skills/segment-cdp/SKILL.md +817 -19
- package/bundled-skills/shopify-apps/SKILL.md +1475 -19
- package/bundled-skills/slack-bot-builder/SKILL.md +1162 -28
- package/bundled-skills/telegram-bot-builder/SKILL.md +152 -37
- package/bundled-skills/telegram-mini-app/SKILL.md +445 -44
- package/bundled-skills/trigger-dev/SKILL.md +916 -27
- package/bundled-skills/twilio-communications/SKILL.md +1310 -28
- package/bundled-skills/upstash-qstash/SKILL.md +898 -27
- package/bundled-skills/vercel-deployment/SKILL.md +637 -39
- package/bundled-skills/viral-generator-builder/SKILL.md +132 -37
- package/bundled-skills/voice-agents/SKILL.md +937 -27
- package/bundled-skills/voice-ai-development/SKILL.md +375 -46
- package/bundled-skills/workflow-automation/SKILL.md +982 -29
- package/bundled-skills/zapier-make-patterns/SKILL.md +772 -27
- package/package.json +1 -1
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: faf-expert
|
|
3
|
+
description: "Advanced .faf (Foundational AI-context Format) specialist. IANA-registered format, MCP server config, championship scoring, bi-directional sync."
|
|
4
|
+
category: coding
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: Wolfe-Jam/faf-skills
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-04-07"
|
|
10
|
+
author: wolfejam
|
|
11
|
+
tags: [faf, ai-context, project-management, mcp, iana]
|
|
12
|
+
tools: [claude, cursor, gemini, windsurf]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# FAF Expert - Advanced AI Context Architecture
|
|
16
|
+
|
|
17
|
+
**Master the IANA-registered format that makes AI understand your projects.**
|
|
18
|
+
|
|
19
|
+
Transform any codebase into an AI-intelligent project with persistent context that survives across sessions, tools, and AI platforms. Expert-level control over the foundational layer that powers modern AI development workflows.
|
|
20
|
+
|
|
21
|
+
## When to Use This Skill
|
|
22
|
+
|
|
23
|
+
Use FAF Expert when you need:
|
|
24
|
+
|
|
25
|
+
| Scenario | What FAF Expert Provides |
|
|
26
|
+
|----------|---------------------------|
|
|
27
|
+
| **Complex project setup** | Expert configuration of .faf files and MCP servers |
|
|
28
|
+
| **Championship scoring** | Achieve 85%+ AI-readiness scores for production projects |
|
|
29
|
+
| **Multi-AI workflows** | Universal context that works across Claude, Cursor, Gemini, Windsurf |
|
|
30
|
+
| **Legacy codebase revival** | Transform archaeology into AI-readable project DNA |
|
|
31
|
+
| **Team collaboration** | Standardized context format for consistent AI assistance |
|
|
32
|
+
| **Enterprise deployment** | Professional MCP server configuration and management |
|
|
33
|
+
|
|
34
|
+
## Real-World Examples
|
|
35
|
+
|
|
36
|
+
### Example 1: Legacy Enterprise Java System
|
|
37
|
+
```yaml
|
|
38
|
+
# Achieved: 92% Gold tier with FAF Expert
|
|
39
|
+
project:
|
|
40
|
+
name: enterprise-payment-api
|
|
41
|
+
goal: Mission-critical payment processing system
|
|
42
|
+
|
|
43
|
+
stack:
|
|
44
|
+
backend: java-spring
|
|
45
|
+
database: oracle
|
|
46
|
+
runtime: java-11
|
|
47
|
+
deployment: kubernetes
|
|
48
|
+
|
|
49
|
+
human_context:
|
|
50
|
+
where: AWS EKS production cluster
|
|
51
|
+
when: Legacy system from 2018, modernizing 2026
|
|
52
|
+
how: Spring Boot 2.7, Oracle 19c, Docker containerization
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Example 2: Modern React Dashboard
|
|
56
|
+
```yaml
|
|
57
|
+
# Achieved: 97% Gold tier performance
|
|
58
|
+
project:
|
|
59
|
+
name: analytics-dashboard
|
|
60
|
+
goal: Real-time analytics for SaaS platform
|
|
61
|
+
|
|
62
|
+
stack:
|
|
63
|
+
frontend: react-18
|
|
64
|
+
css_framework: tailwind
|
|
65
|
+
state: zustand
|
|
66
|
+
build: vite
|
|
67
|
+
testing: vitest
|
|
68
|
+
deployment: vercel
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Core Capabilities
|
|
72
|
+
|
|
73
|
+
### 🏆 Championship Scoring System
|
|
74
|
+
- **Gold Tier (95%+)**: Production-ready AI context
|
|
75
|
+
- **Silver Tier (85%+)**: Professional development standard
|
|
76
|
+
- **Bronze Tier (70%+)**: Solid foundation for AI assistance
|
|
77
|
+
|
|
78
|
+
### 🔧 MCP Server Configuration
|
|
79
|
+
Expert setup of claude-faf-mcp with 33 tools:
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"mcpServers": {
|
|
83
|
+
"faf": {
|
|
84
|
+
"command": "npx",
|
|
85
|
+
"args": ["-y", "claude-faf-mcp@latest"]
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 🔄 Bi-Directional Sync
|
|
92
|
+
Keep context synchronized across platforms:
|
|
93
|
+
- `.faf` ↔ `CLAUDE.md`
|
|
94
|
+
- `.faf` ↔ `.cursorrules`
|
|
95
|
+
- `.faf` ↔ `GEMINI.md`
|
|
96
|
+
- `.faf` ↔ `AGENTS.md`
|
|
97
|
+
|
|
98
|
+
### 📊 Mk4 Architecture Framework
|
|
99
|
+
33-slot IANA format for comprehensive project context:
|
|
100
|
+
- Project identity and goals
|
|
101
|
+
- Technical stack detection
|
|
102
|
+
- Human context (who/what/why/where/when/how)
|
|
103
|
+
- Architecture patterns
|
|
104
|
+
- Deployment configuration
|
|
105
|
+
|
|
106
|
+
## Getting Started
|
|
107
|
+
|
|
108
|
+
### Quick Installation
|
|
109
|
+
```bash
|
|
110
|
+
# Install FAF CLI
|
|
111
|
+
npm install -g faf-cli
|
|
112
|
+
|
|
113
|
+
# Initialize your project
|
|
114
|
+
faf init
|
|
115
|
+
|
|
116
|
+
# Score AI-readiness
|
|
117
|
+
faf score --details
|
|
118
|
+
|
|
119
|
+
# Set up MCP server
|
|
120
|
+
faf mcp install
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Expert Commands
|
|
124
|
+
```bash
|
|
125
|
+
# Advanced scoring with breakdown
|
|
126
|
+
faf score --championship --verbose
|
|
127
|
+
|
|
128
|
+
# Multi-platform sync
|
|
129
|
+
faf bi-sync --target all
|
|
130
|
+
|
|
131
|
+
# Validate format compliance
|
|
132
|
+
faf validate --strict
|
|
133
|
+
|
|
134
|
+
# Enhanced AI optimization
|
|
135
|
+
faf enhance --model claude --focus completeness
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Success Metrics
|
|
139
|
+
|
|
140
|
+
**Real Performance Data:**
|
|
141
|
+
- **52k+ downloads** across FAF ecosystem
|
|
142
|
+
- **800+ comprehensive tests** (CLI + MCP)
|
|
143
|
+
- **IANA-registered format** (application/vnd.faf+yaml)
|
|
144
|
+
- **153+ validated formats** supported
|
|
145
|
+
- **Championship-grade performance** (<50ms execution)
|
|
146
|
+
|
|
147
|
+
## Platform Compatibility
|
|
148
|
+
|
|
149
|
+
### Supported AI Tools
|
|
150
|
+
- ✅ **Claude Code** - Native MCP integration
|
|
151
|
+
- ✅ **Cursor** - .cursorrules sync
|
|
152
|
+
- ✅ **Gemini CLI** - GEMINI.md sync
|
|
153
|
+
- ✅ **Windsurf** - .windsurfrules support
|
|
154
|
+
- ✅ **Universal** - Works with any AI that reads YAML
|
|
155
|
+
|
|
156
|
+
### MCP Servers Available
|
|
157
|
+
- `claude-faf-mcp` - 33 tools, 391 tests
|
|
158
|
+
- `grok-faf-mcp` - xAI/Grok optimized
|
|
159
|
+
- `rust-faf-mcp` - Native performance (4.3MB binary)
|
|
160
|
+
- `gemini-faf-mcp` - Google Gemini integration
|
|
161
|
+
|
|
162
|
+
## Advanced Patterns
|
|
163
|
+
|
|
164
|
+
### Enterprise Configuration
|
|
165
|
+
```yaml
|
|
166
|
+
faf_version: "3.0"
|
|
167
|
+
project:
|
|
168
|
+
name: enterprise-platform
|
|
169
|
+
tier: production
|
|
170
|
+
|
|
171
|
+
human_context:
|
|
172
|
+
team_size: 50+
|
|
173
|
+
compliance: SOC2, HIPAA
|
|
174
|
+
deployment: multi-region
|
|
175
|
+
|
|
176
|
+
stack:
|
|
177
|
+
architecture: microservices
|
|
178
|
+
orchestration: kubernetes
|
|
179
|
+
monitoring: datadog
|
|
180
|
+
security: vault
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Legacy System Revival
|
|
184
|
+
```yaml
|
|
185
|
+
# Transform 10-year-old codebase to AI-ready
|
|
186
|
+
project:
|
|
187
|
+
archaeology: true
|
|
188
|
+
modernization_target: 2026
|
|
189
|
+
|
|
190
|
+
stack:
|
|
191
|
+
legacy: php-5.6
|
|
192
|
+
migration_path: laravel-11
|
|
193
|
+
database_upgrade: mysql-8
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Expert Resources
|
|
197
|
+
|
|
198
|
+
- **Documentation**: https://faf.one
|
|
199
|
+
- **MCP Registry**: Official Anthropic steward
|
|
200
|
+
- **CLI Reference**: `faf --help`
|
|
201
|
+
- **Community**: Discord server with 1000+ developers
|
|
202
|
+
- **Enterprise**: Professional support available
|
|
203
|
+
|
|
204
|
+
## When to Use faf-wizard Instead
|
|
205
|
+
|
|
206
|
+
Use `faf-wizard` for:
|
|
207
|
+
- ✅ Quick project setup
|
|
208
|
+
- ✅ One-click generation
|
|
209
|
+
- ✅ Beginner-friendly workflow
|
|
210
|
+
- ✅ Automated stack detection
|
|
211
|
+
|
|
212
|
+
Use `faf-expert` for:
|
|
213
|
+
- 🎯 Fine-tuned configuration
|
|
214
|
+
- 🎯 Championship scoring optimization
|
|
215
|
+
- 🎯 Multi-platform sync management
|
|
216
|
+
- 🎯 Enterprise deployment patterns
|
|
217
|
+
- 🎯 Advanced MCP server setup
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
*Master the format that makes AI understand your projects. FAF Expert - for when you need championship-grade AI context architecture.*
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: faf-wizard
|
|
3
|
+
description: "Done-for-you .faf generator. One-click AI context for any project - new, legacy, or famous. Auto-detects stack, scores readiness, works everywhere."
|
|
4
|
+
category: productivity
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: Wolfe-Jam/faf-skills
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-04-07"
|
|
10
|
+
author: wolfejam
|
|
11
|
+
tags: [faf, automation, project-setup, ai-context, productivity]
|
|
12
|
+
tools: [claude, cursor, gemini, windsurf, any-ai]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# FAF Wizard - One-Click AI Intelligence
|
|
16
|
+
|
|
17
|
+
**The pit crew for your projects.** Point it at any codebase and get scored, AI-ready context in 60 seconds.
|
|
18
|
+
|
|
19
|
+
Transform any project - new, legacy, famous OSS, or forgotten side projects - into an AI-intelligent workspace with persistent context that works across all AI tools.
|
|
20
|
+
|
|
21
|
+
## The Problem It Solves
|
|
22
|
+
|
|
23
|
+
**Even React.js scores 0% AI-readiness.** Famous repositories have no AI context.
|
|
24
|
+
|
|
25
|
+
| What Exists | What It Tells AI |
|
|
26
|
+
|-------------|------------------|
|
|
27
|
+
| README.md | "What this does" (for humans) |
|
|
28
|
+
| docs/ | "How to use it" (for humans) |
|
|
29
|
+
| **project.faf** | "How to help build this" (for AI) |
|
|
30
|
+
|
|
31
|
+
Documentation tells humans how to use your code. AI context tells AI how to help you build it. **They're completely different things.**
|
|
32
|
+
|
|
33
|
+
## Works on ANY Project
|
|
34
|
+
|
|
35
|
+
| Project Type | What FAF Wizard Does |
|
|
36
|
+
|-------------|----------------------|
|
|
37
|
+
| **Brand new** | Perfect AI context from line one |
|
|
38
|
+
| **Legacy nightmare** | AI finally understands the archaeology |
|
|
39
|
+
| **Famous OSS** | Even React doesn't have this |
|
|
40
|
+
| **Side projects** | Stop re-explaining every session |
|
|
41
|
+
| **Client handoffs** | Portable context for any AI tool |
|
|
42
|
+
| **Team projects** | Shared context that everyone can use |
|
|
43
|
+
|
|
44
|
+
## Real Success Stories
|
|
45
|
+
|
|
46
|
+
### Before/After: Legacy E-commerce Platform
|
|
47
|
+
```
|
|
48
|
+
Before: "This 50k-line PHP codebase from 2015..."
|
|
49
|
+
AI: "I don't understand this architecture"
|
|
50
|
+
|
|
51
|
+
After: 60 seconds with FAF Wizard
|
|
52
|
+
AI: "I see this is a Laravel-based e-commerce system with
|
|
53
|
+
payment processing, inventory management, and multi-tenant
|
|
54
|
+
architecture. Here's how I can help..."
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Before/After: Modern React App
|
|
58
|
+
```
|
|
59
|
+
Before: Every AI session starts with context explanation
|
|
60
|
+
Time lost: 5-10 minutes per session
|
|
61
|
+
|
|
62
|
+
After: project.faf exists
|
|
63
|
+
AI: Instant understanding, productive from message one
|
|
64
|
+
Time saved: 2+ hours per day
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## The 60-Second Workflow
|
|
68
|
+
|
|
69
|
+
### Step 1: Detection (10 seconds)
|
|
70
|
+
```bash
|
|
71
|
+
faf auto
|
|
72
|
+
# Scans manifest files, directory structure, dependencies
|
|
73
|
+
# Detects: React + TypeScript + Tailwind + Vercel
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Step 2: Generation (30 seconds)
|
|
77
|
+
```yaml
|
|
78
|
+
# Auto-generated project.faf
|
|
79
|
+
project:
|
|
80
|
+
name: my-saas-dashboard
|
|
81
|
+
goal: Customer analytics platform
|
|
82
|
+
|
|
83
|
+
stack:
|
|
84
|
+
frontend: react-18
|
|
85
|
+
css: tailwind
|
|
86
|
+
deployment: vercel
|
|
87
|
+
|
|
88
|
+
human_context:
|
|
89
|
+
who: Solo founder
|
|
90
|
+
what: SaaS analytics dashboard
|
|
91
|
+
why: Customer insights for small businesses
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Step 3: Scoring & Report (20 seconds)
|
|
95
|
+
```
|
|
96
|
+
✅ Generated: project.faf
|
|
97
|
+
🏆 AI-Readiness: 87% Bronze - Production ready
|
|
98
|
+
|
|
99
|
+
Filled: 9/11 active slots
|
|
100
|
+
Ignored: 22 slots (not applicable)
|
|
101
|
+
|
|
102
|
+
To reach Silver (95%):
|
|
103
|
+
+ Add API documentation (+5%)
|
|
104
|
+
+ Define deployment details (+3%)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Performance Data (Real Numbers)
|
|
108
|
+
|
|
109
|
+
**Analyzed 8,400+ Projects:**
|
|
110
|
+
- ✅ **99.2% detection accuracy** across 153+ formats
|
|
111
|
+
- ✅ **Average generation time**: 12.3 seconds
|
|
112
|
+
- ✅ **Bronze tier or higher**: 94% of projects
|
|
113
|
+
- ✅ **Zero manual configuration**: Works out of the box
|
|
114
|
+
|
|
115
|
+
### Format Support
|
|
116
|
+
Automatically detects and configures:
|
|
117
|
+
- **JavaScript**: React, Vue, Angular, Svelte, Next.js, Nuxt
|
|
118
|
+
- **Python**: Django, Flask, FastAPI, Jupyter, Poetry
|
|
119
|
+
- **TypeScript**: All JS frameworks + native TS projects
|
|
120
|
+
- **Rust**: Cargo projects, CLI tools, web servers
|
|
121
|
+
- **Go**: Modules, Docker, microservices
|
|
122
|
+
- **Java**: Maven, Gradle, Spring Boot
|
|
123
|
+
- **+147 more formats**
|
|
124
|
+
|
|
125
|
+
## Universal Compatibility
|
|
126
|
+
|
|
127
|
+
### Works With Every AI Tool
|
|
128
|
+
- ✅ **Claude Code** - Reads .faf natively
|
|
129
|
+
- ✅ **Cursor** - Auto-syncs to .cursorrules
|
|
130
|
+
- ✅ **Gemini CLI** - Converts to GEMINI.md
|
|
131
|
+
- ✅ **Windsurf** - Syncs to .windsurfrules
|
|
132
|
+
- ✅ **ChatGPT** - Readable YAML format
|
|
133
|
+
- ✅ **Any AI** - Universal format support
|
|
134
|
+
|
|
135
|
+
### Migration Support
|
|
136
|
+
Already have AI context files?
|
|
137
|
+
```bash
|
|
138
|
+
# Migrates existing context
|
|
139
|
+
faf migrate --from .cursorrules
|
|
140
|
+
faf migrate --from CLAUDE.md
|
|
141
|
+
faf migrate --from README.md
|
|
142
|
+
|
|
143
|
+
# One format, works everywhere
|
|
144
|
+
faf sync --target all
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Installation Options
|
|
148
|
+
|
|
149
|
+
### Option 1: CLI (Recommended)
|
|
150
|
+
```bash
|
|
151
|
+
npm install -g faf-cli
|
|
152
|
+
cd your-project
|
|
153
|
+
faf auto
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Option 2: MCP Server (Claude Code)
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"mcpServers": {
|
|
160
|
+
"faf": {
|
|
161
|
+
"command": "npx",
|
|
162
|
+
"args": ["-y", "claude-faf-mcp@latest"]
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Option 3: Browser Extension
|
|
169
|
+
Install from Chrome Web Store - works on any Git repository.
|
|
170
|
+
|
|
171
|
+
## Three-Phase Intelligence
|
|
172
|
+
|
|
173
|
+
### Phase 1: Stack Detection
|
|
174
|
+
- Scans `package.json`, `Cargo.toml`, `pyproject.toml`, etc.
|
|
175
|
+
- Analyzes directory structure and file patterns
|
|
176
|
+
- Identifies frameworks, deployment targets, testing setup
|
|
177
|
+
|
|
178
|
+
### Phase 2: Context Mining
|
|
179
|
+
- Extracts project description from README
|
|
180
|
+
- Identifies architecture patterns from code structure
|
|
181
|
+
- Pulls dependency information for AI context
|
|
182
|
+
|
|
183
|
+
### Phase 3: Optimization
|
|
184
|
+
- Generates focused 33-slot IANA format
|
|
185
|
+
- Validates against format specification
|
|
186
|
+
- Scores AI-readiness with improvement suggestions
|
|
187
|
+
|
|
188
|
+
## Success Metrics by Project Type
|
|
189
|
+
|
|
190
|
+
| Project Type | Avg Score | Time to Bronze | Detection Rate |
|
|
191
|
+
|-------------|-----------|----------------|----------------|
|
|
192
|
+
| **React/Vue** | 89% | Instant | 99.8% |
|
|
193
|
+
| **Python Django** | 91% | Instant | 99.5% |
|
|
194
|
+
| **Rust CLI** | 85% | Instant | 99.1% |
|
|
195
|
+
| **Legacy PHP** | 76% | 30 seconds | 94.2% |
|
|
196
|
+
| **Monorepo** | 82% | 45 seconds | 91.8% |
|
|
197
|
+
|
|
198
|
+
## When to Use faf-expert Instead
|
|
199
|
+
|
|
200
|
+
Use `faf-wizard` for:
|
|
201
|
+
- ✅ Quick project onboarding
|
|
202
|
+
- ✅ Automatic everything
|
|
203
|
+
- ✅ "Just make it work"
|
|
204
|
+
- ✅ Time-constrained scenarios
|
|
205
|
+
|
|
206
|
+
Use `faf-expert` for:
|
|
207
|
+
- 🎯 Fine-tuned championship scoring (95%+)
|
|
208
|
+
- 🎯 Complex MCP server configuration
|
|
209
|
+
- 🎯 Multi-platform sync management
|
|
210
|
+
- 🎯 Enterprise deployment patterns
|
|
211
|
+
|
|
212
|
+
## Validation & Security
|
|
213
|
+
|
|
214
|
+
**Enterprise-Grade Standards:**
|
|
215
|
+
- ✅ **800+ comprehensive tests** across CLI and MCP
|
|
216
|
+
- ✅ **No credentials ever stored** in .faf files
|
|
217
|
+
- ✅ **YAML format validation** prevents malformed files
|
|
218
|
+
- ✅ **IANA-registered format** (application/vnd.faf+yaml)
|
|
219
|
+
- ✅ **MIT licensed** - safe for commercial use
|
|
220
|
+
|
|
221
|
+
## Getting Started
|
|
222
|
+
|
|
223
|
+
### For Your Current Project
|
|
224
|
+
```bash
|
|
225
|
+
# One command, done forever
|
|
226
|
+
npx faf-cli auto
|
|
227
|
+
|
|
228
|
+
# Check the results
|
|
229
|
+
cat project.faf
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### For Any GitHub Repository
|
|
233
|
+
Install the browser extension and click "Generate FAF" on any repo.
|
|
234
|
+
|
|
235
|
+
### For Teams
|
|
236
|
+
```bash
|
|
237
|
+
# Set up team-wide MCP server
|
|
238
|
+
faf mcp install --team
|
|
239
|
+
faf sync --target all --watch
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Community & Support
|
|
243
|
+
|
|
244
|
+
- **Website**: https://faf.one
|
|
245
|
+
- **Chrome Extension**: 4.8★ rating, Google approved
|
|
246
|
+
- **Downloads**: 52k+ across ecosystem
|
|
247
|
+
- **Discord**: Active community of 1000+ developers
|
|
248
|
+
- **Documentation**: Comprehensive guides and examples
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
*Stop explaining your project every session. FAF Wizard - because AI should understand your project as well as you do.*
|
|
@@ -1,27 +1,228 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: file-uploads
|
|
3
|
-
description:
|
|
3
|
+
description: Expert at handling file uploads and cloud storage. Covers S3,
|
|
4
|
+
Cloudflare R2, presigned URLs, multipart uploads, and image optimization.
|
|
5
|
+
Knows how to handle large files without blocking.
|
|
4
6
|
risk: none
|
|
5
|
-
source:
|
|
6
|
-
date_added:
|
|
7
|
+
source: vibeship-spawner-skills (Apache 2.0)
|
|
8
|
+
date_added: 2026-02-27
|
|
7
9
|
---
|
|
8
10
|
|
|
9
11
|
# File Uploads & Storage
|
|
10
12
|
|
|
13
|
+
Expert at handling file uploads and cloud storage. Covers S3,
|
|
14
|
+
Cloudflare R2, presigned URLs, multipart uploads, and image
|
|
15
|
+
optimization. Knows how to handle large files without blocking.
|
|
16
|
+
|
|
11
17
|
**Role**: File Upload Specialist
|
|
12
18
|
|
|
13
19
|
Careful about security and performance. Never trusts file
|
|
14
20
|
extensions. Knows that large uploads need special handling.
|
|
15
21
|
Prefers presigned URLs over server proxying.
|
|
16
22
|
|
|
17
|
-
|
|
23
|
+
### Principles
|
|
24
|
+
|
|
25
|
+
- Never trust client file type claims
|
|
26
|
+
- Use presigned URLs for direct uploads
|
|
27
|
+
- Stream large files, never buffer
|
|
28
|
+
- Validate on upload, optimize after
|
|
29
|
+
|
|
30
|
+
## Sharp Edges
|
|
31
|
+
|
|
32
|
+
### Trusting client-provided file type
|
|
33
|
+
|
|
34
|
+
Severity: CRITICAL
|
|
35
|
+
|
|
36
|
+
Situation: User uploads malware.exe renamed to image.jpg. You check
|
|
37
|
+
extension, looks fine. Store it. Serve it. Another user
|
|
38
|
+
downloads and executes it.
|
|
39
|
+
|
|
40
|
+
Symptoms:
|
|
41
|
+
- Malware uploaded as images
|
|
42
|
+
- Wrong content-type served
|
|
43
|
+
|
|
44
|
+
Why this breaks:
|
|
45
|
+
File extensions and Content-Type headers can be faked.
|
|
46
|
+
Attackers rename executables to bypass filters.
|
|
47
|
+
|
|
48
|
+
Recommended fix:
|
|
49
|
+
|
|
50
|
+
# CHECK MAGIC BYTES
|
|
51
|
+
|
|
52
|
+
import { fileTypeFromBuffer } from "file-type";
|
|
53
|
+
|
|
54
|
+
async function validateImage(buffer: Buffer) {
|
|
55
|
+
const type = await fileTypeFromBuffer(buffer);
|
|
56
|
+
|
|
57
|
+
const allowedTypes = ["image/jpeg", "image/png", "image/webp"];
|
|
58
|
+
|
|
59
|
+
if (!type || !allowedTypes.includes(type.mime)) {
|
|
60
|
+
throw new Error("Invalid file type");
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return type;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// For streams
|
|
67
|
+
import { fileTypeFromStream } from "file-type";
|
|
68
|
+
const type = await fileTypeFromStream(readableStream);
|
|
69
|
+
|
|
70
|
+
### No upload size restrictions
|
|
71
|
+
|
|
72
|
+
Severity: HIGH
|
|
73
|
+
|
|
74
|
+
Situation: No file size limit. Attacker uploads 10GB file. Server runs
|
|
75
|
+
out of memory or disk. Denial of service. Or massive
|
|
76
|
+
storage bill.
|
|
77
|
+
|
|
78
|
+
Symptoms:
|
|
79
|
+
- Server crashes on large uploads
|
|
80
|
+
- Massive storage bills
|
|
81
|
+
- Memory exhaustion
|
|
82
|
+
|
|
83
|
+
Why this breaks:
|
|
84
|
+
Without limits, attackers can exhaust resources. Even
|
|
85
|
+
legitimate users might accidentally upload huge files.
|
|
86
|
+
|
|
87
|
+
Recommended fix:
|
|
88
|
+
|
|
89
|
+
# SET SIZE LIMITS
|
|
90
|
+
|
|
91
|
+
// Formidable
|
|
92
|
+
const form = formidable({
|
|
93
|
+
maxFileSize: 10 * 1024 * 1024, // 10MB
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
// Multer
|
|
97
|
+
const upload = multer({
|
|
98
|
+
limits: { fileSize: 10 * 1024 * 1024 },
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// Client-side early check
|
|
102
|
+
if (file.size > 10 * 1024 * 1024) {
|
|
103
|
+
alert("File too large (max 10MB)");
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Presigned URL with size limit
|
|
108
|
+
const command = new PutObjectCommand({
|
|
109
|
+
Bucket: BUCKET,
|
|
110
|
+
Key: key,
|
|
111
|
+
ContentLength: expectedSize, // Enforce size
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
### User-controlled filename allows path traversal
|
|
115
|
+
|
|
116
|
+
Severity: CRITICAL
|
|
117
|
+
|
|
118
|
+
Situation: User uploads file named "../../../etc/passwd". You use
|
|
119
|
+
filename directly. File saved outside upload directory.
|
|
120
|
+
System files overwritten.
|
|
121
|
+
|
|
122
|
+
Symptoms:
|
|
123
|
+
- Files outside upload directory
|
|
124
|
+
- System file access
|
|
125
|
+
|
|
126
|
+
Why this breaks:
|
|
127
|
+
User input should never be used directly in file paths.
|
|
128
|
+
Path traversal sequences can escape intended directories.
|
|
18
129
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
130
|
+
Recommended fix:
|
|
131
|
+
|
|
132
|
+
# SANITIZE FILENAMES
|
|
133
|
+
|
|
134
|
+
import path from "path";
|
|
135
|
+
import crypto from "crypto";
|
|
136
|
+
|
|
137
|
+
function safeFilename(userFilename: string): string {
|
|
138
|
+
// Extract just the base name
|
|
139
|
+
const base = path.basename(userFilename);
|
|
140
|
+
|
|
141
|
+
// Remove any remaining path chars
|
|
142
|
+
const sanitized = base.replace(/[^a-zA-Z0-9.-]/g, "_");
|
|
143
|
+
|
|
144
|
+
// Or better: generate new name entirely
|
|
145
|
+
const ext = path.extname(userFilename).toLowerCase();
|
|
146
|
+
const allowed = [".jpg", ".png", ".pdf"];
|
|
147
|
+
|
|
148
|
+
if (!allowed.includes(ext)) {
|
|
149
|
+
throw new Error("Invalid extension");
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return crypto.randomUUID() + ext;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Never do this
|
|
156
|
+
const path = "uploads/" + req.body.filename; // DANGER!
|
|
157
|
+
|
|
158
|
+
// Do this
|
|
159
|
+
const path = "uploads/" + safeFilename(req.body.filename);
|
|
160
|
+
|
|
161
|
+
### Presigned URL shared or cached incorrectly
|
|
162
|
+
|
|
163
|
+
Severity: MEDIUM
|
|
164
|
+
|
|
165
|
+
Situation: Presigned URL for private file returned in API response.
|
|
166
|
+
Response cached by CDN. Anyone with cached URL can access
|
|
167
|
+
private file for hours.
|
|
168
|
+
|
|
169
|
+
Symptoms:
|
|
170
|
+
- Private files accessible via cached URLs
|
|
171
|
+
- Access after expiry
|
|
172
|
+
|
|
173
|
+
Why this breaks:
|
|
174
|
+
Presigned URLs grant temporary access. If cached or shared,
|
|
175
|
+
access extends beyond intended scope.
|
|
176
|
+
|
|
177
|
+
Recommended fix:
|
|
178
|
+
|
|
179
|
+
# CONTROL PRESIGNED URL DISTRIBUTION
|
|
180
|
+
|
|
181
|
+
// Short expiry for sensitive files
|
|
182
|
+
const url = await getSignedUrl(s3, command, {
|
|
183
|
+
expiresIn: 300, // 5 minutes
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
// No-cache headers for presigned URL responses
|
|
187
|
+
return Response.json({ url }, {
|
|
188
|
+
headers: {
|
|
189
|
+
"Cache-Control": "no-store, max-age=0",
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
// Or use CloudFront signed URLs for more control
|
|
194
|
+
|
|
195
|
+
## Validation Checks
|
|
196
|
+
|
|
197
|
+
### Only checking file extension
|
|
198
|
+
|
|
199
|
+
Severity: CRITICAL
|
|
200
|
+
|
|
201
|
+
Message: Check magic bytes, not just extension
|
|
202
|
+
|
|
203
|
+
Fix action: Use file-type library to verify actual type
|
|
204
|
+
|
|
205
|
+
### User filename used directly in path
|
|
206
|
+
|
|
207
|
+
Severity: CRITICAL
|
|
208
|
+
|
|
209
|
+
Message: Sanitize filenames to prevent path traversal
|
|
210
|
+
|
|
211
|
+
Fix action: Use path.basename() and generate safe name
|
|
212
|
+
|
|
213
|
+
## Collaboration
|
|
214
|
+
|
|
215
|
+
### Delegation Triggers
|
|
216
|
+
|
|
217
|
+
- image optimization CDN -> performance-optimization (Image delivery)
|
|
218
|
+
- storing file metadata -> postgres-wizard (Database schema)
|
|
25
219
|
|
|
26
220
|
## When to Use
|
|
27
|
-
|
|
221
|
+
|
|
222
|
+
- User mentions or implies: file upload
|
|
223
|
+
- User mentions or implies: S3
|
|
224
|
+
- User mentions or implies: R2
|
|
225
|
+
- User mentions or implies: presigned URL
|
|
226
|
+
- User mentions or implies: multipart
|
|
227
|
+
- User mentions or implies: image upload
|
|
228
|
+
- User mentions or implies: cloud storage
|