cokit-cli 1.0.1 → 1.0.3
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/AGENTS.md +103 -0
- package/README.FLOW.md +237 -0
- package/README.md +153 -94
- package/agents/brainstormer.agent.md +71 -0
- package/agents/code-reviewer.agent.md +128 -0
- package/agents/database-admin.agent.md +91 -0
- package/agents/debugger.agent.md +128 -0
- package/agents/docs-manager.agent.md +121 -0
- package/agents/fullstack-developer.agent.md +96 -0
- package/agents/git-manager.agent.md +392 -0
- package/agents/mcp-manager.agent.md +93 -0
- package/agents/planner.agent.md +94 -0
- package/agents/project-manager.agent.md +124 -0
- package/agents/researcher.agent.md +32 -0
- package/agents/scout-external.agent.md +141 -0
- package/agents/scout.agent.md +107 -0
- package/agents/tester.agent.md +106 -0
- package/agents/ui-ux-designer.agent.md +225 -0
- package/collections/ck-core.collection.yml +30 -0
- package/collections/ck-development-rules.collection.yml +18 -0
- package/collections/ck-documentation.collection.yml +18 -0
- package/collections/ck-git-workflow.collection.yml +18 -0
- package/collections/ck-orchestration.collection.yml +22 -0
- package/collections/ck-ui-design.collection.yml +18 -0
- package/docs/README.md +85 -0
- package/docs/copilot-processing-flow.md +128 -0
- package/instructions/ck-backend.instructions.md +48 -0
- package/instructions/ck-development.instructions.md +40 -0
- package/instructions/ck-frontend-design-pro.instructions.md +58 -0
- package/instructions/ck-frontend.instructions.md +44 -0
- package/instructions/ck-google-adk-python.instructions.md +242 -0
- package/instructions/ck-research.instructions.md +167 -0
- package/instructions/ck-testing.instructions.md +36 -0
- package/package.json +9 -2
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-01-restructure-folders.md +183 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-02-convert-agents.md +206 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-03-convert-commands-to-prompts.md +284 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-04-convert-skills-to-instructions.md +349 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-05-create-collections.md +320 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-06-update-cli-build-scripts.md +450 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-07-update-documentation.md +407 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/plan.md +136 -0
- package/prompts/ck-ask.prompt.md +57 -0
- package/prompts/ck-bootstrap-auto-fast.prompt.md +108 -0
- package/prompts/ck-bootstrap-auto-parallel.prompt.md +66 -0
- package/prompts/ck-bootstrap-auto.prompt.md +114 -0
- package/prompts/ck-bootstrap.prompt.md +136 -0
- package/prompts/ck-brainstorm.prompt.md +68 -0
- package/prompts/ck-ck-help.prompt.md +114 -0
- package/prompts/ck-code-auto.prompt.md +171 -0
- package/prompts/ck-code-no-test.prompt.md +159 -0
- package/prompts/ck-code-parallel.prompt.md +56 -0
- package/prompts/ck-code.prompt.md +177 -0
- package/prompts/ck-coding-level.prompt.md +54 -0
- package/prompts/ck-cook-auto-fast.prompt.md +26 -0
- package/prompts/ck-cook-auto-parallel.prompt.md +49 -0
- package/prompts/ck-cook-auto.prompt.md +15 -0
- package/prompts/ck-cook.prompt.md +96 -0
- package/prompts/ck-debug.prompt.md +14 -0
- package/prompts/ck-design-3d.prompt.md +84 -0
- package/prompts/ck-design-describe.prompt.md +24 -0
- package/prompts/ck-design-fast.prompt.md +32 -0
- package/prompts/ck-design-good.prompt.md +36 -0
- package/prompts/ck-design-screenshot.prompt.md +35 -0
- package/prompts/ck-design-video.prompt.md +35 -0
- package/prompts/ck-docs-init.prompt.md +27 -0
- package/prompts/ck-docs-summarize.prompt.md +23 -0
- package/prompts/ck-docs-update.prompt.md +36 -0
- package/prompts/ck-fix-ci.prompt.md +18 -0
- package/prompts/ck-fix-fast.prompt.md +18 -0
- package/prompts/ck-fix-hard.prompt.md +36 -0
- package/prompts/ck-fix-logs.prompt.md +27 -0
- package/prompts/ck-fix-parallel.prompt.md +54 -0
- package/prompts/ck-fix-test.prompt.md +19 -0
- package/prompts/ck-fix-types.prompt.md +11 -0
- package/prompts/ck-fix-ui.prompt.md +49 -0
- package/prompts/ck-fix.prompt.md +44 -0
- package/prompts/ck-git-cm.prompt.md +8 -0
- package/prompts/ck-git-cp.prompt.md +7 -0
- package/prompts/ck-git-merge.prompt.md +41 -0
- package/prompts/ck-git-pr.prompt.md +49 -0
- package/prompts/ck-kanban.prompt.md +77 -0
- package/prompts/ck-plan-archive.prompt.md +58 -0
- package/prompts/ck-plan-ci.prompt.md +34 -0
- package/prompts/ck-plan-cro.prompt.md +66 -0
- package/prompts/ck-plan-fast.prompt.md +67 -0
- package/prompts/ck-plan-hard.prompt.md +89 -0
- package/prompts/ck-plan-parallel.prompt.md +126 -0
- package/prompts/ck-plan-two.prompt.md +43 -0
- package/prompts/ck-plan-validate.prompt.md +118 -0
- package/prompts/ck-plan.prompt.md +29 -1
- package/prompts/ck-preview.prompt.md +65 -0
- package/prompts/ck-review-codebase.prompt.md +44 -0
- package/prompts/ck-scout-ext.prompt.md +35 -0
- package/prompts/ck-scout.prompt.md +25 -0
- package/prompts/ck-skill-add.prompt.md +36 -0
- package/prompts/ck-skill-create.prompt.md +29 -0
- package/prompts/ck-skill-fix-logs.prompt.md +22 -0
- package/prompts/ck-skill-optimize-auto.prompt.md +25 -0
- package/prompts/ck-skill-optimize.prompt.md +34 -0
- package/prompts/ck-skill-plan.prompt.md +46 -0
- package/prompts/ck-test-ui.prompt.md +92 -0
- package/prompts/ck-test.prompt.md +10 -0
- package/prompts/ck-use-mcp.prompt.md +27 -0
- package/prompts/ck-watzup.prompt.md +11 -0
- package/prompts/ck-worktree.prompt.md +127 -0
- package/rules/README.agents.md +55 -0
- package/rules/README.collections.md +78 -0
- package/rules/README.copilot-instructions.md +66 -0
- package/rules/README.instructions.md +73 -0
- package/rules/README.md +39 -0
- package/rules/README.prompts.md +76 -0
- package/rules/README.skills.md +71 -0
- package/skills/ck-ai-artist/SKILL.md +73 -0
- package/skills/ck-ai-artist/references/advanced-techniques.md +184 -0
- package/skills/ck-ai-artist/references/domain-code.md +66 -0
- package/skills/ck-ai-artist/references/domain-data.md +72 -0
- package/skills/ck-ai-artist/references/domain-marketing.md +66 -0
- package/skills/ck-ai-artist/references/domain-patterns.md +33 -0
- package/skills/ck-ai-artist/references/domain-writing.md +68 -0
- package/skills/ck-ai-artist/references/image-prompting.md +141 -0
- package/skills/ck-ai-artist/references/llm-prompting.md +165 -0
- package/skills/ck-ai-artist/references/nano-banana.md +59 -0
- package/skills/ck-ai-artist/references/reasoning-techniques.md +201 -0
- package/skills/ck-backend-development/SKILL.md +93 -0
- package/skills/ck-backend-development/references/backend-api-design.md +495 -0
- package/skills/ck-backend-development/references/backend-architecture.md +454 -0
- package/skills/ck-backend-development/references/backend-authentication.md +338 -0
- package/skills/ck-backend-development/references/backend-code-quality.md +659 -0
- package/skills/ck-backend-development/references/backend-debugging.md +904 -0
- package/skills/ck-backend-development/references/backend-devops.md +494 -0
- package/skills/ck-backend-development/references/backend-mindset.md +387 -0
- package/skills/ck-backend-development/references/backend-performance.md +397 -0
- package/skills/ck-backend-development/references/backend-security.md +290 -0
- package/skills/ck-backend-development/references/backend-technologies.md +256 -0
- package/skills/ck-backend-development/references/backend-testing.md +429 -0
- package/skills/ck-better-auth/SKILL.md +202 -0
- package/skills/ck-better-auth/references/advanced-features.md +553 -0
- package/skills/ck-better-auth/references/database-integration.md +577 -0
- package/skills/ck-better-auth/references/email-password-auth.md +416 -0
- package/skills/ck-better-auth/references/oauth-providers.md +430 -0
- package/skills/ck-better-auth/scripts/.coverage +0 -0
- package/skills/ck-better-auth/scripts/better_auth_init.py +521 -0
- package/skills/ck-better-auth/scripts/requirements.txt +15 -0
- package/skills/ck-better-auth/scripts/tests/.coverage +0 -0
- package/skills/ck-better-auth/scripts/tests/test_better_auth_init.py +421 -0
- package/skills/ck-chrome-devtools/SKILL.md +470 -0
- package/skills/ck-chrome-devtools/references/cdp-domains.md +694 -0
- package/skills/ck-chrome-devtools/references/performance-guide.md +940 -0
- package/skills/ck-chrome-devtools/references/puppeteer-reference.md +953 -0
- package/skills/ck-chrome-devtools/scripts/README.md +272 -0
- package/skills/ck-chrome-devtools/scripts/__tests__/selector.test.js +210 -0
- package/skills/ck-chrome-devtools/scripts/aria-snapshot.js +362 -0
- package/skills/ck-chrome-devtools/scripts/click.js +83 -0
- package/skills/ck-chrome-devtools/scripts/console.js +79 -0
- package/skills/ck-chrome-devtools/scripts/evaluate.js +53 -0
- package/skills/ck-chrome-devtools/scripts/fill.js +76 -0
- package/skills/ck-chrome-devtools/scripts/inject-auth.js +229 -0
- package/skills/ck-chrome-devtools/scripts/install-deps.sh +181 -0
- package/skills/ck-chrome-devtools/scripts/install.sh +83 -0
- package/skills/ck-chrome-devtools/scripts/lib/browser.js +318 -0
- package/skills/ck-chrome-devtools/scripts/lib/selector.js +178 -0
- package/skills/ck-chrome-devtools/scripts/navigate.js +54 -0
- package/skills/ck-chrome-devtools/scripts/network.js +106 -0
- package/skills/ck-chrome-devtools/scripts/package-lock.json +1589 -0
- package/skills/ck-chrome-devtools/scripts/package.json +16 -0
- package/skills/ck-chrome-devtools/scripts/performance.js +149 -0
- package/skills/ck-chrome-devtools/scripts/screenshot.js +198 -0
- package/skills/ck-chrome-devtools/scripts/select-ref.js +131 -0
- package/skills/ck-chrome-devtools/scripts/snapshot.js +135 -0
- package/skills/ck-code-review/SKILL.md +110 -53
- package/skills/ck-code-review/references/code-review-reception.md +182 -49
- package/skills/ck-code-review/references/requesting-code-review.md +105 -0
- package/skills/ck-code-review/references/verification-before-completion.md +111 -58
- package/skills/ck-databases/SKILL.md +231 -0
- package/skills/ck-databases/references/mongodb-aggregation.md +447 -0
- package/skills/ck-databases/references/mongodb-atlas.md +465 -0
- package/skills/ck-databases/references/mongodb-crud.md +408 -0
- package/skills/ck-databases/references/mongodb-indexing.md +442 -0
- package/skills/ck-databases/references/postgresql-administration.md +594 -0
- package/skills/ck-databases/references/postgresql-performance.md +527 -0
- package/skills/ck-databases/references/postgresql-psql-cli.md +467 -0
- package/skills/ck-databases/references/postgresql-queries.md +475 -0
- package/skills/ck-databases/scripts/.coverage +0 -0
- package/skills/ck-databases/scripts/db_backup.py +502 -0
- package/skills/ck-databases/scripts/db_migrate.py +425 -0
- package/skills/ck-databases/scripts/db_performance_check.py +456 -0
- package/skills/ck-databases/scripts/requirements.txt +20 -0
- package/skills/ck-databases/scripts/tests/coverage-db.json +1 -0
- package/skills/ck-databases/scripts/tests/requirements.txt +4 -0
- package/skills/ck-databases/scripts/tests/test_db_backup.py +340 -0
- package/skills/ck-databases/scripts/tests/test_db_migrate.py +277 -0
- package/skills/ck-databases/scripts/tests/test_db_performance_check.py +370 -0
- package/skills/ck-debugging/SKILL.md +55 -43
- package/skills/ck-debugging/references/defense-in-depth.md +124 -0
- package/skills/ck-debugging/references/root-cause-tracing.md +100 -43
- package/skills/ck-debugging/references/systematic-debugging.md +80 -52
- package/skills/ck-debugging/references/verification.md +101 -52
- package/skills/ck-debugging/scripts/find-polluter.sh +63 -0
- package/skills/ck-debugging/scripts/find-polluter.test.md +102 -0
- package/skills/ck-devops/.env.example +76 -0
- package/skills/ck-devops/SKILL.md +283 -0
- package/skills/ck-devops/references/browser-rendering.md +305 -0
- package/skills/ck-devops/references/cloudflare-d1-kv.md +123 -0
- package/skills/ck-devops/references/cloudflare-platform.md +271 -0
- package/skills/ck-devops/references/cloudflare-r2-storage.md +280 -0
- package/skills/ck-devops/references/cloudflare-workers-advanced.md +312 -0
- package/skills/ck-devops/references/cloudflare-workers-apis.md +309 -0
- package/skills/ck-devops/references/cloudflare-workers-basics.md +418 -0
- package/skills/ck-devops/references/docker-basics.md +297 -0
- package/skills/ck-devops/references/docker-compose.md +292 -0
- package/skills/ck-devops/references/gcloud-platform.md +297 -0
- package/skills/ck-devops/references/gcloud-services.md +304 -0
- package/skills/ck-devops/scripts/cloudflare_deploy.py +269 -0
- package/skills/ck-devops/scripts/docker_optimize.py +331 -0
- package/skills/ck-devops/scripts/requirements.txt +20 -0
- package/skills/ck-devops/scripts/tests/requirements.txt +3 -0
- package/skills/ck-devops/scripts/tests/test_cloudflare_deploy.py +285 -0
- package/skills/ck-devops/scripts/tests/test_docker_optimize.py +436 -0
- package/skills/ck-docs-seeker/.env.example +15 -0
- package/skills/ck-docs-seeker/SKILL.md +70 -65
- package/skills/ck-docs-seeker/package.json +25 -0
- package/skills/ck-docs-seeker/references/advanced.md +79 -0
- package/skills/ck-docs-seeker/references/context7-patterns.md +68 -0
- package/skills/ck-docs-seeker/references/errors.md +68 -0
- package/skills/ck-docs-seeker/scripts/analyze-llms-txt.js +211 -0
- package/skills/ck-docs-seeker/scripts/detect-topic.js +172 -0
- package/skills/ck-docs-seeker/scripts/fetch-docs.js +213 -0
- package/skills/ck-docs-seeker/scripts/tests/run-tests.js +72 -0
- package/skills/ck-docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
- package/skills/ck-docs-seeker/scripts/tests/test-detect-topic.js +112 -0
- package/skills/ck-docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
- package/skills/ck-docs-seeker/scripts/utils/env-loader.js +94 -0
- package/skills/ck-docs-seeker/workflows/library-search.md +87 -0
- package/skills/ck-docs-seeker/workflows/repo-analysis.md +91 -0
- package/skills/ck-docs-seeker/workflows/topic-search.md +77 -0
- package/skills/ck-frontend-design/SKILL.md +79 -0
- package/skills/ck-frontend-design/references/analysis-best-practices.md +80 -0
- package/skills/ck-frontend-design/references/analysis-prompts.md +141 -0
- package/skills/ck-frontend-design/references/analysis-techniques.md +118 -0
- package/skills/ck-frontend-design/references/animejs.md +396 -0
- package/skills/ck-frontend-design/references/design-extraction-overview.md +71 -0
- package/skills/ck-frontend-design/references/extraction-best-practices.md +141 -0
- package/skills/ck-frontend-design/references/extraction-output-templates.md +162 -0
- package/skills/ck-frontend-design/references/extraction-prompts.md +127 -0
- package/skills/ck-frontend-design/references/technical-accessibility.md +119 -0
- package/skills/ck-frontend-design/references/technical-best-practices.md +97 -0
- package/skills/ck-frontend-design/references/technical-optimization.md +44 -0
- package/skills/ck-frontend-design/references/technical-overview.md +90 -0
- package/skills/ck-frontend-design/references/technical-workflows.md +150 -0
- package/skills/ck-frontend-design/references/visual-analysis-overview.md +95 -0
- package/skills/ck-frontend-development/SKILL.md +399 -0
- package/skills/ck-frontend-development/resources/common-patterns.md +331 -0
- package/skills/ck-frontend-development/resources/complete-examples.md +872 -0
- package/skills/ck-frontend-development/resources/component-patterns.md +502 -0
- package/skills/ck-frontend-development/resources/data-fetching.md +767 -0
- package/skills/ck-frontend-development/resources/file-organization.md +502 -0
- package/skills/ck-frontend-development/resources/loading-and-error-states.md +501 -0
- package/skills/ck-frontend-development/resources/performance.md +406 -0
- package/skills/ck-frontend-development/resources/routing-guide.md +364 -0
- package/skills/ck-frontend-development/resources/styling-guide.md +428 -0
- package/skills/ck-frontend-development/resources/typescript-standards.md +418 -0
- package/skills/ck-markdown-novel-viewer/SKILL.md +190 -0
- package/skills/ck-markdown-novel-viewer/assets/directory-browser.css +215 -0
- package/skills/ck-markdown-novel-viewer/assets/favicon.png +0 -0
- package/skills/ck-markdown-novel-viewer/assets/novel-theme.css +818 -0
- package/skills/ck-markdown-novel-viewer/assets/reader.js +262 -0
- package/skills/ck-markdown-novel-viewer/assets/template.html +80 -0
- package/skills/ck-markdown-novel-viewer/package.json +15 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +272 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/plan-navigator.cjs +509 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/port-finder.cjs +48 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
- package/skills/ck-markdown-novel-viewer/scripts/server.cjs +411 -0
- package/skills/ck-markdown-novel-viewer/scripts/tests/server.test.cjs +283 -0
- package/skills/ck-markdown-novel-viewer/tests/dashboard-assets.test.cjs +340 -0
- package/skills/ck-markdown-novel-viewer/tests/dashboard-renderer.test.cjs +404 -0
- package/skills/ck-markdown-novel-viewer/tests/http-server.test.cjs +271 -0
- package/skills/ck-markdown-novel-viewer/tests/run-tests.cjs +51 -0
- package/skills/ck-markdown-novel-viewer/tests/test-framework.cjs +154 -0
- package/skills/ck-markdown-novel-viewer/tests/verify-xss.cjs +90 -0
- package/skills/ck-mcp-builder/LICENSE.txt +202 -0
- package/skills/ck-mcp-builder/SKILL.md +327 -0
- package/skills/ck-mcp-builder/reference/evaluation.md +602 -0
- package/skills/ck-mcp-builder/reference/mcp_best_practices.md +915 -0
- package/skills/ck-mcp-builder/reference/node_mcp_server.md +916 -0
- package/skills/ck-mcp-builder/reference/python_mcp_server.md +752 -0
- package/skills/ck-mcp-builder/scripts/connections.py +151 -0
- package/skills/ck-mcp-builder/scripts/evaluation.py +373 -0
- package/skills/ck-mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/ck-mcp-builder/scripts/requirements.txt +2 -0
- package/skills/ck-mcp-management/README.md +219 -0
- package/skills/ck-mcp-management/SKILL.md +209 -0
- package/skills/ck-mcp-management/assets/tools.json +3146 -0
- package/skills/ck-mcp-management/references/configuration.md +114 -0
- package/skills/ck-mcp-management/references/gemini-cli-integration.md +215 -0
- package/skills/ck-mcp-management/references/mcp-protocol.md +116 -0
- package/skills/ck-mcp-management/scripts/.env.example +10 -0
- package/skills/ck-mcp-management/scripts/cli.ts +195 -0
- package/skills/ck-mcp-management/scripts/dist/analyze-tools.js +70 -0
- package/skills/ck-mcp-management/scripts/dist/cli.js +160 -0
- package/skills/ck-mcp-management/scripts/dist/mcp-client.js +183 -0
- package/skills/ck-mcp-management/scripts/mcp-client.ts +230 -0
- package/skills/ck-mcp-management/scripts/package.json +20 -0
- package/skills/ck-mcp-management/scripts/tsconfig.json +15 -0
- package/skills/ck-media-processing/SKILL.md +90 -0
- package/skills/ck-media-processing/references/common-workflows.md +132 -0
- package/skills/ck-media-processing/references/ffmpeg-encoding.md +358 -0
- package/skills/ck-media-processing/references/ffmpeg-filters.md +503 -0
- package/skills/ck-media-processing/references/ffmpeg-streaming.md +403 -0
- package/skills/ck-media-processing/references/format-compatibility.md +375 -0
- package/skills/ck-media-processing/references/imagemagick-batch.md +612 -0
- package/skills/ck-media-processing/references/imagemagick-editing.md +623 -0
- package/skills/ck-media-processing/references/rmbg-background-removal.md +66 -0
- package/skills/ck-media-processing/references/troubleshooting.md +109 -0
- package/skills/ck-media-processing/scripts/README.md +111 -0
- package/skills/ck-media-processing/scripts/batch-remove-background.sh +124 -0
- package/skills/ck-media-processing/scripts/batch_resize.py +342 -0
- package/skills/ck-media-processing/scripts/media_convert.py +311 -0
- package/skills/ck-media-processing/scripts/remove-background.sh +96 -0
- package/skills/ck-media-processing/scripts/remove-bg-node.js +158 -0
- package/skills/ck-media-processing/scripts/requirements.txt +24 -0
- package/skills/ck-media-processing/scripts/tests/.coverage +0 -0
- package/skills/ck-media-processing/scripts/tests/requirements.txt +2 -0
- package/skills/ck-media-processing/scripts/tests/test_batch_resize.py +372 -0
- package/skills/ck-media-processing/scripts/tests/test_media_convert.py +259 -0
- package/skills/ck-media-processing/scripts/tests/test_video_optimize.py +397 -0
- package/skills/ck-media-processing/scripts/video_optimize.py +414 -0
- package/skills/ck-mobile-development/SKILL.md +210 -0
- package/skills/ck-mobile-development/references/mobile-android.md +604 -0
- package/skills/ck-mobile-development/references/mobile-best-practices.md +545 -0
- package/skills/ck-mobile-development/references/mobile-debugging.md +1089 -0
- package/skills/ck-mobile-development/references/mobile-frameworks.md +465 -0
- package/skills/ck-mobile-development/references/mobile-ios.md +496 -0
- package/skills/ck-mobile-development/references/mobile-mindset.md +544 -0
- package/skills/ck-payment-integration/README.md +185 -0
- package/skills/ck-payment-integration/SKILL.md +116 -0
- package/skills/ck-payment-integration/references/polar/benefits.md +396 -0
- package/skills/ck-payment-integration/references/polar/best-practices.md +482 -0
- package/skills/ck-payment-integration/references/polar/checkouts.md +266 -0
- package/skills/ck-payment-integration/references/polar/overview.md +184 -0
- package/skills/ck-payment-integration/references/polar/products.md +244 -0
- package/skills/ck-payment-integration/references/polar/sdk.md +436 -0
- package/skills/ck-payment-integration/references/polar/subscriptions.md +340 -0
- package/skills/ck-payment-integration/references/polar/webhooks.md +405 -0
- package/skills/ck-payment-integration/references/sepay/api.md +140 -0
- package/skills/ck-payment-integration/references/sepay/best-practices.md +337 -0
- package/skills/ck-payment-integration/references/sepay/overview.md +138 -0
- package/skills/ck-payment-integration/references/sepay/qr-codes.md +228 -0
- package/skills/ck-payment-integration/references/sepay/sdk.md +213 -0
- package/skills/ck-payment-integration/references/sepay/webhooks.md +208 -0
- package/skills/ck-payment-integration/scripts/.env.example +20 -0
- package/skills/ck-payment-integration/scripts/checkout-helper.js +244 -0
- package/skills/ck-payment-integration/scripts/package.json +17 -0
- package/skills/ck-payment-integration/scripts/polar-webhook-verify.js +202 -0
- package/skills/ck-payment-integration/scripts/sepay-webhook-verify.js +193 -0
- package/skills/ck-payment-integration/scripts/test-scripts.js +237 -0
- package/skills/ck-planning/SKILL.md +79 -49
- package/skills/ck-planning/references/codebase-understanding.md +62 -0
- package/skills/ck-planning/references/output-standards.md +127 -0
- package/skills/ck-planning/references/plan-organization.md +122 -60
- package/skills/ck-planning/references/research-phase.md +49 -56
- package/skills/ck-planning/references/solution-design.md +61 -63
- package/skills/ck-problem-solving/SKILL.md +95 -0
- package/skills/ck-problem-solving/references/attribution.md +69 -0
- package/skills/ck-problem-solving/references/collision-zone-thinking.md +79 -0
- package/skills/ck-problem-solving/references/inversion-exercise.md +91 -0
- package/skills/ck-problem-solving/references/meta-pattern-recognition.md +87 -0
- package/skills/ck-problem-solving/references/scale-game.md +95 -0
- package/skills/ck-problem-solving/references/simplification-cascades.md +80 -0
- package/skills/ck-problem-solving/references/when-stuck.md +72 -0
- package/skills/ck-repomix/SKILL.md +247 -0
- package/skills/ck-repomix/references/configuration.md +211 -0
- package/skills/ck-repomix/references/usage-patterns.md +232 -0
- package/skills/ck-repomix/scripts/.coverage +0 -0
- package/skills/ck-repomix/scripts/README.md +179 -0
- package/skills/ck-repomix/scripts/repomix_batch.py +455 -0
- package/skills/ck-repomix/scripts/repos.example.json +15 -0
- package/skills/ck-repomix/scripts/requirements.txt +15 -0
- package/skills/ck-repomix/scripts/tests/test_repomix_batch.py +531 -0
- package/skills/ck-sequential-thinking/.env.example +8 -0
- package/skills/ck-sequential-thinking/README.md +183 -0
- package/skills/ck-sequential-thinking/SKILL.md +14 -2
- package/skills/ck-sequential-thinking/package.json +31 -0
- package/skills/ck-sequential-thinking/references/advanced-strategies.md +79 -0
- package/skills/ck-sequential-thinking/references/advanced-techniques.md +2 -14
- package/skills/ck-sequential-thinking/references/core-patterns.md +8 -0
- package/skills/ck-sequential-thinking/references/examples-api.md +88 -0
- package/skills/ck-sequential-thinking/references/examples-architecture.md +94 -0
- package/skills/ck-sequential-thinking/references/examples-debug.md +90 -0
- package/skills/ck-sequential-thinking/scripts/format-thought.js +159 -0
- package/skills/ck-sequential-thinking/scripts/process-thought.js +236 -0
- package/skills/ck-sequential-thinking/tests/format-thought.test.js +133 -0
- package/skills/ck-sequential-thinking/tests/process-thought.test.js +215 -0
- package/skills/ck-shopify/README.md +66 -0
- package/skills/ck-shopify/SKILL.md +319 -0
- package/skills/ck-shopify/references/app-development.md +470 -0
- package/skills/ck-shopify/references/extensions.md +493 -0
- package/skills/ck-shopify/references/themes.md +498 -0
- package/skills/ck-shopify/scripts/.coverage +0 -0
- package/skills/ck-shopify/scripts/requirements.txt +19 -0
- package/skills/ck-shopify/scripts/shopify_init.py +423 -0
- package/skills/ck-shopify/scripts/tests/.coverage +0 -0
- package/skills/ck-shopify/scripts/tests/test_shopify_init.py +385 -0
- package/skills/ck-skill-creator/LICENSE.txt +202 -0
- package/skills/ck-skill-creator/SKILL.md +265 -0
- package/skills/ck-skill-creator/scripts/init_skill.py +303 -0
- package/skills/ck-skill-creator/scripts/package_skill.py +110 -0
- package/skills/ck-skill-creator/scripts/quick_validate.py +65 -0
- package/skills/ck-threejs/SKILL.md +87 -0
- package/skills/ck-threejs/references/01-getting-started.md +177 -0
- package/skills/ck-threejs/references/02-loaders.md +169 -0
- package/skills/ck-threejs/references/03-textures.md +170 -0
- package/skills/ck-threejs/references/04-cameras.md +195 -0
- package/skills/ck-threejs/references/05-lights.md +183 -0
- package/skills/ck-threejs/references/06-animations.md +214 -0
- package/skills/ck-threejs/references/07-math.md +260 -0
- package/skills/ck-threejs/references/08-interaction.md +267 -0
- package/skills/ck-threejs/references/09-postprocessing.md +240 -0
- package/skills/ck-threejs/references/10-controls.md +259 -0
- package/skills/ck-threejs/references/11-materials-advanced.md +270 -0
- package/skills/ck-threejs/references/12-performance.md +269 -0
- package/skills/ck-threejs/references/13-node-materials.md +298 -0
- package/skills/ck-threejs/references/14-physics-vr.md +304 -0
- package/skills/ck-threejs/references/15-specialized-loaders.md +333 -0
- package/skills/ck-threejs/references/16-webgpu.md +302 -0
- package/skills/ck-ui-styling/LICENSE.txt +202 -0
- package/skills/ck-ui-styling/SKILL.md +319 -0
- package/skills/ck-ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/ck-ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/references/canvas-design-system.md +320 -0
- package/skills/ck-ui-styling/references/shadcn-accessibility.md +471 -0
- package/skills/ck-ui-styling/references/shadcn-components.md +424 -0
- package/skills/ck-ui-styling/references/shadcn-theming.md +373 -0
- package/skills/ck-ui-styling/references/tailwind-customization.md +483 -0
- package/skills/ck-ui-styling/references/tailwind-responsive.md +382 -0
- package/skills/ck-ui-styling/references/tailwind-utilities.md +455 -0
- package/skills/ck-ui-styling/scripts/.coverage +0 -0
- package/skills/ck-ui-styling/scripts/requirements.txt +17 -0
- package/skills/ck-ui-styling/scripts/shadcn_add.py +292 -0
- package/skills/ck-ui-styling/scripts/tailwind_config_gen.py +456 -0
- package/skills/ck-ui-styling/scripts/tests/coverage-ui.json +1 -0
- package/skills/ck-ui-styling/scripts/tests/requirements.txt +3 -0
- package/skills/ck-ui-styling/scripts/tests/test_shadcn_add.py +266 -0
- package/skills/ck-ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
- package/skills/ck-ui-ux-pro-max/SKILL.md +227 -0
- package/skills/ck-ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/ck-ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/ck-ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/ck-ui-ux-pro-max/data/products.csv +97 -0
- package/skills/ck-ui-ux-pro-max/data/prompts.csv +24 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/html-tailwind.csv +51 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/ck-ui-ux-pro-max/data/styles.csv +59 -0
- package/skills/ck-ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/ck-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/ck-ui-ux-pro-max/scripts/core.py +236 -0
- package/skills/ck-ui-ux-pro-max/scripts/search.py +76 -0
- package/skills/ck-web-frameworks/SKILL.md +322 -0
- package/skills/ck-web-frameworks/references/nextjs-app-router.md +465 -0
- package/skills/ck-web-frameworks/references/nextjs-data-fetching.md +459 -0
- package/skills/ck-web-frameworks/references/nextjs-optimization.md +511 -0
- package/skills/ck-web-frameworks/references/nextjs-server-components.md +495 -0
- package/skills/ck-web-frameworks/references/remix-icon-integration.md +603 -0
- package/skills/ck-web-frameworks/references/turborepo-caching.md +551 -0
- package/skills/ck-web-frameworks/references/turborepo-pipelines.md +517 -0
- package/skills/ck-web-frameworks/references/turborepo-setup.md +542 -0
- package/skills/ck-web-frameworks/scripts/.coverage +0 -0
- package/skills/ck-web-frameworks/scripts/__init__.py +0 -0
- package/skills/ck-web-frameworks/scripts/nextjs_init.py +547 -0
- package/skills/ck-web-frameworks/scripts/requirements.txt +16 -0
- package/skills/ck-web-frameworks/scripts/tests/coverage-web.json +1 -0
- package/skills/ck-web-frameworks/scripts/tests/requirements.txt +3 -0
- package/skills/ck-web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
- package/skills/ck-web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
- package/skills/ck-web-frameworks/scripts/turborepo_migrate.py +394 -0
- package/src/commands/init.js +61 -30
- package/src/utils/paths.js +35 -4
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# Payment Integration Skill
|
|
2
|
+
|
|
3
|
+
Comprehensive payment integration skill for SePay (Vietnamese payment gateway) and Polar (global SaaS monetization platform).
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
### SePay Integration
|
|
8
|
+
- Vietnamese payment gateway with VietQR, NAPAS, bank transfers, and cards
|
|
9
|
+
- 44+ supported banks
|
|
10
|
+
- Webhook verification with API Key/OAuth2 authentication
|
|
11
|
+
- QR code generation API
|
|
12
|
+
- Order-based virtual accounts
|
|
13
|
+
- SDK support for Node.js, PHP, and Laravel
|
|
14
|
+
|
|
15
|
+
### Polar Integration
|
|
16
|
+
- Global SaaS monetization platform
|
|
17
|
+
- Merchant of Record (handles global tax compliance)
|
|
18
|
+
- Subscription management with trials, upgrades, downgrades
|
|
19
|
+
- Usage-based billing with events and meters
|
|
20
|
+
- Automated benefit delivery (GitHub repos, Discord roles, license keys, files)
|
|
21
|
+
- Customer self-service portal
|
|
22
|
+
- Multi-language SDKs (TypeScript, Python, PHP, Go)
|
|
23
|
+
- Framework adapters (Next.js, Laravel, Remix, etc.)
|
|
24
|
+
|
|
25
|
+
## Structure
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
payment-integration/
|
|
29
|
+
├── SKILL.md # Main skill definition
|
|
30
|
+
├── README.md # This file
|
|
31
|
+
├── references/ # Progressive disclosure documentation
|
|
32
|
+
│ ├── sepay/ # SePay integration guides
|
|
33
|
+
│ │ ├── overview.md # Auth, capabilities, environments
|
|
34
|
+
│ │ ├── api.md # API endpoints and operations
|
|
35
|
+
│ │ ├── webhooks.md # Webhook setup and handling
|
|
36
|
+
│ │ ├── sdk.md # SDK usage (Node.js, PHP, Laravel)
|
|
37
|
+
│ │ ├── qr-codes.md # VietQR generation
|
|
38
|
+
│ │ └── best-practices.md # Security, patterns, monitoring
|
|
39
|
+
│ └── polar/ # Polar integration guides
|
|
40
|
+
│ ├── overview.md # Auth, MoR concept, environments
|
|
41
|
+
│ ├── products.md # Products, pricing, usage-based billing
|
|
42
|
+
│ ├── checkouts.md # Checkout flows and embedded checkout
|
|
43
|
+
│ ├── subscriptions.md # Lifecycle, upgrades, trials
|
|
44
|
+
│ ├── webhooks.md # Event handling and verification
|
|
45
|
+
│ ├── benefits.md # Automated benefit delivery
|
|
46
|
+
│ ├── sdk.md # Multi-language SDK usage
|
|
47
|
+
│ └── best-practices.md # Security, patterns, monitoring
|
|
48
|
+
└── scripts/ # Integration helper scripts
|
|
49
|
+
├── sepay-webhook-verify.js # SePay webhook verification
|
|
50
|
+
├── polar-webhook-verify.js # Polar webhook verification
|
|
51
|
+
├── checkout-helper.js # Checkout session generation
|
|
52
|
+
├── test-scripts.js # Test suite for all scripts
|
|
53
|
+
├── package.json # Node.js package configuration
|
|
54
|
+
└── .env.example # Environment variable template
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Usage
|
|
58
|
+
|
|
59
|
+
### Activate the Skill
|
|
60
|
+
|
|
61
|
+
Claude Code will automatically activate this skill when you mention payment integration, subscriptions, webhooks, or platform-specific terms (SePay, Polar).
|
|
62
|
+
|
|
63
|
+
### Manual Activation
|
|
64
|
+
|
|
65
|
+
In conversations, simply reference the platforms:
|
|
66
|
+
- "Implement SePay payment integration"
|
|
67
|
+
- "Set up Polar subscriptions with usage-based billing"
|
|
68
|
+
- "Create webhook handler for payment notifications"
|
|
69
|
+
|
|
70
|
+
### Using Scripts
|
|
71
|
+
|
|
72
|
+
**SePay Webhook Verification:**
|
|
73
|
+
```bash
|
|
74
|
+
cd %USERPROFILE%/.claude/skills/payment-integration/scripts
|
|
75
|
+
node sepay-webhook-verify.js '{"id":12345,"gateway":"Vietcombank",...}'
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Polar Webhook Verification:**
|
|
79
|
+
```bash
|
|
80
|
+
node polar-webhook-verify.js '{"type":"order.paid","data":{...}}' base64secret
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Checkout Helper:**
|
|
84
|
+
```bash
|
|
85
|
+
# SePay
|
|
86
|
+
node checkout-helper.js sepay '{"orderInvoiceNumber":"ORD001","orderAmount":100000,...}'
|
|
87
|
+
|
|
88
|
+
# Polar
|
|
89
|
+
node checkout-helper.js polar '{"productPriceId":"price_xxx","successUrl":"https://..."}'
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Run Tests:**
|
|
93
|
+
```bash
|
|
94
|
+
npm test
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Environment Variables
|
|
98
|
+
|
|
99
|
+
Copy `.env.example` to `.env` and configure:
|
|
100
|
+
|
|
101
|
+
```env
|
|
102
|
+
# SePay
|
|
103
|
+
SEPAY_MERCHANT_ID=SP-TEST-XXXXXXX
|
|
104
|
+
SEPAY_SECRET_KEY=spsk_test_xxxxxxxxxxxxx
|
|
105
|
+
SEPAY_ENV=sandbox
|
|
106
|
+
SEPAY_WEBHOOK_API_KEY=your_key
|
|
107
|
+
|
|
108
|
+
# Polar
|
|
109
|
+
POLAR_ACCESS_TOKEN=polar_xxxxxxxxxxxxxxxx
|
|
110
|
+
POLAR_SERVER=sandbox
|
|
111
|
+
POLAR_WEBHOOK_SECRET=base64_secret
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Progressive Disclosure
|
|
115
|
+
|
|
116
|
+
The skill uses progressive disclosure to minimize context usage:
|
|
117
|
+
1. **SKILL.md** - Overview and quick reference (~99 lines)
|
|
118
|
+
2. **references/** - Detailed guides loaded as needed (<100 lines each)
|
|
119
|
+
3. **scripts/** - Executable helpers with embedded examples
|
|
120
|
+
|
|
121
|
+
Load only the references you need for your current task.
|
|
122
|
+
|
|
123
|
+
## Platform Selection Guide
|
|
124
|
+
|
|
125
|
+
**Choose SePay for:**
|
|
126
|
+
- Vietnamese market targeting
|
|
127
|
+
- Bank transfer automation
|
|
128
|
+
- Local payment methods
|
|
129
|
+
- QR code payments (VietQR/NAPAS)
|
|
130
|
+
- Direct bank monitoring
|
|
131
|
+
|
|
132
|
+
**Choose Polar for:**
|
|
133
|
+
- Global market
|
|
134
|
+
- SaaS/subscription business
|
|
135
|
+
- Usage-based billing
|
|
136
|
+
- Automated benefit delivery
|
|
137
|
+
- Tax compliance (Merchant of Record)
|
|
138
|
+
- Customer self-service
|
|
139
|
+
|
|
140
|
+
## Examples
|
|
141
|
+
|
|
142
|
+
### SePay Payment Flow
|
|
143
|
+
1. Load `references/sepay/overview.md` for authentication
|
|
144
|
+
2. Load `references/sepay/sdk.md` for integration
|
|
145
|
+
3. Use `checkout-helper.js` to generate payment form
|
|
146
|
+
4. Load `references/sepay/webhooks.md` for notifications
|
|
147
|
+
5. Use `sepay-webhook-verify.js` to verify authenticity
|
|
148
|
+
|
|
149
|
+
### Polar Subscription Flow
|
|
150
|
+
1. Load `references/polar/overview.md` for setup
|
|
151
|
+
2. Load `references/polar/products.md` for pricing
|
|
152
|
+
3. Load `references/polar/checkouts.md` for payment
|
|
153
|
+
4. Load `references/polar/subscriptions.md` for lifecycle
|
|
154
|
+
5. Load `references/polar/webhooks.md` for events
|
|
155
|
+
6. Load `references/polar/benefits.md` for automation
|
|
156
|
+
|
|
157
|
+
## Testing
|
|
158
|
+
|
|
159
|
+
All scripts include comprehensive test coverage:
|
|
160
|
+
- SePay webhook verification (with/without authentication)
|
|
161
|
+
- Polar webhook signature validation
|
|
162
|
+
- Checkout configuration generation
|
|
163
|
+
- Error handling and edge cases
|
|
164
|
+
|
|
165
|
+
Run `npm test` in the scripts directory to verify functionality.
|
|
166
|
+
|
|
167
|
+
## Support
|
|
168
|
+
|
|
169
|
+
### SePay
|
|
170
|
+
- Docs: https://developer.sepay.vn/en
|
|
171
|
+
- Email: info@sepay.vn
|
|
172
|
+
- Hotline: 02873059589
|
|
173
|
+
|
|
174
|
+
### Polar
|
|
175
|
+
- Docs: https://polar.sh/docs
|
|
176
|
+
- API Reference: https://polar.sh/docs/api-reference
|
|
177
|
+
- GitHub: https://github.com/polarsource/polar
|
|
178
|
+
|
|
179
|
+
## License
|
|
180
|
+
|
|
181
|
+
MIT
|
|
182
|
+
|
|
183
|
+
## Version
|
|
184
|
+
|
|
185
|
+
1.0.0
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'ck-payment-integration'
|
|
3
|
+
description: 'Implement payment integrations with SePay (Vietnamese payment gateway with VietQR, bank transfers, cards) and Polar (global SaaS monetization platform with subscriptions, usage-based billing, automated benefits). Use when integrating payment processing, implementing checkout flows, managing subscriptions, handling webhooks, processing bank transfers, generating QR codes, automating benefit delivery, or building billing systems. Supports authentication (API keys, OAuth2), product management, customer portals, tax compliance (Polar as MoR), and comprehensive SDK integrations (Node.js, PHP, Python, Go, Laravel, Next.js).'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Payment Integration
|
|
7
|
+
|
|
8
|
+
Implement payment processing with SePay (Vietnamese payments) and Polar (global SaaS monetization).
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
Use when implementing:
|
|
13
|
+
- Payment gateway integration (checkout, processing)
|
|
14
|
+
- Subscription management (trials, upgrades, billing)
|
|
15
|
+
- Webhook handling (payment notifications)
|
|
16
|
+
- QR code payments (VietQR, NAPAS)
|
|
17
|
+
- Usage-based billing (metering, credits)
|
|
18
|
+
- Automated benefit delivery (licenses, GitHub access, Discord roles)
|
|
19
|
+
- Customer portals (self-service management)
|
|
20
|
+
- Bank transfer automation (Vietnamese banks)
|
|
21
|
+
- Product catalogs with pricing
|
|
22
|
+
|
|
23
|
+
## Platform Selection
|
|
24
|
+
|
|
25
|
+
**Choose SePay for:**
|
|
26
|
+
- Vietnamese market (VND currency)
|
|
27
|
+
- Bank transfer automation
|
|
28
|
+
- VietQR/NAPAS payments
|
|
29
|
+
- Local payment methods
|
|
30
|
+
- Direct bank account monitoring
|
|
31
|
+
|
|
32
|
+
**Choose Polar for:**
|
|
33
|
+
- Global SaaS products
|
|
34
|
+
- Subscription management
|
|
35
|
+
- Usage-based billing
|
|
36
|
+
- Automated benefits (GitHub, Discord, licenses)
|
|
37
|
+
- Merchant of Record (tax compliance)
|
|
38
|
+
- Digital product sales
|
|
39
|
+
|
|
40
|
+
## Quick Reference
|
|
41
|
+
|
|
42
|
+
### SePay Integration
|
|
43
|
+
- **Overview & Auth**: `references/sepay/overview.md` - Platform capabilities, API/OAuth2 auth, supported banks
|
|
44
|
+
- **API Reference**: `references/sepay/api.md` - Endpoints, transactions, bank accounts, virtual accounts
|
|
45
|
+
- **Webhooks**: `references/sepay/webhooks.md` - Setup, payload structure, verification, retry logic
|
|
46
|
+
- **SDK Usage**: `references/sepay/sdk.md` - Node.js, PHP, Laravel implementations
|
|
47
|
+
- **QR Codes**: `references/sepay/qr-codes.md` - VietQR generation, templates, integration
|
|
48
|
+
- **Best Practices**: `references/sepay/best-practices.md` - Security, patterns, monitoring
|
|
49
|
+
|
|
50
|
+
### Polar Integration
|
|
51
|
+
- **Overview & Auth**: `references/polar/overview.md` - Platform capabilities, authentication methods, MoR concept
|
|
52
|
+
- **Products & Pricing**: `references/polar/products.md` - Product types, pricing models, usage-based billing
|
|
53
|
+
- **Checkouts**: `references/polar/checkouts.md` - Checkout flows, embedded checkout, links
|
|
54
|
+
- **Subscriptions**: `references/polar/subscriptions.md` - Lifecycle, upgrades, downgrades, trials
|
|
55
|
+
- **Webhooks**: `references/polar/webhooks.md` - Event types, signature verification, monitoring
|
|
56
|
+
- **Benefits**: `references/polar/benefits.md` - Automated delivery (GitHub, Discord, licenses, files)
|
|
57
|
+
- **SDK Usage**: `references/polar/sdk.md` - TypeScript, Python, PHP, Go, framework adapters
|
|
58
|
+
- **Best Practices**: `references/polar/best-practices.md` - Security, patterns, monitoring
|
|
59
|
+
|
|
60
|
+
### Integration Scripts
|
|
61
|
+
- **SePay Webhook Verification**: `scripts/sepay-webhook-verify.js` - Verify SePay webhook authenticity
|
|
62
|
+
- **Polar Webhook Verification**: `scripts/polar-webhook-verify.js` - Verify Polar webhook signatures
|
|
63
|
+
- **Checkout Helper**: `scripts/checkout-helper.js` - Generate checkout sessions for both platforms
|
|
64
|
+
|
|
65
|
+
## Implementation Workflow
|
|
66
|
+
|
|
67
|
+
### SePay Implementation
|
|
68
|
+
1. Load `references/sepay/overview.md` for auth setup
|
|
69
|
+
2. Load `references/sepay/api.md` or `references/sepay/sdk.md` for integration
|
|
70
|
+
3. Load `references/sepay/webhooks.md` for payment notifications
|
|
71
|
+
4. Use `scripts/sepay-webhook-verify.js` for webhook verification
|
|
72
|
+
5. Load `references/sepay/best-practices.md` for production readiness
|
|
73
|
+
|
|
74
|
+
### Polar Implementation
|
|
75
|
+
1. Load `references/polar/overview.md` for auth and concepts
|
|
76
|
+
2. Load `references/polar/products.md` for product setup
|
|
77
|
+
3. Load `references/polar/checkouts.md` for payment flows
|
|
78
|
+
4. Load `references/polar/webhooks.md` for event handling
|
|
79
|
+
5. Use `scripts/polar-webhook-verify.js` for webhook verification
|
|
80
|
+
6. Load `references/polar/benefits.md` if automating delivery
|
|
81
|
+
7. Load `references/polar/best-practices.md` for production readiness
|
|
82
|
+
|
|
83
|
+
## Key Capabilities
|
|
84
|
+
|
|
85
|
+
**SePay:**
|
|
86
|
+
- Payment gateway (QR, bank transfer, cards)
|
|
87
|
+
- Bank account monitoring with webhooks
|
|
88
|
+
- Order-based virtual accounts
|
|
89
|
+
- VietQR generation API
|
|
90
|
+
- 44+ Vietnamese banks supported
|
|
91
|
+
- Rate limit: 2 calls/second
|
|
92
|
+
|
|
93
|
+
**Polar:**
|
|
94
|
+
- Merchant of Record (global tax compliance)
|
|
95
|
+
- Subscription lifecycle management
|
|
96
|
+
- Usage-based billing (events, meters)
|
|
97
|
+
- Automated benefits (GitHub, Discord, licenses)
|
|
98
|
+
- Customer portal (self-service)
|
|
99
|
+
- Multi-language SDKs
|
|
100
|
+
- Rate limit: 300 req/min
|
|
101
|
+
|
|
102
|
+
## Instructions
|
|
103
|
+
|
|
104
|
+
When implementing payment integration:
|
|
105
|
+
|
|
106
|
+
1. **Identify platform** based on requirements (Vietnamese vs global, payment types)
|
|
107
|
+
2. **Load relevant references** progressively as needed
|
|
108
|
+
3. **Implement authentication** using platform-specific methods
|
|
109
|
+
4. **Set up products/pricing** according to business model
|
|
110
|
+
5. **Implement checkout flow** (hosted, embedded, or API-driven)
|
|
111
|
+
6. **Configure webhooks** with proper verification
|
|
112
|
+
7. **Handle payment events** (success, failure, refund)
|
|
113
|
+
8. **Test thoroughly** in sandbox before production
|
|
114
|
+
9. **Monitor and optimize** using platform analytics
|
|
115
|
+
|
|
116
|
+
Load only the references needed for current implementation step to maintain context efficiency.
|
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
# Polar Benefits
|
|
2
|
+
|
|
3
|
+
Automated benefit delivery system for digital products.
|
|
4
|
+
|
|
5
|
+
## Philosophy
|
|
6
|
+
|
|
7
|
+
Configure once, automatic delivery. Polar handles granting and revoking based on subscription state.
|
|
8
|
+
|
|
9
|
+
## Benefit Types
|
|
10
|
+
|
|
11
|
+
### 1. License Keys
|
|
12
|
+
|
|
13
|
+
**Auto-generate unique keys with customizable branding.**
|
|
14
|
+
|
|
15
|
+
**Create:**
|
|
16
|
+
```typescript
|
|
17
|
+
const benefit = await polar.benefits.create({
|
|
18
|
+
type: "license_keys",
|
|
19
|
+
organization_id: "org_xxx",
|
|
20
|
+
description: "Software License",
|
|
21
|
+
properties: {
|
|
22
|
+
prefix: "MYAPP",
|
|
23
|
+
expires: false,
|
|
24
|
+
activations: 1,
|
|
25
|
+
limit_usage: false
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Validation API (unauthenticated):**
|
|
31
|
+
```typescript
|
|
32
|
+
const validation = await polar.licenses.validate({
|
|
33
|
+
key: "MYAPP-XXXX-XXXX-XXXX",
|
|
34
|
+
organization_id: "org_xxx"
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
if (validation.valid) {
|
|
38
|
+
// Grant access
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Activation/Deactivation:**
|
|
43
|
+
```typescript
|
|
44
|
+
await polar.licenses.activate(licenseKey, {
|
|
45
|
+
label: "User's MacBook Pro"
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
await polar.licenses.deactivate(activationId);
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Auto-revoke:** On subscription cancellation or refund
|
|
52
|
+
|
|
53
|
+
### 2. GitHub Repository Access
|
|
54
|
+
|
|
55
|
+
**Auto-invite to private repos with permission management.**
|
|
56
|
+
|
|
57
|
+
**Create:**
|
|
58
|
+
```typescript
|
|
59
|
+
const benefit = await polar.benefits.create({
|
|
60
|
+
type: "github_repository",
|
|
61
|
+
organization_id: "org_xxx",
|
|
62
|
+
description: "Access to private repo",
|
|
63
|
+
properties: {
|
|
64
|
+
repository_owner: "myorg",
|
|
65
|
+
repository_name: "private-repo",
|
|
66
|
+
permission: "pull" // or "push", "admin"
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Multiple Repos:**
|
|
72
|
+
```typescript
|
|
73
|
+
{
|
|
74
|
+
properties: {
|
|
75
|
+
repositories: [
|
|
76
|
+
{ owner: "myorg", name: "repo1", permission: "pull" },
|
|
77
|
+
{ owner: "myorg", name: "repo2", permission: "push" }
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Behavior:**
|
|
84
|
+
- Auto-invite on subscription activation
|
|
85
|
+
- Permission managed by Polar
|
|
86
|
+
- Auto-revoke on cancellation
|
|
87
|
+
|
|
88
|
+
### 3. Discord Access
|
|
89
|
+
|
|
90
|
+
**Server invites and role assignment.**
|
|
91
|
+
|
|
92
|
+
**Create:**
|
|
93
|
+
```typescript
|
|
94
|
+
const benefit = await polar.benefits.create({
|
|
95
|
+
type: "discord",
|
|
96
|
+
organization_id: "org_xxx",
|
|
97
|
+
description: "Premium Discord role",
|
|
98
|
+
properties: {
|
|
99
|
+
guild_id: "123456789",
|
|
100
|
+
role_id: "987654321"
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Multiple Roles:**
|
|
106
|
+
```typescript
|
|
107
|
+
{
|
|
108
|
+
properties: {
|
|
109
|
+
guild_id: "123456789",
|
|
110
|
+
roles: [
|
|
111
|
+
{ role_id: "role1", name: "Premium" },
|
|
112
|
+
{ role_id: "role2", name: "Supporter" }
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Requirements:**
|
|
119
|
+
- Polar Discord app must be added to server
|
|
120
|
+
- Configure in Polar dashboard
|
|
121
|
+
|
|
122
|
+
**Behavior:**
|
|
123
|
+
- Auto-invite to server
|
|
124
|
+
- Assign roles automatically
|
|
125
|
+
- Remove roles on cancellation
|
|
126
|
+
|
|
127
|
+
### 4. Downloadable Files
|
|
128
|
+
|
|
129
|
+
**Secure file delivery up to 10GB each.**
|
|
130
|
+
|
|
131
|
+
**Create:**
|
|
132
|
+
```typescript
|
|
133
|
+
const benefit = await polar.benefits.create({
|
|
134
|
+
type: "downloadable",
|
|
135
|
+
organization_id: "org_xxx",
|
|
136
|
+
description: "Premium templates",
|
|
137
|
+
properties: {
|
|
138
|
+
files: [
|
|
139
|
+
{ name: "template1.zip", size: 5000000 },
|
|
140
|
+
{ name: "template2.psd", size: 10000000 }
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Upload Files:**
|
|
147
|
+
- Via Polar dashboard
|
|
148
|
+
- Secure storage
|
|
149
|
+
- Access control
|
|
150
|
+
|
|
151
|
+
**Customer Access:**
|
|
152
|
+
- Download links in customer portal
|
|
153
|
+
- Secure, time-limited URLs
|
|
154
|
+
- Multiple files supported
|
|
155
|
+
|
|
156
|
+
### 5. Meter Credits
|
|
157
|
+
|
|
158
|
+
**Pre-purchased usage for usage-based billing.**
|
|
159
|
+
|
|
160
|
+
**Create:**
|
|
161
|
+
```typescript
|
|
162
|
+
const benefit = await polar.benefits.create({
|
|
163
|
+
type: "custom",
|
|
164
|
+
organization_id: "org_xxx",
|
|
165
|
+
description: "10,000 API credits",
|
|
166
|
+
properties: {
|
|
167
|
+
meter_id: "meter_xxx",
|
|
168
|
+
credits: 10000
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Automatic Application:**
|
|
174
|
+
- Credits added on subscription start
|
|
175
|
+
- Balance tracked via API
|
|
176
|
+
- Depletes with usage
|
|
177
|
+
|
|
178
|
+
**Balance Check:**
|
|
179
|
+
```typescript
|
|
180
|
+
const balance = await polar.meters.getBalance({
|
|
181
|
+
customer_id: "cust_xxx",
|
|
182
|
+
meter_id: "meter_xxx"
|
|
183
|
+
});
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### 6. Custom Benefits
|
|
187
|
+
|
|
188
|
+
**Flexible placeholder for manual fulfillment.**
|
|
189
|
+
|
|
190
|
+
**Create:**
|
|
191
|
+
```typescript
|
|
192
|
+
const benefit = await polar.benefits.create({
|
|
193
|
+
type: "custom",
|
|
194
|
+
organization_id: "org_xxx",
|
|
195
|
+
description: "Priority support via email",
|
|
196
|
+
properties: {
|
|
197
|
+
note: "Email support@example.com with your order ID for priority support"
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**Use Cases:**
|
|
203
|
+
- Cal.com booking links
|
|
204
|
+
- Email support access
|
|
205
|
+
- Community forum access
|
|
206
|
+
- Manual onboarding
|
|
207
|
+
|
|
208
|
+
## Benefit Grants
|
|
209
|
+
|
|
210
|
+
**Link between customer and benefit.**
|
|
211
|
+
|
|
212
|
+
### States
|
|
213
|
+
- `created` - Grant created
|
|
214
|
+
- `active` - Benefit delivered
|
|
215
|
+
- `revoked` - Access removed
|
|
216
|
+
|
|
217
|
+
### Webhooks
|
|
218
|
+
- `benefit_grant.created` - Grant created
|
|
219
|
+
- `benefit_grant.updated` - Status changed
|
|
220
|
+
- `benefit_grant.revoked` - Access revoked
|
|
221
|
+
|
|
222
|
+
### Auto-revoke Triggers
|
|
223
|
+
- Subscription canceled
|
|
224
|
+
- Subscription revoked
|
|
225
|
+
- Refund processed
|
|
226
|
+
- Product changed (if benefit not on new product)
|
|
227
|
+
|
|
228
|
+
### Querying Grants
|
|
229
|
+
```typescript
|
|
230
|
+
const grants = await polar.benefitGrants.list({
|
|
231
|
+
customer_id: "cust_xxx",
|
|
232
|
+
benefit_id: "benefit_xxx",
|
|
233
|
+
is_granted: true
|
|
234
|
+
});
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Attaching Benefits to Products
|
|
238
|
+
|
|
239
|
+
### Via API
|
|
240
|
+
```typescript
|
|
241
|
+
await polar.products.updateBenefits(productId, {
|
|
242
|
+
benefits: [benefitId1, benefitId2, benefitId3]
|
|
243
|
+
});
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Via Dashboard
|
|
247
|
+
1. Navigate to product
|
|
248
|
+
2. Benefits tab
|
|
249
|
+
3. Select benefits to attach
|
|
250
|
+
4. Save
|
|
251
|
+
|
|
252
|
+
### Order
|
|
253
|
+
- Benefits granted in order attached
|
|
254
|
+
- Customers see in that order
|
|
255
|
+
- Reorder via dashboard or API
|
|
256
|
+
|
|
257
|
+
## Customer Experience
|
|
258
|
+
|
|
259
|
+
### Viewing Benefits
|
|
260
|
+
- Customer portal shows all active benefits
|
|
261
|
+
- Clear instructions for each type
|
|
262
|
+
- Download links for files
|
|
263
|
+
- License keys displayed
|
|
264
|
+
|
|
265
|
+
### Accessing Benefits
|
|
266
|
+
```typescript
|
|
267
|
+
// Generate customer portal link
|
|
268
|
+
const session = await polar.customerSessions.create({
|
|
269
|
+
external_customer_id: userId
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
// Customer sees:
|
|
273
|
+
// - Active subscriptions
|
|
274
|
+
// - Granted benefits
|
|
275
|
+
// - Download links
|
|
276
|
+
// - License keys
|
|
277
|
+
// - Instructions
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
## Implementation Patterns
|
|
281
|
+
|
|
282
|
+
### License Key Validation
|
|
283
|
+
```typescript
|
|
284
|
+
// In your application
|
|
285
|
+
async function validateLicense(key) {
|
|
286
|
+
try {
|
|
287
|
+
const result = await polar.licenses.validate({
|
|
288
|
+
key: key,
|
|
289
|
+
organization_id: process.env.POLAR_ORG_ID
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
if (!result.valid) {
|
|
293
|
+
return { valid: false, reason: 'Invalid license' };
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
if (result.limit_usage && result.usage >= result.limit_usage) {
|
|
297
|
+
return { valid: false, reason: 'Usage limit exceeded' };
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
return { valid: true, customer: result.customer };
|
|
301
|
+
} catch (error) {
|
|
302
|
+
console.error('License validation failed:', error);
|
|
303
|
+
return { valid: false, reason: 'Validation error' };
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### GitHub Access Check
|
|
309
|
+
```typescript
|
|
310
|
+
// Listen to benefit grant webhook
|
|
311
|
+
app.post('/webhook/polar', async (req, res) => {
|
|
312
|
+
const event = validateEvent(req.body, req.headers, secret);
|
|
313
|
+
|
|
314
|
+
if (event.type === 'benefit_grant.created') {
|
|
315
|
+
const grant = event.data;
|
|
316
|
+
|
|
317
|
+
if (grant.benefit.type === 'github_repository') {
|
|
318
|
+
// Update user's GitHub access in your system
|
|
319
|
+
await updateGitHubAccess(grant.customer.external_id, true);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
res.json({ received: true });
|
|
324
|
+
});
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### Discord Role Sync
|
|
328
|
+
```typescript
|
|
329
|
+
// Monitor benefit grants
|
|
330
|
+
if (event.type === 'benefit_grant.created') {
|
|
331
|
+
const grant = event.data;
|
|
332
|
+
|
|
333
|
+
if (grant.benefit.type === 'discord') {
|
|
334
|
+
// Notify user to connect Discord
|
|
335
|
+
await sendDiscordInvite(grant.customer.email);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
if (event.type === 'benefit_grant.revoked') {
|
|
340
|
+
const grant = event.data;
|
|
341
|
+
|
|
342
|
+
if (grant.benefit.type === 'discord') {
|
|
343
|
+
// Roles removed automatically by Polar
|
|
344
|
+
await notifyRoleRemoval(grant.customer.external_id);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
## Best Practices
|
|
350
|
+
|
|
351
|
+
1. **Benefit Selection:**
|
|
352
|
+
- Choose appropriate benefit types
|
|
353
|
+
- Consider automation capabilities
|
|
354
|
+
- Plan for revocation scenarios
|
|
355
|
+
|
|
356
|
+
2. **License Keys:**
|
|
357
|
+
- Set appropriate activation limits
|
|
358
|
+
- Monitor usage patterns
|
|
359
|
+
- Provide clear validation errors
|
|
360
|
+
- Allow customers to manage activations
|
|
361
|
+
|
|
362
|
+
3. **GitHub Access:**
|
|
363
|
+
- Set minimum required permissions
|
|
364
|
+
- Use separate repos for different tiers
|
|
365
|
+
- Monitor repository access
|
|
366
|
+
- Communicate access removal
|
|
367
|
+
|
|
368
|
+
4. **Discord Roles:**
|
|
369
|
+
- Clear role hierarchy
|
|
370
|
+
- Meaningful role names
|
|
371
|
+
- Separate roles per product tier
|
|
372
|
+
- Welcome messages for new members
|
|
373
|
+
|
|
374
|
+
5. **Files:**
|
|
375
|
+
- Organize files clearly
|
|
376
|
+
- Provide README/instructions
|
|
377
|
+
- Keep files updated
|
|
378
|
+
- Version control important files
|
|
379
|
+
|
|
380
|
+
6. **Credits:**
|
|
381
|
+
- Clear credit value communication
|
|
382
|
+
- Usage tracking and display
|
|
383
|
+
- Alerts near depletion
|
|
384
|
+
- Easy credit top-up
|
|
385
|
+
|
|
386
|
+
7. **Custom Benefits:**
|
|
387
|
+
- Clear, actionable instructions
|
|
388
|
+
- Provide contact information
|
|
389
|
+
- Set expectations for timing
|
|
390
|
+
- Track manual fulfillment
|
|
391
|
+
|
|
392
|
+
8. **Customer Communication:**
|
|
393
|
+
- Welcome email with benefit access info
|
|
394
|
+
- Instructions for each benefit type
|
|
395
|
+
- Support contact for issues
|
|
396
|
+
- Revocation warnings before cancellation
|