@cashfreepayments/agent-skills 0.0.1

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.
Files changed (44) hide show
  1. package/README.md +214 -0
  2. package/bin/cashfree.js +2 -0
  3. package/dist/config.d.ts +50 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/config.js +24 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/generators/index.d.ts +2 -0
  8. package/dist/generators/index.d.ts.map +1 -0
  9. package/dist/generators/index.js +2 -0
  10. package/dist/generators/index.js.map +1 -0
  11. package/dist/generators/utils.d.ts +14 -0
  12. package/dist/generators/utils.d.ts.map +1 -0
  13. package/dist/generators/utils.js +34 -0
  14. package/dist/generators/utils.js.map +1 -0
  15. package/dist/index.d.ts +2 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +156 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/templates/crossBorder.d.ts +5 -0
  20. package/dist/templates/crossBorder.d.ts.map +1 -0
  21. package/dist/templates/crossBorder.js +10 -0
  22. package/dist/templates/crossBorder.js.map +1 -0
  23. package/dist/templates/crossBorder.md +264 -0
  24. package/dist/templates/payouts.d.ts +5 -0
  25. package/dist/templates/payouts.d.ts.map +1 -0
  26. package/dist/templates/payouts.js +10 -0
  27. package/dist/templates/payouts.js.map +1 -0
  28. package/dist/templates/payouts.md +332 -0
  29. package/dist/templates/pg.d.ts +5 -0
  30. package/dist/templates/pg.d.ts.map +1 -0
  31. package/dist/templates/pg.js +10 -0
  32. package/dist/templates/pg.js.map +1 -0
  33. package/dist/templates/pg.md +501 -0
  34. package/dist/templates/secure-id.d.ts +5 -0
  35. package/dist/templates/secure-id.d.ts.map +1 -0
  36. package/dist/templates/secure-id.js +10 -0
  37. package/dist/templates/secure-id.js.map +1 -0
  38. package/dist/templates/secure-id.md +215 -0
  39. package/dist/templates/subscriptions.d.ts +5 -0
  40. package/dist/templates/subscriptions.d.ts.map +1 -0
  41. package/dist/templates/subscriptions.js +10 -0
  42. package/dist/templates/subscriptions.js.map +1 -0
  43. package/dist/templates/subscriptions.md +193 -0
  44. package/package.json +49 -0
package/README.md ADDED
@@ -0,0 +1,214 @@
1
+ # Cashfree Agent Skills CLI
2
+
3
+ Add Cashfree Payments product-specific skills to your AI coding assistant projects.
4
+
5
+ ## Quick Start
6
+
7
+ ```bash
8
+ # Add Payment Gateway skills
9
+ npx @cashfreepayments/agent-skills add pg
10
+
11
+ # Add Secure ID skills
12
+ npx @cashfreepayments/agent-skills add secure-id
13
+
14
+ # Add Subscriptions skills
15
+ npx @cashfreepayments/agent-skills add subscriptions
16
+
17
+ # Add Cross Border skills
18
+ npx @cashfreepayments/agent-skills add cross-border
19
+
20
+ # Add Payouts skills
21
+ npx @cashfreepayments/agent-skills add payouts
22
+ ```
23
+
24
+ ![Cashfree Payments](src/templates/image.png)
25
+
26
+ This will prompt you to select which AI coding assistants to configure:
27
+ - **Cursor** - Creates `.cursor/skills/cashfree/<product>.md`
28
+ - **Claude Code** - Creates `.claude/skills/cashfree/<product>.md`
29
+ - **OpenCode** - Creates `.opencode/skills/cashfree/<product>.md`
30
+ - **VS Code Copilot** - Creates `.github/skills/cashfree/<product>.md`
31
+ - **Gemini CLI** - Creates `.gemini/skills/cashfree/<product>.md`
32
+ - **Antigravity** - Creates `.agent/skills/cashfree/<product>.md`
33
+ - **GitHub Copilot CLI** - Creates `.github/skills/cashfree/<product>.md`
34
+ - **OpenAI Codex CLI** - Creates `.codex/skills/cashfree/<product>.md`
35
+
36
+ ## Products
37
+
38
+ ### Payment Gateway (PG)
39
+ Payment gateway integration, order creation, refunds, payment links, and webhooks.
40
+
41
+ ```bash
42
+ npx @cashfreepayments/agent-skills add pg
43
+ ```
44
+
45
+ ### Secure ID
46
+ Bank account verification, penny drop, UPI verification, and settlement reconciliation.
47
+
48
+ ```bash
49
+ npx @cashfreepayments/agent-skills add secure-id
50
+ ```
51
+
52
+ ### Subscriptions
53
+ Recurring payments, subscription plans, authorization, and customer management.
54
+
55
+ ```bash
56
+ npx @cashfreepayments/agent-skills add subscriptions
57
+ ```
58
+
59
+ ### Cross Border
60
+ International payments, currency conversion, and cross-border transactions.
61
+
62
+ ```bash
63
+ npx @cashfreepayments/agent-skills add cross-border
64
+ ```
65
+
66
+ ### Payouts
67
+ Bulk payouts, vendor payments, and disbursement management.
68
+
69
+ ```bash
70
+ npx @cashfreepayments/agent-skills add payouts
71
+ ```
72
+
73
+ ## Usage
74
+
75
+ ### Interactive Mode
76
+ ```bash
77
+ npx @cashfreepayments/agent-skills add pg
78
+ ```
79
+ You'll be prompted to select which AI assistants to configure.
80
+
81
+ ### Specify Frameworks
82
+ ```bash
83
+ npx @cashfreepayments/agent-skills add pg --frameworks cursor,claude-code,gemini-cli
84
+ ```
85
+
86
+ ### Custom Project Path
87
+ ```bash
88
+ npx @cashfreepayments/agent-skills add secure-id --path /path/to/project
89
+ ```
90
+
91
+ ### Add Multiple Products
92
+ ```bash
93
+ npx @cashfreepayments/agent-skills add pg
94
+ npx @cashfreepayments/agent-skills add secure-id
95
+ npx @cashfreepayments/agent-skills add subscriptions
96
+ npx @cashfreepayments/agent-skills add cross-border
97
+ npx @cashfreepayments/agent-skills add payouts
98
+ ```
99
+
100
+ ## What Gets Created
101
+
102
+ For each product and framework combination, a skill file is created:
103
+
104
+ ### Example: Gemini CLI + Payment Gateway
105
+ ```
106
+ .gemini/skills/cashfree/pg.md
107
+ ```
108
+
109
+ ### Example: Cursor + All Products
110
+ ```
111
+ .cursor/skills/cashfree/pg.md
112
+ .cursor/skills/cashfree/secure-id.md
113
+ .cursor/skills/cashfree/subscriptions.md
114
+ .cursor/skills/cashfree/cross-border.md
115
+ .cursor/skills/cashfree/payouts.md
116
+ ```
117
+
118
+ ## Skill Files
119
+
120
+ Each skill file contains:
121
+ - Product-specific documentation references
122
+ - Common API patterns and use cases
123
+ - Example queries for the AI assistant
124
+ - Best practices for integration
125
+
126
+ ### Payment Gateway (pg.md)
127
+ Guides your AI assistant on:
128
+ - Creating orders and processing payments
129
+ - Handling refunds and settlements
130
+ - Payment links and QR codes
131
+ - Webhook integration
132
+
133
+ ### secure-id (secure-id.md)
134
+ Guides your AI assistant on:
135
+ - Bank account verification APIs
136
+ - Penny drop verification
137
+ - UPI ID verification
138
+ - Transaction reconciliation
139
+
140
+ ### Subscriptions (subscriptions.md)
141
+ Guides your AI assistant on:
142
+ - Creating subscription plans
143
+ - Managing recurring payments
144
+ - Subscription authorization flows
145
+ - Customer subscription lifecycle
146
+
147
+ ### Cross Border (cross-border.md)
148
+ Guides your AI assistant on:
149
+ - International payment processing
150
+ - Currency conversion and rates
151
+ - Cross-border compliance
152
+ - Multi-currency transactions
153
+
154
+ ### Payouts (payouts.md)
155
+ Guides your AI assistant on:
156
+ - Bulk payout processing
157
+ - Vendor payment management
158
+ - Disbursement APIs
159
+ - Payout status tracking
160
+
161
+ ## Framework-Specific Locations
162
+
163
+ | Framework | Skill Location |
164
+ |-----------|----------------|
165
+ | Cursor | `.cursor/skills/cashfree/` |
166
+ | Claude Code | `.claude/skills/cashfree/` |
167
+ | OpenCode | `.opencode/skills/cashfree/` |
168
+ | VS Code Copilot | `.github/skills/cashfree/` |
169
+ | Gemini CLI | `.gemini/skills/cashfree/` |
170
+ | Antigravity | `.agent/skills/cashfree/` |
171
+ | GitHub Copilot CLI | `.github/skills/cashfree/` |
172
+ | OpenAI Codex CLI | `.codex/skills/cashfree/` |
173
+
174
+ ## How AI Assistants Use Skills
175
+
176
+ When you ask your AI coding assistant about Cashfree integration:
177
+
178
+ 1. The assistant reads the relevant skill file
179
+ 2. Uses the guidance to understand your product context
180
+ 3. Provides accurate, product-specific code examples
181
+ 4. References correct API endpoints and parameters
182
+
183
+ ### Example Interactions
184
+
185
+ **With PG skill:**
186
+ ```
187
+ You: "How do I create a payment order?"
188
+ AI: *reads pg.md skill* → Provides order creation API code
189
+ ```
190
+
191
+ **With secure-id skill:**
192
+ ```
193
+ You: "Verify a bank account"
194
+ AI: *reads secure-id.md skill* → Provides bank verification API code
195
+ ```
196
+
197
+ **With Subscriptions skill:**
198
+ ```
199
+ You: "Set up a monthly subscription"
200
+ AI: *reads subscriptions.md skill* → Provides subscription plan creation code
201
+ ```
202
+
203
+ **With Cross Border skill:**
204
+ ```
205
+ You: "How do I process an international payment?"
206
+ AI: *reads cross-border.md skill* → Provides cross-border payment API code
207
+ ```
208
+
209
+ **With Payouts skill:**
210
+ ```
211
+ You: "How do I send bulk payouts?"
212
+ AI: *reads payouts.md skill* → Provides bulk payout API code
213
+ ```
214
+
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import "../dist/index.js";
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Supported frameworks
3
+ */
4
+ export declare const FRAMEWORKS: readonly [{
5
+ readonly name: "Cursor";
6
+ readonly value: "cursor";
7
+ }, {
8
+ readonly name: "Claude Code";
9
+ readonly value: "claude-code";
10
+ }, {
11
+ readonly name: "OpenCode";
12
+ readonly value: "opencode";
13
+ }, {
14
+ readonly name: "VS Code Copilot";
15
+ readonly value: "vscode-copilot";
16
+ }, {
17
+ readonly name: "Gemini CLI";
18
+ readonly value: "gemini-cli";
19
+ }, {
20
+ readonly name: "Antigravity";
21
+ readonly value: "antigravity";
22
+ }, {
23
+ readonly name: "GitHub Copilot CLI";
24
+ readonly value: "copilot-cli";
25
+ }, {
26
+ readonly name: "OpenAI Codex CLI";
27
+ readonly value: "codex";
28
+ }];
29
+ export type Framework = typeof FRAMEWORKS[number]['value'];
30
+ /**
31
+ * Supported Cashfree products
32
+ */
33
+ export declare const PRODUCTS: readonly [{
34
+ readonly name: "Payment Gateway (PG)";
35
+ readonly value: "pg";
36
+ }, {
37
+ readonly name: "Secure ID";
38
+ readonly value: "secure-id";
39
+ }, {
40
+ readonly name: "Subscriptions";
41
+ readonly value: "subscriptions";
42
+ }, {
43
+ readonly name: "Cross Border";
44
+ readonly value: "cross-border";
45
+ }, {
46
+ readonly name: "Payouts";
47
+ readonly value: "payouts";
48
+ }];
49
+ export type Product = typeof PRODUCTS[number]['value'];
50
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;EASb,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;EAMX,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC"}
package/dist/config.js ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Supported frameworks
3
+ */
4
+ export const FRAMEWORKS = [
5
+ { name: 'Cursor', value: 'cursor' },
6
+ { name: 'Claude Code', value: 'claude-code' },
7
+ { name: 'OpenCode', value: 'opencode' },
8
+ { name: 'VS Code Copilot', value: 'vscode-copilot' },
9
+ { name: 'Gemini CLI', value: 'gemini-cli' },
10
+ { name: 'Antigravity', value: 'antigravity' },
11
+ { name: 'GitHub Copilot CLI', value: 'copilot-cli' },
12
+ { name: 'OpenAI Codex CLI', value: 'codex' }
13
+ ];
14
+ /**
15
+ * Supported Cashfree products
16
+ */
17
+ export const PRODUCTS = [
18
+ { name: 'Payment Gateway (PG)', value: 'pg' },
19
+ { name: 'Secure ID', value: 'secure-id' },
20
+ { name: 'Subscriptions', value: 'subscriptions' },
21
+ { name: 'Cross Border', value: 'cross-border' },
22
+ { name: 'Payouts', value: 'payouts' },
23
+ ];
24
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACnC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7C,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACvC,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACpD,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;IAC3C,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7C,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,aAAa,EAAE;IACpD,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE;CACtC,CAAC;AAIX;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACpB,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE;IAC7C,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IACzC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;IACjD,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;IAC/C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;CAC/B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './utils.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './utils.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface GeneratorResult {
2
+ success: boolean;
3
+ files: string[];
4
+ message?: string;
5
+ }
6
+ /**
7
+ * Base generator utilities
8
+ */
9
+ export declare function ensureDir(dirPath: string): Promise<void>;
10
+ export declare function writeTextFile(filePath: string, content: string, overwrite?: boolean): Promise<boolean>;
11
+ export declare function logCreated(file: string): void;
12
+ export declare function logUpdated(file: string): void;
13
+ export declare function createSkillFile(projectPath: string, baseDir: string, productName: string, getTemplate: () => string): Promise<void>;
14
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/generators/utils.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED,wBAAsB,aAAa,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,UAAQ,GAClB,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAsB,eAAe,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,MAAM,GAC1B,OAAO,CAAC,IAAI,CAAC,CAYf"}
@@ -0,0 +1,34 @@
1
+ import fs from 'fs-extra';
2
+ import chalk from 'chalk';
3
+ /**
4
+ * Base generator utilities
5
+ */
6
+ export async function ensureDir(dirPath) {
7
+ await fs.ensureDir(dirPath);
8
+ }
9
+ export async function writeTextFile(filePath, content, overwrite = false) {
10
+ const exists = await fs.pathExists(filePath);
11
+ if (exists && !overwrite) {
12
+ return false;
13
+ }
14
+ await fs.writeFile(filePath, content);
15
+ return !exists;
16
+ }
17
+ export function logCreated(file) {
18
+ console.log(chalk.green(` Created ${file}`));
19
+ }
20
+ export function logUpdated(file) {
21
+ console.log(chalk.yellow(` Updated ${file}`));
22
+ }
23
+ export async function createSkillFile(projectPath, baseDir, productName, getTemplate) {
24
+ const path = await import('path');
25
+ const skillsDir = path.join(projectPath, baseDir, 'skills', 'cashfree');
26
+ const skillPath = path.join(skillsDir, `${productName}.md`);
27
+ await ensureDir(skillsDir);
28
+ const created = await writeTextFile(skillPath, getTemplate());
29
+ if (created) {
30
+ const relativePath = path.join(baseDir, 'skills', 'cashfree', `${productName}.md`);
31
+ logCreated(relativePath);
32
+ }
33
+ }
34
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/generators/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe;IAC3C,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAC/B,QAAgB,EAChB,OAAe,EACf,SAAS,GAAG,KAAK;IAEjB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,CAAC,MAAM,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,WAAmB,EACnB,OAAe,EACf,WAAmB,EACnB,WAAyB;IAEzB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,WAAW,KAAK,CAAC,CAAC;IAE5D,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;IAE3B,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9D,IAAI,OAAO,EAAE,CAAC;QACV,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,WAAW,KAAK,CAAC,CAAC;QACnF,UAAU,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,156 @@
1
+ import { Command } from "commander";
2
+ import inquirer from "inquirer";
3
+ import chalk from "chalk";
4
+ import path from "path";
5
+ import { readFileSync } from "node:fs";
6
+ import { fileURLToPath } from "node:url";
7
+ import { FRAMEWORKS, PRODUCTS, } from "./config.js";
8
+ import { getPGSkillTemplate } from "./templates/pg.js";
9
+ import { getSecureIdSkillTemplate } from "./templates/secure-id.js";
10
+ import { getSubscriptionsSkillTemplate } from "./templates/subscriptions.js";
11
+ import { getCrossBorderSkillTemplate } from "./templates/crossBorder.js";
12
+ import { getPayoutsSkillTemplate } from "./templates/payouts.js";
13
+ import { createSkillFile } from "./generators/utils.js";
14
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
15
+ const pkg = JSON.parse(readFileSync(path.join(__dirname, "..", "package.json"), "utf-8"));
16
+ const program = new Command();
17
+ program
18
+ .name("cashfree")
19
+ .description("CLI to add Cashfree product skills to AI coding assistants")
20
+ .version(pkg.version);
21
+ program
22
+ .command("add")
23
+ .argument("<type>", "Type of product to add (pg, secure-id, subscriptions, cross-border, payouts)")
24
+ .description("Add Cashfree product skill configuration to your project")
25
+ .option("-p, --path <path>", "Project path", process.cwd())
26
+ .option("-f, --frameworks <frameworks>", "Comma-separated list of frameworks")
27
+ .action(async (type, options) => {
28
+ const validProducts = [
29
+ "pg",
30
+ "secure-id",
31
+ "subscriptions",
32
+ "cross-border",
33
+ "payouts",
34
+ ];
35
+ if (!validProducts.includes(type)) {
36
+ console.error(chalk.red(`Error: Unknown product '${type}'. Valid options: pg, secure-id, subscriptions, cross-border, payouts`));
37
+ process.exit(1);
38
+ }
39
+ const product = type;
40
+ // Amazing branding banner
41
+ console.log("\n");
42
+ console.log(chalk.bold.hex("#10b981")(" ██████╗ █████╗ ███████╗██╗ ██╗███████╗██████╗ ███████╗███████╗"));
43
+ console.log(chalk.bold.hex("#10b981")(" ██╔════╝██╔══██╗██╔════╝██║ ██║██╔════╝██╔══██╗██╔════╝██╔════╝"));
44
+ console.log(chalk.bold.hex("#10b981")(" ██║ ███████║███████╗███████║█████╗ ██████╔╝█████╗ █████╗ "));
45
+ console.log(chalk.bold.hex("#10b981")(" ██║ ██╔══██║╚════██║██╔══██║██╔══╝ ██╔══██╗██╔══╝ ██╔══╝ "));
46
+ console.log(chalk.bold.hex("#10b981")(" ╚██████╗██║ ██║███████║██║ ██║██║ ██║ ██║███████╗███████╗"));
47
+ console.log(chalk.bold.hex("#10b981")(" ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝"));
48
+ console.log(chalk.bold.hex("#f59e0b")(" ██████╗ █████╗ ██╗ ██╗███╗ ███╗███████╗███╗ ██╗████████╗███████╗"));
49
+ console.log(chalk.bold.hex("#f59e0b")(" ██╔══██╗██╔══██╗╚██╗ ██╔╝████╗ ████║██╔════╝████╗ ██║╚══██╔══╝██╔════╝"));
50
+ console.log(chalk.bold.hex("#f59e0b")(" ██████╔╝███████║ ╚████╔╝ ██╔████╔██║█████╗ ██╔██╗ ██║ ██║ ███████╗"));
51
+ console.log(chalk.bold.hex("#f59e0b")(" ██╔═══╝ ██╔══██║ ╚██╔╝ ██║╚██╔╝██║██╔══╝ ██║╚██╗██║ ██║ ╚════██║"));
52
+ console.log(chalk.bold.hex("#f59e0b")(" ██║ ██║ ██║ ██║ ██║ ╚═╝ ██║███████╗██║ ╚████║ ██║ ███████║"));
53
+ console.log(chalk.bold.hex("#f59e0b")(" ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝"));
54
+ console.log("\n");
55
+ console.log(chalk.bold.cyan(" 🎯 Agent Skills Setup - Add Product Knowledge to AI Assistants\n"));
56
+ // Get the template function based on product type
57
+ const getTemplateForProduct = (product) => {
58
+ switch (product) {
59
+ case "pg":
60
+ return getPGSkillTemplate;
61
+ case "secure-id":
62
+ return getSecureIdSkillTemplate;
63
+ case "subscriptions":
64
+ return getSubscriptionsSkillTemplate;
65
+ case "cross-border":
66
+ return getCrossBorderSkillTemplate;
67
+ case "payouts":
68
+ return getPayoutsSkillTemplate;
69
+ default:
70
+ throw new Error(`No template found for product: ${product}`);
71
+ }
72
+ };
73
+ const productName = PRODUCTS.find((p) => p.value === product)?.name || product;
74
+ let selectedFrameworks;
75
+ if (options.frameworks) {
76
+ // Use provided frameworks
77
+ selectedFrameworks = options.frameworks
78
+ .split(",")
79
+ .map((f) => f.trim());
80
+ }
81
+ else {
82
+ // Interactive selection
83
+ const answers = await inquirer.prompt([
84
+ {
85
+ type: "checkbox",
86
+ name: "frameworks",
87
+ message: `Select AI coding assistants to configure for ${productName}:`,
88
+ choices: FRAMEWORKS.map((f) => ({
89
+ name: f.name,
90
+ value: f.value,
91
+ checked: false,
92
+ })),
93
+ validate: (input) => {
94
+ if (input.length === 0) {
95
+ return "Please select at least one framework.";
96
+ }
97
+ return true;
98
+ },
99
+ pageSize: 10,
100
+ },
101
+ ]);
102
+ selectedFrameworks = answers.frameworks;
103
+ }
104
+ const projectPath = path.resolve(options.path);
105
+ console.log(chalk.dim(`\nProject path: ${projectPath}`));
106
+ console.log(chalk.dim(`Product: ${productName}\n`));
107
+ // Generate configurations for each selected framework
108
+ for (const framework of selectedFrameworks) {
109
+ console.log(chalk.blue(`\n📦 Configuring ${getFrameworkName(framework)}...`));
110
+ try {
111
+ const baseDir = getFrameworkBaseDir(framework);
112
+ await createSkillFile(projectPath, baseDir, product, getTemplateForProduct(product));
113
+ }
114
+ catch (error) {
115
+ console.log(chalk.red(` Error: ${error instanceof Error ? error.message : "Unknown error"}`));
116
+ }
117
+ }
118
+ console.log(chalk.bold.green(`\n✅ Cashfree ${productName} configuration complete!\n`));
119
+ console.log(chalk.dim(`The skill files have been created for ${productName}.`));
120
+ console.log(chalk.dim("Use them to search for API references, code examples, and guides.\n"));
121
+ });
122
+ function getFrameworkName(framework) {
123
+ const found = FRAMEWORKS.find((f) => f.value === framework);
124
+ return found?.name || framework;
125
+ }
126
+ function getFrameworkBaseDir(framework) {
127
+ switch (framework) {
128
+ case "cursor":
129
+ return ".cursor";
130
+ case "claude-code":
131
+ return ".claude";
132
+ case "opencode":
133
+ return ".opencode";
134
+ case "vscode-copilot":
135
+ return ".github";
136
+ case "gemini-cli":
137
+ return ".gemini";
138
+ case "antigravity":
139
+ return ".agent";
140
+ case "copilot-cli":
141
+ return ".github";
142
+ case "codex":
143
+ return ".codex";
144
+ default:
145
+ return ".agent";
146
+ }
147
+ }
148
+ // Graceful shutdown
149
+ function handleSignal(signal) {
150
+ console.log(chalk.yellow(`\n\nReceived ${signal}. Exiting gracefully...`));
151
+ process.exit(0);
152
+ }
153
+ process.on("SIGINT", () => handleSignal("SIGINT"));
154
+ process.on("SIGTERM", () => handleSignal("SIGTERM"));
155
+ program.parse();
156
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Cross Border skill template
3
+ */
4
+ export declare function getCrossBorderSkillTemplate(): string;
5
+ //# sourceMappingURL=crossBorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossBorder.d.ts","sourceRoot":"","sources":["../../src/templates/crossBorder.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAGpD"}
@@ -0,0 +1,10 @@
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+ /**
4
+ * Cross Border skill template
5
+ */
6
+ export function getCrossBorderSkillTemplate() {
7
+ const templatePath = path.join(__dirname, "crossBorder.md");
8
+ return fs.readFileSync(templatePath, "utf8");
9
+ }
10
+ //# sourceMappingURL=crossBorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossBorder.js","sourceRoot":"","sources":["../../src/templates/crossBorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAI7B;;GAEG;AACH,MAAM,UAAU,2BAA2B;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC5D,OAAO,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC"}