Token导航 LogoToken导航TokenDH.com
研究检索敏感数据github未标认证来源可访问许可证需确认审计提醒

freshworks-publish-skillfreshworks 发布技巧

Agent Skill

freshworks-publish-skill 用于记录任务执行中的错误、用户纠正、经验和能力缺口,适合在 Codex、Claude、Cursor、Gemini CLI 中希望让 Agent 持续沉淀问题、修正和最佳实践时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

517

周安装

22

GitHub Stars

3

下载量

181
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:freshworks-publish-skill(freshworks 发布技巧)
来源仓库:https://github.com/freshworks-developers/marketplace
仓库路径:skills/freshworks-publish-skill
安装命令:
npx skills add https://github.com/freshworks-developers/marketplace --skill freshworks-publish-skill
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/freshworks-developers/marketplace --skill freshworks-publish-skill

简介

freshworks-publish-skill 提供打包、覆盖率检查和提交指南,确保 Marketplace 发布合规。

  • 适合在 Codex、Claude、Cursor、Gemini CLI 中准备应用提审前的质量校验工作。
  • 支持自动检测错误、验证包内容,并加载最新市场指南作为参考依据。
  • 安装前请核实 Gen Agent Trust Hub 认证状态,留意插座与依赖警告信息。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

Freshworks App Publish Skill

Automated workflow for packing and publishing Freshworks Platform 3.0 apps to the marketplace.

Usage

/publish pack              # Validate and pack app
/publish submit            # Pack and guide submission
/publish                   # Full workflow (validate → pack → submit)

Execution Mode: AUTONOMOUS

When invoked, IMMEDIATELY execute without asking permission:

  1. Parse command arguments ($ARGUMENTS)
  2. Detect app directory (search for manifest.json)
  3. Execute the requested operation
  4. Report results

DO NOT:

  • Ask for confirmation before running commands
  • Explain steps before executing
  • Provide manual instructions instead of running commands

DO:

  • Run Shell commands directly
  • Batch operations in parallel where possible
  • Handle errors automatically
  • Report after completion

Operations

1. Pack (/publish pack)

Purpose: Validate app and create distributable package for marketplace submission.

Workflow:

# Step 1: Find app directory
find . -name "manifest.json" -not -path "*/node_modules/*"

# If multiple apps found, ask user to choose
# If one app found, use that directory
# If none found, error and exit

# Step 2: Pre-pack validation (run in parallel)
cd <app-directory>
fdk validate                    # Must pass before packing
node --version                  # Verify Node.js >= 18.0.0
fdk version                     # Verify FDK >= 9.6.0

# Step 3: Check test coverage (if server/ exists)
# Coverage must be >= 80% for marketplace submission
# If coverage/ folder exists, check coverage/coverage-summary.json
# If coverage < 80%, warn user but continue

# Step 4: Pack the app
fdk pack

# Step 5: Verify package created
ls -lh dist/*.zip              # Show package file size and name

Success Criteria:

  • fdk validate passes with no fatal errors
  • ✅ Test coverage >= 80% (for serverless apps)
  • dist/*.zip file created
  • ✅ Package size reasonable (< 50MB recommended)

Output:

✓ App directory: /path/to/my-app
✓ Validation passed
✓ Test coverage: 87.5% (Statements: 85%, Branches: 90%, Functions: 85%, Lines: 90%)
✓ Package created: dist/my-app-1.0.0.zip (2.3 MB)

📦 Ready for submission!

2. Submit (/publish submit)

Purpose: Guide user through marketplace submission process after packing.

Workflow:

# Step 1: Ensure app is packed
cd <app-directory>
ls dist/*.zip || fdk pack       # Pack if not already packed

# Step 2: Extract submission details from manifest
cat manifest.json               # Read app metadata

# Step 3: Generate submission checklist

Submission Checklist Generated:

📋 **Marketplace Submission Checklist**

✅ **Pre-Submission:**
- [ ] App validated: `fdk validate` passes
- [ ] Test coverage >= 80%
- [ ] App package created: dist/<app-name>.zip
- [ ] All iparams documented
- [ ] OAuth credentials tested (if applicable)
- [ ] App tested in target product(s)

📦 **Package Information:**
- App Name: [from manifest]
- Version: [from manifest]
- Platform: [from manifest]
- Products: [from manifest modules]
- Package: dist/<filename>.zip

🌐 **Submission Steps:**

1. **Access Developer Portal:**
   - Log in to your Freshworks product account
   - Navigate to Admin > Apps > Build it yourself
   - Or: Neo Admin Center > My Accounts > /developer

2. **Create New App Submission:**
   - Click "Create New App"
   - Select app type:
     • Freshworks App (public marketplace, revenue-generating)
     • Custom App (private, customer-specific, no review)
     • External App (listed in marketplace, installed from external URL)

3. **Upload Package:**
   - Upload: dist/<filename>.zip
   - Fill in app details:
     • App name
     • Description (use Freddy AI assistance)
     • Categories (new framework)
     • Screenshots (min 3, recommended 5)
     • Support email
     • Privacy policy URL
     • Terms of service URL

4. **Configure Pricing (Freshworks Apps only):**
   - Free or Paid
   - If paid: Set pricing tiers
   - Revenue share: 20% to Freshworks

5. **Submit for Review:**
   - Click "Submit for Review"
   - Review timeline: 5-10 business days
   - Custom apps: Published immediately (no review)

📧 **Post-Submission:**
- Monitor email for review updates
- Respond to review feedback within 7 days
- Update app version if changes requested

🔗 **Resources:**
- Developer Portal: https://developers.freshworks.com/
- Submission Guidelines: https://developers.freshworks.com/docs/guides/submission-guidelines/
- App Review Guidelines: https://developers.freshworks.com/docs/guides/submission-guidelines/app-validation/

3. Full Workflow (/publish)

Purpose: Complete end-to-end workflow from validation to submission guidance.

Workflow:

# Step 1: Find and validate app
cd <app-directory>
fdk validate

# Step 2: Check coverage (if serverless)
# Parse coverage/coverage-summary.json if exists

# Step 3: Pack app
fdk pack

# Step 4: Generate submission checklist
# (same as /publish submit)

Pre-Pack Validation Checklist

CRITICAL: These must pass before packing:

Mandatory Files

  • manifest.json - Platform 3.0 structure
  • config/iparams.json - Even if empty {}
  • app/styles/images/icon.svg - Required for frontend apps
  • README.md - App documentation

Manifest Validation

  • "platform-version": "3.0"
  • "modules" structure (not "product")
  • "engines" block with Node.js and FDK versions
  • All request templates declared in modules.common.requests
  • All SMI functions declared in modules.common.functions
  • At least one product module declared

Code Quality (Lint Errors)

  • No async functions without await
  • No unused variables or parameters
  • No unreachable code
  • Function complexity <= 7
  • No eval() or alert() calls
  • No var declarations (use const/let)

Test Coverage (Serverless Apps)

  • Statements >= 80%
  • Branches >= 80%
  • Functions >= 80%
  • Lines >= 80%

Configuration

  • All iparams have display_name and type
  • OAuth config has integrations wrapper (if applicable)
  • Request templates use FQDN hosts (no paths)
  • Request templates use <%= variable %> syntax

Error Handling

ErrorAction
No manifest.json foundSearch workspace, ask user to specify directory
Multiple apps foundAsk user which app to pack
fdk validate failsShow errors, attempt autofix, re-validate
Coverage < 80%Warn user, suggest running tests, allow override
fdk pack failsShow error, check Node.js/FDK versions
Package size > 50MBWarn about large package, suggest optimization
Missing icon.svgError - cannot pack frontend app without icon

Package Output

After successful pack:

dist/
└── <app-name>-<version>.zip    # Marketplace package

Package contents:
- app/ (if frontend)
- server/ (if serverless)
- config/
- manifest.json
- README.md
- package.json (if dependencies)

Package excludes:

  • node_modules/
  • .coverage/
  • .fdk/
  • .git/
  • dist/ (previous builds)
  • Test files and fixtures
  • Development files (.env,.vscode, etc.)

Coverage Validation

For serverless apps, check coverage before packing:

# Check if coverage exists
ls coverage/coverage-summary.json

# Parse coverage
cat coverage/coverage-summary.json | grep "total"

# Expected format:
{
  "total": {
    "lines": { "pct": 90.5 },
    "statements": { "pct": 88.2 },
    "functions": { "pct": 85.7 },
    "branches": { "pct": 82.3 }
  }
}

If coverage < 80%:

  • Warn user
  • Suggest: fdk run to regenerate coverage
  • Suggest: Write more tests in server/test/
  • Allow pack with --skip-coverage flag (NOT recommended for marketplace)

Marketplace Submission Types

1. Freshworks App (Public Marketplace)

Characteristics:

  • Public listing in Freshworks Marketplace
  • Subject to review (5-10 business days)
  • Can be free or paid (revenue share: 20% to Freshworks)
  • Requires comprehensive documentation
  • Must pass all validation checks

Best for:

  • Apps with broad appeal
  • Revenue-generating apps
  • Apps solving common use cases

2. Custom App (Private)

Characteristics:

  • Private to specific customer
  • No review required
  • Published immediately upon submission
  • Can test multiple versions in production
  • No revenue generation

Best for:

  • Customer-specific requirements
  • Internal tools
  • Rapid deployment needs

3. External App (Third-Party)

Characteristics:

  • Listed in Freshworks Marketplace
  • Installed from external URL (not Freshworks-hosted)
  • Subject to review
  • Uses module-specific methods

Best for:

  • Third-party integrations
  • Apps hosted externally
  • Cross-platform solutions

Post-Pack Next Steps

After successful pack, inform user:

✅ App packed successfully!

📦 **Package Details:**
- File: dist/<app-name>-<version>.zip
- Size: <size> MB
- Platform: 3.0
- Products: [list from modules]

🚀 **Next Steps:**

1. **Access Developer Portal:**
   - Log in to your Freshworks product account
   - Navigate to: Admin > Apps > Build it yourself
   - Or: Neo Admin Center > /developer

2. **Choose App Type:**
   - Freshworks App: Public marketplace (review required)
   - Custom App: Private, immediate publish (no review)
   - External App: Listed but externally hosted

3. **Upload Package:**
   - Click "Create New App"
   - Upload: dist/<app-name>-<version>.zip
   - Fill in app details with Freddy AI assistance

4. **Required Information:**
   - App name and description
   - Categories (new framework)
   - Screenshots (min 3, recommended 5)
   - Support email
   - Privacy policy URL (if collecting user data)
   - Terms of service URL

5. **Submit:**
   - Review all details
   - Click "Submit for Review" (Freshworks/External apps)
   - Or "Publish" (Custom apps - immediate)

📧 **After Submission:**
- Monitor email for review updates
- Review timeline: 5-10 business days (Freshworks/External apps)
- Custom apps: Available immediately
- Respond to feedback within 7 days

🔗 **Resources:**
- Developer Portal: https://developers.freshworks.com/
- Submission Guidelines: https://developers.freshworks.com/docs/guides/submission-guidelines/

Pre-Pack Validation Automation

CRITICAL: Always validate before packing

# Run validation
cd <app-directory>
fdk validate

# Parse output
# If fatal errors exist:
#   - Attempt autofix (up to 2 iterations)
#   - Re-run fdk validate
#   - If still failing, report errors and stop

# If lint errors exist:
#   - Attempt autofix (common patterns)
#   - Re-run fdk validate
#   - If still failing, report errors and stop

# If warnings only:
#   - Report warnings
#   - Proceed with pack

# If validation passes:
#   - Proceed with pack

Common Pre-Pack Fixes

1. Missing icon.svg

# Check if frontend app
ls app/index.html

# If frontend app exists, check for icon
ls app/styles/images/icon.svg || echo "MISSING - MUST CREATE"

# Create placeholder icon if missing
mkdir -p app/styles/images/
# Create SVG icon (use template or generate)

2. Coverage < 80%

# Run tests to regenerate coverage
fdk run
# Press Ctrl+C after app starts
# Check coverage summary

3. Async without await

# Scan server/server.js for async functions without await
# Add await to async operations OR remove async keyword

4. Unused parameters

# Scan for unused parameters in event handlers
# Prefix with _ or remove if not needed

Template Variables

Use Maestro template variables for context:

  • {{CWD}} - Current working directory
  • {{DATE}} - Current date
  • {{AGENT_PATH}} - Project path
  • {{GIT_BRANCH}} - Current git branch

Example: /publish pack in app at {{CWD}}

Success Output

✓ App directory: /path/to/my-app
✓ Platform version: 3.0
✓ Validation: PASSED
✓ Test coverage: 87.5%
  - Statements: 85%
  - Branches: 90%
  - Functions: 85%
  - Lines: 90%
✓ Package created: dist/my-app-1.0.0.zip (2.3 MB)

📦 Package ready for submission!

🚀 Next: Upload to Developer Portal
   → Admin > Apps > Build it yourself
   → Or: Neo Admin Center > /developer

Error Messages

Validation Failed

❌ Validation failed with 3 errors:

1. Missing required file: app/styles/images/icon.svg
   Fix: Create icon.svg in app/styles/images/

2. Async function without await (server/server.js:45)
   Fix: Add await expression or remove async keyword

3. Unused parameter 'args' (server/server.js:23)
   Fix: Remove parameter or prefix with _

Run: fdk validate --fix
Or: /fix to auto-fix all errors

Coverage Too Low

⚠️  Test coverage below 80%:
   - Statements: 65%
   - Branches: 70%
   - Functions: 60%
   - Lines: 68%

Marketplace requires >= 80% coverage.

Fix:
1. Run: fdk run (generates coverage)
2. Add tests in server/test/
3. Re-run validation

Or pack anyway: fdk pack --skip-coverage (NOT recommended for marketplace)

Package Too Large

⚠️  Package size: 52.3 MB (recommended: < 50 MB)

Large packages may cause:
- Slow installation for users
- Longer review times
- Potential rejection

Optimize:
- Remove unused dependencies
- Compress images
- Remove development files
- Check .gitignore patterns

Detailed Workflows

Workflow 1: Pack Only

# 1. Find app
find . -name "manifest.json" -not -path "*/node_modules/*"

# 2. Validate
cd <app-directory>
fdk validate

# 3. Check coverage (if serverless)
if [ -d "server" ]; then
  if [ -f "coverage/coverage-summary.json" ]; then
    # Parse and check >= 80%
    cat coverage/coverage-summary.json
  else
    echo "⚠️  No coverage found. Run 'fdk run' first."
  fi
fi

# 4. Pack
fdk pack

# 5. Report
ls -lh dist/*.zip

Workflow 2: Full Publish Workflow

# 1. Find app
find . -name "manifest.json" -not -path "*/node_modules/*"

# 2. Read manifest for metadata
cat manifest.json | grep -E "(platform-version|version|modules)"

# 3. Validate
fdk validate

# 4. Check coverage
# (same as Workflow 1)

# 5. Pack
fdk pack

# 6. Generate submission checklist
# (output detailed checklist with app-specific details)

Workflow 3: Submit Guidance

# 1. Ensure packed
ls dist/*.zip || fdk pack

# 2. Extract app details
APP_NAME=$(cat manifest.json | grep '"name"' | head -1)
APP_VERSION=$(cat manifest.json | grep '"version"' | head -1)
PLATFORM=$(cat manifest.json | grep '"platform-version"')

# 3. Generate personalized submission guide
# (output checklist with extracted details)

App Type Decision Tree

Help user choose app type:

What type of app are you submitting?

1. **Freshworks App** (Public Marketplace)
   ✅ Choose if:
   - App solves common use cases
   - Want to reach all Freshworks customers
   - Want to generate revenue (optional)
   - Ready for 5-10 day review process

2. **Custom App** (Private)
   ✅ Choose if:
   - Built for specific customer
   - Need immediate deployment
   - No public listing needed
   - Customer-specific requirements

3. **External App** (Listed, External Install)
   ✅ Choose if:
   - App hosted on your infrastructure
   - Want marketplace listing
   - Install happens via external URL
   - Third-party integration

Validation Requirements

Platform 3.0 Requirements

  • "platform-version": "3.0"
  • "modules" structure (not "product")
  • "engines" block present
  • ✅ Request templates use FQDN hosts
  • ✅ OAuth uses integrations wrapper
  • ✅ Crayons components (not plain HTML)

Lint Requirements

  • ✅ No async without await
  • ✅ No unused variables
  • ✅ No unreachable code
  • ✅ Function complexity <= 7
  • ✅ No eval() or alert()
  • ✅ No var (use const/let)

Coverage Requirements (Serverless)

  • ✅ Statements >= 80%
  • ✅ Branches >= 80%
  • ✅ Functions >= 80%
  • ✅ Lines >= 80%

Documentation Requirements

  • ✅ README.md with setup instructions
  • ✅ All iparams documented
  • ✅ OAuth setup guide (if applicable)
  • ✅ Screenshots prepared (min 3)

Advanced Options

Skip Coverage (NOT recommended)

fdk pack --skip-coverage

Warning: Marketplace will reject apps with < 80% coverage.

Skip Lint (Deprecated)

fdk pack --skip-lint

Warning: This option is deprecated and will be removed.

Pack Specific Directory

fdk pack --app-dir /path/to/app

Troubleshooting

Pack Fails with "Validation Error"

# Run validation first
fdk validate

# Fix all errors
# Re-run pack
fdk pack

Pack Fails with "Coverage Error"

# Regenerate coverage
fdk run
# Wait for app to start, then Ctrl+C
# Check coverage summary
# Re-run pack
fdk pack

Package Not Created

# Check for dist/ folder
ls -la dist/

# If exists, check permissions
chmod 755 dist/

# Re-run pack
fdk pack

Node.js Version Mismatch

# Check current Node.js version
node --version

# Check manifest requirement
cat manifest.json | grep "node"

# Update manifest or switch Node.js version
# Re-run pack
fdk pack

Post-Pack Verification

After pack succeeds, verify package:

# 1. Check package exists
ls -lh dist/*.zip

# 2. Check package contents (optional)
unzip -l dist/*.zip

# 3. Verify key files included
unzip -l dist/*.zip | grep -E "(manifest.json|server.js|index.html|icon.svg)"

# 4. Check package size
du -h dist/*.zip

Integration with Other Skills

This skill works with:

  • app-dev - Generate and fix apps before packing
  • fdk-setup - Ensure FDK is installed and up-to-date
  • Validation - Fix errors before packing

Typical workflow:

  1. Use app-dev to create app
  2. Use /fix to resolve validation errors
  3. Use /publish pack to create package
  4. Use /publish submit for submission guidance

References

For detailed submission guidelines:

Summary

This skill provides:

  • Automated packing - Validate and pack in one command
  • Coverage checking - Ensure >= 80% before submission
  • Submission guidance - Step-by-step checklist
  • Error handling - Automatic detection and fix suggestions
  • Package verification - Confirm package contents and size

When uncertain about submission requirements, load the relevant reference or use web search for latest marketplace guidelines.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude

32.43%
按下载量换算59

Codex

32.06%
按下载量换算58

Cursor

17.52%
按下载量换算32

Gemini CLI

9.26%
按下载量换算17

安全审计

Gen Agent Trust Hub

通过

Socket

可疑

Snyk

通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills