Skip to content

Commit 1662abe

Browse files
ericyangpanclaude
andcommitted
chore: update configuration and development tooling
- Add .prompts to .gitignore for local prompt management - Refactor CLAUDE.md with clearer guidance on i18n, design system, and coding principles - Add manifest-creator skill for automated manifest generation - Add export-vendors.mjs script for vendor data export - Enhance URL validation script with improved error handling and reporting 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent df5fbd8 commit 1662abe

File tree

6 files changed

+1029
-141
lines changed

6 files changed

+1029
-141
lines changed
Lines changed: 276 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,276 @@
1+
---
2+
name: manifest-creator
3+
description: Create manifest files for AI coding tools by extracting information from their websites
4+
---
5+
6+
# Manifest Creator Skill
7+
8+
Automatically create manifest JSON files for AI coding tools, models, providers, and vendors by intelligently extracting information from their websites.
9+
10+
## Overview
11+
12+
This skill automates the creation of manifest files in the `manifests/` directory. It uses web scraping and AI to extract structured information from product websites, following the project's JSON schema requirements.
13+
14+
## Usage
15+
16+
To create a new manifest, provide:
17+
18+
1. **Manifest type**: cli, extension, ide, model, provider, or vendor
19+
2. **Product name**: The filename to create (without .json extension)
20+
3. **Website URL**: The official website URL (becomes the `websiteUrl` field)
21+
22+
**Example:**
23+
24+
```
25+
Create a manifest for:
26+
- Type: cli
27+
- Name: copilot-cli
28+
- URL: https://github.com/github/copilot-cli
29+
```
30+
31+
## How It Works
32+
33+
The skill follows this workflow:
34+
35+
### 1. Schema Validation
36+
37+
First, it identifies the correct JSON schema based on the manifest type:
38+
39+
- `cli``manifests/schemas/clis.schema.json`
40+
- `extension``manifests/schemas/extensions.schema.json`
41+
- `ide``manifests/schemas/ides.schema.json`
42+
- `model``manifests/schemas/models.schema.json`
43+
- `provider``manifests/schemas/providers.schema.json`
44+
- `vendor``manifests/schemas/vendors.schema.json`
45+
46+
### 2. Web Content Extraction
47+
48+
The skill uses the WebFetch tool to:
49+
50+
- Visit the provided website URL
51+
- Extract text content and structure
52+
- Identify key information (description, version, pricing, etc.)
53+
- Follow relevant links to find additional details
54+
55+
**Important Rules:**
56+
57+
- The `description` field MUST be summarized from actual website content
58+
- Never generate descriptions - always extract from the source
59+
- If information isn't found on the main page, the skill will explore subpages
60+
61+
### 3. Platform URL Discovery
62+
63+
For models and providers, the skill will search for third-party platform URLs:
64+
65+
- **HuggingFace**: Search for model/org pages on huggingface.co
66+
- **Artificial Analysis**: Search for performance benchmarks
67+
- **OpenRouter**: Search for model availability
68+
69+
Each platform URL is discovered using the WebSearch tool.
70+
71+
### 4. Manifest Generation
72+
73+
The skill creates a complete JSON manifest file with:
74+
75+
- All required fields from the schema
76+
- Properly formatted URLs (HTTPS only)
77+
- Validated structure
78+
- Appropriate null values for unavailable fields
79+
80+
### 5. File Output
81+
82+
The manifest is written to: `manifests/<type>/<name>.json`
83+
84+
### 6. Validation
85+
86+
After creating the manifest file, the skill **MUST** run validation:
87+
88+
```bash
89+
node scripts/validate-manifests.mjs
90+
```
91+
92+
This validation script will:
93+
- Check schema compliance
94+
- Verify all required fields are present
95+
- Validate field formats (URLs, enums, etc.)
96+
- Ensure filename matches the `id` field
97+
- Report any errors with detailed messages
98+
99+
**If validation fails**, the errors must be fixed before completing the task.
100+
101+
## Supported Manifest Types
102+
103+
### CLI Tools
104+
105+
**Schema**: Extends app.schema.json (product → vendor-entity → entity)
106+
107+
**Key Fields**:
108+
- Basic: id, name, description, websiteUrl, docsUrl
109+
- Vendor: vendor
110+
- Product: latestVersion, githubUrl, license, pricing, resourceUrls, communityUrls, relatedProducts
111+
- App: platforms (macOS, Windows, Linux with install/launch commands)
112+
113+
**Example**: `manifests/clis/claude-code.json`
114+
115+
### Extensions
116+
117+
**Schema**: Extends product.schema.json + supportedIdes
118+
119+
**Key Fields**:
120+
- Same as CLI (except platforms)
121+
- Additional: supportedIdes (array with ideId, marketplaceUrl, installUri)
122+
123+
**Example**: `manifests/extensions/claude-code.json`
124+
125+
### IDEs
126+
127+
**Schema**: Extends app.schema.json (same as CLI)
128+
129+
**Key Fields**:
130+
- Identical to CLI structure
131+
- Focuses on IDE-specific features
132+
133+
**Example**: `manifests/ides/cursor.json`
134+
135+
### Models
136+
137+
**Schema**: Extends vendor-entity.schema.json
138+
139+
**Key Fields**:
140+
- Basic: id, name, description, websiteUrl, docsUrl, vendor
141+
- Model-specific: size, totalContext, maxOutput, tokenPricing (input, output, cache)
142+
- platformUrls: huggingface, artificialAnalysis, openrouter
143+
144+
**Example**: `manifests/models/claude-sonnet-4-5.json`
145+
146+
### Providers
147+
148+
**Schema**: Extends vendor-entity.schema.json
149+
150+
**Key Fields**:
151+
- Basic: id, name, description, websiteUrl, docsUrl, vendor
152+
- Provider-specific: type (foundation-model-provider | model-service-provider), applyKeyUrl
153+
- platformUrls, communityUrls
154+
155+
**Example**: `manifests/providers/openrouter.json`
156+
157+
### Vendors
158+
159+
**Schema**: Extends entity.schema.json
160+
161+
**Key Fields**:
162+
- Basic: id, name, description, websiteUrl, docsUrl
163+
- Additional: communityUrls
164+
165+
**Example**: `manifests/vendors/anthropic.json`
166+
167+
## Field Extraction Guidelines
168+
169+
### Description Field
170+
171+
**CRITICAL**: Never generate descriptions. Always extract from website content.
172+
173+
- Must be concise (max 200 characters)
174+
- Summarize the product's key features
175+
- Use content from the homepage or about page
176+
- Keep original tone and terminology
177+
178+
### URLs
179+
180+
All URLs must:
181+
- Use HTTPS protocol
182+
- Be valid and accessible
183+
- Match schema patterns (e.g., GitHub URLs must start with `https://github.com/`)
184+
185+
### Pricing
186+
187+
For products (CLI, IDE, Extension):
188+
- Extract actual pricing tiers
189+
- Include: name, value (number or null), currency, per (billing period), category
190+
- Use null for custom/enterprise pricing
191+
192+
For models:
193+
- Extract token pricing ($/M tokens)
194+
- Include: input, output, cache (null if not applicable)
195+
196+
### Platform URLs
197+
198+
Use WebSearch to find:
199+
- HuggingFace: Model or organization page
200+
- Artificial Analysis: Benchmark/comparison page
201+
- OpenRouter: Model availability page
202+
203+
Set to null if not found.
204+
205+
### Community URLs
206+
207+
Search for official social media presence:
208+
- LinkedIn (company page)
209+
- Twitter/X
210+
- GitHub (organization)
211+
- YouTube (channel)
212+
- Discord (server invite)
213+
- Reddit (official subreddit)
214+
- Blog (official blog)
215+
216+
Set to null if not found.
217+
218+
## Workflow Example
219+
220+
**User Request:**
221+
```
222+
Create a manifest for the Cursor IDE
223+
URL: https://cursor.sh
224+
```
225+
226+
**Skill Actions:**
227+
228+
1. Identify schema: `manifests/schemas/ides.schema.json`
229+
2. Fetch main page: Extract name, description, key features
230+
3. Search for documentation: Find docs URL
231+
4. Search for GitHub: Find repository URL
232+
5. Extract version: Check for latest release
233+
6. Find pricing: Navigate to pricing page
234+
7. Gather community URLs: Search for social media links
235+
8. Generate manifest: Create `manifests/ides/cursor.json`
236+
9. **Run validation**: `node scripts/validate-manifests.mjs`
237+
10. Fix any validation errors if found
238+
239+
## File Structure
240+
241+
```
242+
.claude/skills/manifest-creator/
243+
├── SKILL.md # This documentation
244+
└── scripts/
245+
└── create.mjs # Main creation script
246+
```
247+
248+
## Important Notes
249+
250+
1. **Never Auto-Generate Content**: Always extract from actual website sources
251+
2. **Verify URLs**: All URLs should be tested for accessibility
252+
3. **Follow Schema**: Strictly adhere to the JSON schema for each type
253+
4. **Use Null Appropriately**: Set unavailable fields to null (not empty string)
254+
5. **ID Format**: Always use lowercase-with-hyphens (e.g., `claude-code`, not `Claude Code`)
255+
6. **Verified Field**: Default to `false` unless explicitly verified by maintainers
256+
7. **ALWAYS Validate**: Run `node scripts/validate-manifests.mjs` after creating any manifest file
257+
258+
## Error Handling
259+
260+
If the skill cannot find required information:
261+
- Ask the user for manual input
262+
- Suggest alternative URLs to search
263+
- Provide partial manifest for user completion
264+
- Log missing fields clearly
265+
266+
## Contributing
267+
268+
When improving this skill:
269+
- Update schema mappings if new manifest types are added
270+
- Enhance web scraping patterns for better extraction
271+
- Add more platform URL sources
272+
- Improve description summarization
273+
274+
## License
275+
276+
This skill is part of the AI Coding Stack project and follows the project's license.

0 commit comments

Comments
 (0)