Chrome Web Store guidelines and requirements covering Developer Program Policies, single purpose requirement, permission justifications, privacy policy, branding, screenshots, common rejection reasons, and appeal process. Essential for successful store submission.
Provides Chrome Web Store submission guidelines to prevent rejections. Use when building or submitting extensions to ensure compliance with single-purpose rules, permission justifications, privacy policies, and store listing requirements.
/plugin marketplace add francanete/fran-marketplace/plugin install chrome-extension-expert@fran-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
| Category | Key Requirements |
|---|---|
| Content | No malware, spam, hate, or illegal content |
| Data | Minimal collection, clear disclosure |
| Functionality | Works as described, no deception |
| Monetization | Clear about paid features |
| User Experience | No unwanted behavior |
Your extension should do ONE thing well, not bundle unrelated features.
ACCEPTABLE:
NOT ACCEPTABLE:
## Single Purpose Statement
[Extension Name] helps users [primary action] by [method].
Example:
"TabMaster helps users organize their browser tabs by providing
grouping, search, and session management features."
All features should relate to the core purpose:
| Feature | Core: Tab Management | Justified? |
|---|---|---|
| Tab grouping | Direct | ✅ |
| Tab search | Direct | ✅ |
| Session save | Related | ✅ |
| Tab statistics | Enhancement | ✅ |
| Weather widget | Unrelated | ❌ |
| Ad blocking | Unrelated | ❌ |
Justifications required for:
tabswebNavigationhistorybookmarkstopSitesbrowsingData<all_urls> or broad host permissionsStructure:
Permission: [permission name]
1. What we use it for:
[Specific feature that needs this permission]
2. Why it's necessary:
[Why the feature can't work without it]
3. What we don't do:
[Reassurance about data not collected/shared]
Example - tabs permission:
Permission: tabs
1. What we use it for:
- Display tab titles in our tab search feature
- Show favicon in the tab list
- Enable "Switch to Tab" functionality
2. Why it's necessary:
Our core tab management features require reading tab metadata
to provide search and organization capabilities.
3. What we don't do:
- We do not track browsing history
- We do not transmit URLs to external servers
- Tab data is only stored locally on the user's device
activeTab:
Required to read the current page content when the user clicks
the extension icon. Only activated on user gesture, no passive
access to browsing data.
storage:
Used to save user preferences and extension state locally.
No data is transmitted to external servers.
alarms:
Required for scheduling periodic background tasks like
syncing saved data and checking for updates.
Privacy policy is required if your extension:
# Privacy Policy for [Extension Name]
Last updated: [Date]
## What Data We Collect
- [List all data collected]
- [Include data from permissions]
- [Include any analytics]
## How We Use Data
- [Purpose for each data type]
- [Who processes the data]
## Data Storage
- Where data is stored (local/cloud)
- How long data is retained
- Encryption methods used
## Data Sharing
- Third parties who receive data
- Purpose of sharing
- Or: "We do not share data with third parties"
## User Rights
- How to access your data
- How to delete your data
- How to opt out
## Changes to Policy
- How users will be notified
## Contact
- Email for privacy concerns
Short description (shown in search):
Full description:
[One-line value proposition]
Key Features:
• [Feature 1]
• [Feature 2]
• [Feature 3]
How to Use:
1. [Step 1]
2. [Step 2]
3. [Step 3]
[Additional details about the extension]
Support: [contact info or support URL]
Requirements:
Best Practices:
| Image | Size | Required |
|---|---|---|
| Small tile | 440x280 | Yes (for featuring) |
| Marquee | 1400x560 | No (for featuring) |
| Size | Usage | Required |
|---|---|---|
| 16x16 | Toolbar | Yes |
| 32x32 | Windows | Recommended |
| 48x48 | Extensions page | Yes |
| 128x128 | Store listing | Yes |
Error: "Does not comply with the single purpose policy"
Fix:
Error: "Missing or inadequate privacy policy"
Fix:
Error: "Requesting permissions that exceed functionality"
Fix:
Error: "Does not work as described"
Fix:
Error: "Missing permission justification"
Fix:
Error: "Extension does not meet quality standards"
Fix:
Error: "Extension engages in deceptive practices"
Fix:
# Create ZIP file (not .crx)
zip -r extension.zip \
manifest.json \
background.js \
content.js \
popup/ \
icons/ \
# ... all files except:
# - .git/
# - node_modules/
# - source files (if bundled)
| Submission Type | Typical Time |
|---|---|
| New extension | 1-3 business days |
| Update | 1-2 business days |
| After rejection | Varies |
{
"version": "1.2.3"
// Major.Minor.Patch
// Major: Breaking changes, significant features
// Minor: New features, improvements
// Patch: Bug fixes
}
Version X.Y.Z - [Date]
New Features:
• [Feature description]
Improvements:
• [Improvement description]
Bug Fixes:
• [Bug fix description]
Thank you for your feedback!
Subject: Appeal for [Extension Name] - [Submission ID]
Dear Chrome Web Store Team,
I am writing to appeal the rejection of [Extension Name].
Rejection Reason: [Quote their reason]
My Response:
[Explain why you believe this is incorrect, OR]
[Explain changes you've made to address the issue]
Evidence:
[Screenshots, code snippets, or documentation]
I believe this addresses the concern because:
[Clear reasoning]
Please let me know if you need additional information.
Best regards,
[Your name]
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.