create-raffles-it 1.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 (150) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +214 -0
  3. package/agents/.agents +105 -0
  4. package/agents/backend-specialist/agent.yaml +21 -0
  5. package/agents/backend-specialist/prompt.md +255 -0
  6. package/agents/code-archaeologist/agent.yaml +13 -0
  7. package/agents/code-archaeologist/prompt.md +98 -0
  8. package/agents/database-architect/agent.yaml +13 -0
  9. package/agents/database-architect/prompt.md +218 -0
  10. package/agents/debugger/agent.yaml +7 -0
  11. package/agents/debugger/prompt.md +219 -0
  12. package/agents/devops-engineer/agent.yaml +16 -0
  13. package/agents/devops-engineer/prompt.md +234 -0
  14. package/agents/documentation-writer/agent.yaml +13 -0
  15. package/agents/documentation-writer/prompt.md +96 -0
  16. package/agents/explorer-agent/agent.yaml +16 -0
  17. package/agents/explorer-agent/prompt.md +65 -0
  18. package/agents/frontend-specialist/agent.yaml +17 -0
  19. package/agents/frontend-specialist/prompt.md +585 -0
  20. package/agents/orchestrator/agent.yaml +21 -0
  21. package/agents/orchestrator/prompt.md +408 -0
  22. package/agents/penetration-tester/agent.yaml +15 -0
  23. package/agents/penetration-tester/prompt.md +180 -0
  24. package/agents/performance-optimizer/agent.yaml +13 -0
  25. package/agents/performance-optimizer/prompt.md +179 -0
  26. package/agents/product-manager/agent.yaml +12 -0
  27. package/agents/product-manager/prompt.md +104 -0
  28. package/agents/product-owner/agent.yaml +12 -0
  29. package/agents/product-owner/prompt.md +87 -0
  30. package/agents/project-planner/agent.yaml +13 -0
  31. package/agents/project-planner/prompt.md +397 -0
  32. package/agents/qa-automation-engineer/agent.yaml +16 -0
  33. package/agents/qa-automation-engineer/prompt.md +95 -0
  34. package/agents/security-auditor/agent.yaml +15 -0
  35. package/agents/security-auditor/prompt.md +162 -0
  36. package/agents/seo-specialist/agent.yaml +13 -0
  37. package/agents/seo-specialist/prompt.md +103 -0
  38. package/agents/test-engineer/agent.yaml +17 -0
  39. package/agents/test-engineer/prompt.md +150 -0
  40. package/bin/commands/help.js +19 -0
  41. package/bin/commands/init.js +125 -0
  42. package/bin/commands/list.js +40 -0
  43. package/bin/index.js +44 -0
  44. package/bin/utils/logger.js +32 -0
  45. package/bin/utils/scaffold.js +114 -0
  46. package/configs/mcp_config.json +24 -0
  47. package/configs/model.yaml +20 -0
  48. package/configs/runtime.yaml +22 -0
  49. package/package.json +56 -0
  50. package/prompts/planning.md +31 -0
  51. package/prompts/reflection.md +21 -0
  52. package/prompts/system.md +24 -0
  53. package/rules/GEMINI.md +273 -0
  54. package/skills/api-patterns/SKILL.md +81 -0
  55. package/skills/api-patterns/api-style.md +42 -0
  56. package/skills/api-patterns/auth.md +24 -0
  57. package/skills/api-patterns/documentation.md +26 -0
  58. package/skills/api-patterns/graphql.md +41 -0
  59. package/skills/api-patterns/rate-limiting.md +31 -0
  60. package/skills/api-patterns/response.md +37 -0
  61. package/skills/api-patterns/rest.md +40 -0
  62. package/skills/api-patterns/scripts/api_validator.py +211 -0
  63. package/skills/api-patterns/security-testing.md +122 -0
  64. package/skills/api-patterns/skill.yaml +3 -0
  65. package/skills/api-patterns/trpc.md +41 -0
  66. package/skills/api-patterns/versioning.md +22 -0
  67. package/skills/architecture/SKILL.md +55 -0
  68. package/skills/architecture/context-discovery.md +43 -0
  69. package/skills/architecture/examples.md +94 -0
  70. package/skills/architecture/pattern-selection.md +68 -0
  71. package/skills/architecture/patterns-reference.md +50 -0
  72. package/skills/architecture/skill.yaml +3 -0
  73. package/skills/architecture/trade-off-analysis.md +77 -0
  74. package/skills/brainstorming/SKILL.md +163 -0
  75. package/skills/brainstorming/dynamic-questioning.md +350 -0
  76. package/skills/brainstorming/skill.yaml +3 -0
  77. package/skills/clean-code/SKILL.md +201 -0
  78. package/skills/clean-code/skill.yaml +3 -0
  79. package/skills/code-review-checklist/SKILL.md +109 -0
  80. package/skills/code-review-checklist/skill.yaml +3 -0
  81. package/skills/database-design/SKILL.md +52 -0
  82. package/skills/database-design/database-selection.md +43 -0
  83. package/skills/database-design/indexing.md +39 -0
  84. package/skills/database-design/migrations.md +48 -0
  85. package/skills/database-design/optimization.md +36 -0
  86. package/skills/database-design/orm-selection.md +30 -0
  87. package/skills/database-design/schema-design.md +56 -0
  88. package/skills/database-design/scripts/schema_validator.py +172 -0
  89. package/skills/database-design/skill.yaml +3 -0
  90. package/skills/frontend-design/SKILL.md +452 -0
  91. package/skills/frontend-design/animation-guide.md +331 -0
  92. package/skills/frontend-design/color-system.md +311 -0
  93. package/skills/frontend-design/decision-trees.md +418 -0
  94. package/skills/frontend-design/motion-graphics.md +306 -0
  95. package/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  96. package/skills/frontend-design/scripts/ux_audit.py +722 -0
  97. package/skills/frontend-design/skill.yaml +3 -0
  98. package/skills/frontend-design/typography-system.md +345 -0
  99. package/skills/frontend-design/ux-psychology.md +1116 -0
  100. package/skills/frontend-design/visual-effects.md +383 -0
  101. package/skills/mcp-builder/SKILL.md +176 -0
  102. package/skills/mcp-builder/skill.yaml +3 -0
  103. package/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +351 -0
  104. package/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
  105. package/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
  106. package/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
  107. package/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  108. package/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
  109. package/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
  110. package/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
  111. package/skills/nextjs-react-expert/9-cache-components.md +103 -0
  112. package/skills/nextjs-react-expert/SKILL.md +293 -0
  113. package/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  114. package/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  115. package/skills/nextjs-react-expert/skill.yaml +3 -0
  116. package/skills/nodejs-best-practices/SKILL.md +333 -0
  117. package/skills/nodejs-best-practices/skill.yaml +3 -0
  118. package/skills/parallel-agents/SKILL.md +175 -0
  119. package/skills/parallel-agents/skill.yaml +3 -0
  120. package/skills/powershell-windows/SKILL.md +167 -0
  121. package/skills/powershell-windows/skill.yaml +3 -0
  122. package/skills/python-patterns/SKILL.md +441 -0
  123. package/skills/python-patterns/skill.yaml +3 -0
  124. package/skills/seo-fundamentals/SKILL.md +129 -0
  125. package/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  126. package/skills/seo-fundamentals/skill.yaml +3 -0
  127. package/skills/systematic-debugging/SKILL.md +109 -0
  128. package/skills/systematic-debugging/skill.yaml +3 -0
  129. package/skills/tdd-workflow/SKILL.md +149 -0
  130. package/skills/tdd-workflow/skill.yaml +3 -0
  131. package/skills/vulnerability-scanner/SKILL.md +276 -0
  132. package/skills/vulnerability-scanner/checklists.md +121 -0
  133. package/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  134. package/skills/vulnerability-scanner/skill.yaml +3 -0
  135. package/skills/web-design-guidelines/SKILL.md +57 -0
  136. package/skills/web-design-guidelines/skill.yaml +3 -0
  137. package/skills/webapp-testing/SKILL.md +187 -0
  138. package/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  139. package/skills/webapp-testing/skill.yaml +3 -0
  140. package/workflows/brainstorm.md +113 -0
  141. package/workflows/create.md +59 -0
  142. package/workflows/debug.md +103 -0
  143. package/workflows/deploy.md +176 -0
  144. package/workflows/enhance.md +63 -0
  145. package/workflows/orchestrate.md +237 -0
  146. package/workflows/plan.md +89 -0
  147. package/workflows/preview.md +81 -0
  148. package/workflows/status.md +86 -0
  149. package/workflows/test.md +144 -0
  150. package/workflows/ui-ux-pro-max.md +296 -0
@@ -0,0 +1,103 @@
1
+ # SEO Specialist
2
+
3
+ Expert in SEO and GEO (Generative Engine Optimization) for traditional and AI-powered search engines.
4
+
5
+ ## Core Philosophy
6
+
7
+ > "Content for humans, structured for machines. Win both Google and ChatGPT."
8
+
9
+ ## Your Mindset
10
+
11
+ - **User-first**: Content quality over tricks
12
+ - **Dual-target**: SEO + GEO simultaneously
13
+ - **Data-driven**: Measure, test, iterate
14
+ - **Future-proof**: AI search is growing
15
+
16
+ ---
17
+
18
+ ## SEO vs GEO
19
+
20
+ | Aspect | SEO | GEO |
21
+ |--------|-----|-----|
22
+ | Goal | Rank #1 in Google | Be cited in AI responses |
23
+ | Platform | Google, Bing | ChatGPT, Claude, Perplexity |
24
+ | Metrics | Rankings, CTR | Citation rate, appearances |
25
+ | Focus | Keywords, backlinks | Entities, data, credentials |
26
+
27
+ ---
28
+
29
+ ## Core Web Vitals Targets
30
+
31
+ | Metric | Good | Poor |
32
+ |--------|------|------|
33
+ | **LCP** | < 2.5s | > 4.0s |
34
+ | **INP** | < 200ms | > 500ms |
35
+ | **CLS** | < 0.1 | > 0.25 |
36
+
37
+ ---
38
+
39
+ ## E-E-A-T Framework
40
+
41
+ | Principle | How to Demonstrate |
42
+ |-----------|-------------------|
43
+ | **Experience** | First-hand knowledge, real stories |
44
+ | **Expertise** | Credentials, certifications |
45
+ | **Authoritativeness** | Backlinks, mentions, recognition |
46
+ | **Trustworthiness** | HTTPS, transparency, reviews |
47
+
48
+ ---
49
+
50
+ ## Technical SEO Checklist
51
+
52
+ - [ ] XML sitemap submitted
53
+ - [ ] robots.txt configured
54
+ - [ ] Canonical tags correct
55
+ - [ ] HTTPS enabled
56
+ - [ ] Mobile-friendly
57
+ - [ ] Core Web Vitals passing
58
+ - [ ] Schema markup valid
59
+
60
+ ## Content SEO Checklist
61
+
62
+ - [ ] Title tags optimized (50-60 chars)
63
+ - [ ] Meta descriptions (150-160 chars)
64
+ - [ ] H1-H6 hierarchy correct
65
+ - [ ] Internal linking structure
66
+ - [ ] Image alt texts
67
+
68
+ ## GEO Checklist
69
+
70
+ - [ ] FAQ sections present
71
+ - [ ] Author credentials visible
72
+ - [ ] Statistics with sources
73
+ - [ ] Clear definitions
74
+ - [ ] Expert quotes attributed
75
+ - [ ] "Last updated" timestamps
76
+
77
+ ---
78
+
79
+ ## Content That Gets Cited
80
+
81
+ | Element | Why AI Cites It |
82
+ |---------|-----------------|
83
+ | Original statistics | Unique data |
84
+ | Expert quotes | Authority |
85
+ | Clear definitions | Extractable |
86
+ | Step-by-step guides | Useful |
87
+ | Comparison tables | Structured |
88
+
89
+ ---
90
+
91
+ ## When You Should Be Used
92
+
93
+ - SEO audits
94
+ - Core Web Vitals optimization
95
+ - E-E-A-T improvement
96
+ - AI search visibility
97
+ - Schema markup implementation
98
+ - Content optimization
99
+ - GEO strategy
100
+
101
+ ---
102
+
103
+ > **Remember:** The best SEO is great content that answers questions clearly and authoritatively.
@@ -0,0 +1,17 @@
1
+ name: test-engineer
2
+ description: Expert in testing, TDD, and test automation. Use for writing tests, improving coverage, debugging test failures. Triggers on test, spec, coverage, jest, pytest, playwright, e2e, unit test.
3
+ model: claude-sonnet-4-6
4
+ tools:
5
+ - Read
6
+ - Grep
7
+ - Glob
8
+ - Bash
9
+ - Edit
10
+ - Write
11
+ skills:
12
+ - clean-code
13
+ - testing-patterns
14
+ - tdd-workflow
15
+ - webapp-testing
16
+ - code-review-checklist
17
+ - lint-and-validate
@@ -0,0 +1,150 @@
1
+ # Test Engineer
2
+
3
+ Expert in test automation, TDD, and comprehensive testing strategies.
4
+
5
+ ## Core Philosophy
6
+
7
+ > "Find what the developer forgot. Test behavior, not implementation."
8
+
9
+ ## Your Mindset
10
+
11
+ - **Proactive**: Discover untested paths
12
+ - **Systematic**: Follow testing pyramid
13
+ - **Behavior-focused**: Test what matters to users
14
+ - **Quality-driven**: Coverage is a guide, not a goal
15
+
16
+ ---
17
+
18
+ ## Testing Pyramid
19
+
20
+ ```
21
+ /\ E2E (Few)
22
+ / \ Critical user flows
23
+ /----\
24
+ / \ Integration (Some)
25
+ /--------\ API, DB, services
26
+ / \
27
+ /------------\ Unit (Many)
28
+ Functions, logic
29
+ ```
30
+
31
+ ---
32
+
33
+ ## Framework Selection
34
+
35
+ | Language | Unit | Integration | E2E |
36
+ |----------|------|-------------|-----|
37
+ | TypeScript | Vitest, Jest | Supertest | Playwright |
38
+ | Python | Pytest | Pytest | Playwright |
39
+ | React | Testing Library | MSW | Playwright |
40
+
41
+ ---
42
+
43
+ ## TDD Workflow
44
+
45
+ ```
46
+ 🔴 RED → Write failing test
47
+ 🟢 GREEN → Minimal code to pass
48
+ 🔵 REFACTOR → Improve code quality
49
+ ```
50
+
51
+ ---
52
+
53
+ ## Test Type Selection
54
+
55
+ | Scenario | Test Type |
56
+ |----------|-----------|
57
+ | Business logic | Unit |
58
+ | API endpoints | Integration |
59
+ | User flows | E2E |
60
+ | Components | Component/Unit |
61
+
62
+ ---
63
+
64
+ ## AAA Pattern
65
+
66
+ | Step | Purpose |
67
+ |------|---------|
68
+ | **Arrange** | Set up test data |
69
+ | **Act** | Execute code |
70
+ | **Assert** | Verify outcome |
71
+
72
+ ---
73
+
74
+ ## Coverage Strategy
75
+
76
+ | Area | Target |
77
+ |------|--------|
78
+ | Critical paths | 100% |
79
+ | Business logic | 80%+ |
80
+ | Utilities | 70%+ |
81
+ | UI layout | As needed |
82
+
83
+ ---
84
+
85
+ ## Deep Audit Approach
86
+
87
+ ### Discovery
88
+
89
+ | Target | Find |
90
+ |--------|------|
91
+ | Routes | Scan app directories |
92
+ | APIs | Grep HTTP methods |
93
+ | Components | Find UI files |
94
+
95
+ ### Systematic Testing
96
+
97
+ 1. Map all endpoints
98
+ 2. Verify responses
99
+ 3. Cover critical paths
100
+
101
+ ---
102
+
103
+ ## Mocking Principles
104
+
105
+ | Mock | Don't Mock |
106
+ |------|------------|
107
+ | External APIs | Code under test |
108
+ | Database (unit) | Simple deps |
109
+ | Network | Pure functions |
110
+
111
+ ---
112
+
113
+ ## Review Checklist
114
+
115
+ - [ ] Coverage 80%+ on critical paths
116
+ - [ ] AAA pattern followed
117
+ - [ ] Tests are isolated
118
+ - [ ] Descriptive naming
119
+ - [ ] Edge cases covered
120
+ - [ ] External deps mocked
121
+ - [ ] Cleanup after tests
122
+ - [ ] Fast unit tests (<100ms)
123
+
124
+ ---
125
+
126
+ ## Anti-Patterns
127
+
128
+ | ❌ Don't | ✅ Do |
129
+ |----------|-------|
130
+ | Test implementation | Test behavior |
131
+ | Multiple asserts | One per test |
132
+ | Dependent tests | Independent |
133
+ | Ignore flaky | Fix root cause |
134
+ | Skip cleanup | Always reset |
135
+
136
+ ---
137
+
138
+ ## When You Should Be Used
139
+
140
+ - Writing unit tests
141
+ - TDD implementation
142
+ - E2E test creation
143
+ - Improving coverage
144
+ - Debugging test failures
145
+ - Test infrastructure setup
146
+ - API integration tests
147
+
148
+ ---
149
+
150
+ > **Remember:** Good tests are documentation. They explain what the code should do.
@@ -0,0 +1,19 @@
1
+ 'use strict'
2
+
3
+ const { sep, log, c } = require('../utils/logger')
4
+
5
+ module.exports = function help() {
6
+ sep()
7
+ log(`\n ${c.bold}Usage:${c.reset}\n`)
8
+ log(` npx raffles-it-kit Interactive project setup`)
9
+ log(` npx raffles-it-kit init Same as above`)
10
+ log(` npx raffles-it-kit init ${c.cyan}<name>${c.reset} Init with project name`)
11
+ log(` npx raffles-it-kit list List all available agents`)
12
+ log(` npx raffles-it-kit help Show this help`)
13
+ log(` npx raffles-it-kit --version Show version`)
14
+ log(`\n ${c.bold}Examples:${c.reset}\n`)
15
+ log(` npx raffles-it-kit init my-saas-app`)
16
+ log(` npx raffles-it-kit init`)
17
+ log(`\n ${c.bold}Docs:${c.reset}\n`)
18
+ log(` ${c.cyan}https://raffles-agent-skills-kit.vercel.app/en${c.reset}\n`)
19
+ }
@@ -0,0 +1,125 @@
1
+ 'use strict'
2
+
3
+ const path = require('path')
4
+ const fs = require('fs-extra')
5
+ const inquirer = require('inquirer')
6
+ const { sep, banner, success, info, warn, log, dim, c } = require('../utils/logger')
7
+ const { generatePackageJson, generateReadme, copyDir } = require('../utils/scaffold')
8
+
9
+ const PKG_DIR = path.join(__dirname, '../..')
10
+
11
+ const SCAFFOLD_TYPES = {
12
+ full: {
13
+ label: 'Full project (agents + skills + workflows + configs + prompts + rules)',
14
+ dirs: ['agents', 'configs', 'prompts', 'rules', 'skills', 'workflows'],
15
+ extras: ['package.json', 'README.md'],
16
+ },
17
+ agents: {
18
+ label: 'Only agents (agent definitions only)',
19
+ dirs: ['agents'],
20
+ extras: [],
21
+ },
22
+ skills: {
23
+ label: 'Only skills (SKILL.md packs only)',
24
+ dirs: ['skills'],
25
+ extras: [],
26
+ },
27
+ }
28
+
29
+ module.exports = async function init(args) {
30
+ banner()
31
+
32
+ // ── 1. Project name ──────────────────────────────────────────────────────
33
+ let projectName = args[0]
34
+
35
+ if (!projectName) {
36
+ const answer = await inquirer.prompt([{
37
+ type: 'input',
38
+ name: 'projectName',
39
+ message: 'Project name:',
40
+ default: 'my-ai-project',
41
+ validate: v => v.trim().length > 0 ? true : 'Project name cannot be empty',
42
+ }])
43
+ projectName = answer.projectName.trim()
44
+ }
45
+
46
+ // ── 2. What to scaffold ──────────────────────────────────────────────────
47
+ const { scaffoldKey } = await inquirer.prompt([{
48
+ type: 'list',
49
+ name: 'scaffoldKey',
50
+ message: 'What do you want to create?',
51
+ choices: Object.entries(SCAFFOLD_TYPES).map(([value, { label }]) => ({
52
+ name: label,
53
+ value,
54
+ })),
55
+ }])
56
+
57
+ const config = SCAFFOLD_TYPES[scaffoldKey]
58
+ const target = path.join(process.cwd(), projectName)
59
+
60
+ // ── 3. Overwrite check ───────────────────────────────────────────────────
61
+ if (fs.existsSync(target)) {
62
+ const { overwrite } = await inquirer.prompt([{
63
+ type: 'confirm',
64
+ name: 'overwrite',
65
+ message: `Directory "${projectName}" already exists. Overwrite it?`,
66
+ default: false,
67
+ }])
68
+ if (!overwrite) {
69
+ warn('Aborted — nothing was changed.')
70
+ process.exit(0)
71
+ }
72
+ }
73
+
74
+ // ── 4. Scaffold ──────────────────────────────────────────────────────────
75
+ log()
76
+ sep()
77
+ log()
78
+
79
+ info(`Creating project "${c.bold}${projectName}${c.reset}"...`)
80
+ fs.ensureDirSync(target)
81
+ success('Directory created')
82
+
83
+ for (const dir of config.dirs) {
84
+ info(`Copying ${dir}/...`)
85
+ const src = path.join(PKG_DIR, dir)
86
+ const dest = path.join(target, dir)
87
+ if (fs.existsSync(src)) {
88
+ const n = copyDir(src, dest)
89
+ success(`${dir}/ copied ${c.dim}(${n} files)${c.reset}`)
90
+ } else {
91
+ warn(`${dir}/ not found in package — skipping`)
92
+ }
93
+ }
94
+
95
+ if (config.extras.includes('package.json')) {
96
+ info('Generating package.json...')
97
+ generatePackageJson(target, projectName)
98
+ success('package.json generated')
99
+ }
100
+
101
+ if (config.extras.includes('README.md')) {
102
+ info('Generating README.md...')
103
+ generateReadme(target, projectName)
104
+ success('README.md generated')
105
+ }
106
+
107
+ // ── 5. Done ──────────────────────────────────────────────────────────────
108
+ log()
109
+ sep()
110
+ log()
111
+ log(` ${c.bold}${c.green}✔ Done!${c.reset} "${projectName}" is ready.\n`)
112
+
113
+ log(` ${c.bold}Next steps:${c.reset}\n`)
114
+ log(` ${c.cyan}cd ${projectName}${c.reset}`)
115
+
116
+ if (scaffoldKey === 'full') {
117
+ log(`\n Open in Claude Code:`)
118
+ log(` ${c.cyan}claude .${c.reset}\n`)
119
+ log(` Or open in Cursor / Windsurf — agents are auto-detected.`)
120
+ }
121
+
122
+ log()
123
+ dim(`Docs https://raffles-agent-skills-kit.vercel.app/en`)
124
+ log()
125
+ }
@@ -0,0 +1,40 @@
1
+ 'use strict'
2
+
3
+ const path = require('path')
4
+ const fs = require('fs')
5
+ const { sep, log, c } = require('../utils/logger')
6
+
7
+ const PKG_DIR = path.join(__dirname, '../..')
8
+
9
+ module.exports = function list() {
10
+ const agentsDir = path.join(PKG_DIR, 'agents')
11
+
12
+ sep()
13
+ log(`\n ${c.bold}Available Agents${c.reset}\n`)
14
+ sep()
15
+
16
+ if (!fs.existsSync(agentsDir)) {
17
+ log(` ${c.red}No agents directory found.${c.reset}\n`)
18
+ return
19
+ }
20
+
21
+ const slugs = fs.readdirSync(agentsDir).filter(f =>
22
+ fs.statSync(path.join(agentsDir, f)).isDirectory()
23
+ )
24
+
25
+ for (const slug of slugs) {
26
+ try {
27
+ const raw = fs.readFileSync(path.join(agentsDir, slug, 'agent.yaml'), 'utf-8')
28
+ const model = (raw.match(/^model:\s*(.+)/m) || [])[1]?.trim() || ''
29
+ const isOpus = model.includes('opus')
30
+ const badge = isOpus
31
+ ? `${c.yellow}◆ Opus${c.reset}`
32
+ : `${c.cyan}● Sonnet${c.reset}`
33
+ log(` ${c.green}${slug.padEnd(30)}${c.reset}${badge}`)
34
+ } catch {
35
+ log(` ${c.dim}${slug}${c.reset}`)
36
+ }
37
+ }
38
+
39
+ log(`\n ${c.dim}Total: ${slugs.length} agents${c.reset}\n`)
40
+ }
package/bin/index.js ADDED
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env node
2
+ 'use strict'
3
+
4
+ const pkg = require('../package.json')
5
+
6
+ const args = process.argv.slice(2)
7
+ const cmd = args[0]
8
+
9
+ function run(fn) {
10
+ Promise.resolve(fn()).catch(err => {
11
+ console.error('\n \x1b[31m' + (err.message || err) + '\x1b[0m\n')
12
+ process.exit(1)
13
+ })
14
+ }
15
+
16
+ switch (cmd) {
17
+ case undefined:
18
+ run(() => require('./commands/init')(args))
19
+ break
20
+
21
+ case 'init':
22
+ run(() => require('./commands/init')(args.slice(1)))
23
+ break
24
+
25
+ case 'list':
26
+ require('./commands/list')()
27
+ break
28
+
29
+ case '--version':
30
+ case '-v':
31
+ console.log(pkg.version)
32
+ break
33
+
34
+ case 'help':
35
+ case '--help':
36
+ case '-h':
37
+ require('./commands/help')()
38
+ break
39
+
40
+ default:
41
+ console.error(`\n \x1b[31mUnknown command: ${cmd}\x1b[0m\n`)
42
+ require('./commands/help')()
43
+ process.exit(1)
44
+ }
@@ -0,0 +1,32 @@
1
+ 'use strict'
2
+
3
+ const pkg = require('../../package.json')
4
+
5
+ const c = {
6
+ reset: '\x1b[0m',
7
+ bold: '\x1b[1m',
8
+ dim: '\x1b[2m',
9
+ blue: '\x1b[34m',
10
+ cyan: '\x1b[36m',
11
+ green: '\x1b[32m',
12
+ yellow: '\x1b[33m',
13
+ red: '\x1b[31m',
14
+ }
15
+
16
+ const sep = () => console.log(c.dim + '─'.repeat(56) + c.reset)
17
+
18
+ const banner = () => {
19
+ sep()
20
+ console.log(`\n ${c.bold}${c.blue}Raffles IT Kit${c.reset} ${c.dim}v${pkg.version}${c.reset}`)
21
+ console.log(` ${c.dim}AI Agent Enhancement Toolkit${c.reset}\n`)
22
+ sep()
23
+ }
24
+
25
+ const success = (msg) => console.log(` ${c.green}✔${c.reset} ${msg}`)
26
+ const info = (msg) => console.log(` ${c.blue}◆${c.reset} ${msg}`)
27
+ const warn = (msg) => console.log(` ${c.yellow}⚠${c.reset} ${msg}`)
28
+ const error = (msg) => console.log(` ${c.red}✖${c.reset} ${msg}`)
29
+ const log = (msg = '') => console.log(msg)
30
+ const dim = (msg) => console.log(` ${c.dim}${msg}${c.reset}`)
31
+
32
+ module.exports = { sep, banner, success, info, warn, error, log, dim, c }
@@ -0,0 +1,114 @@
1
+ 'use strict'
2
+
3
+ const path = require('path')
4
+ const fs = require('fs-extra')
5
+
6
+ /**
7
+ * Generate a package.json in the target directory.
8
+ */
9
+ function generatePackageJson(targetDir, projectName) {
10
+ const safeName = projectName.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-_]/g, '')
11
+ const content = {
12
+ name: safeName,
13
+ version: '1.0.0',
14
+ description: `AI agent project scaffolded with raffles-it-kit`,
15
+ scripts: {
16
+ start: 'echo "Add your start script here"',
17
+ dev: 'echo "Add your dev script here"',
18
+ },
19
+ keywords: ['ai', 'agents', 'claude', 'raffles-it-kit'],
20
+ license: 'MIT',
21
+ }
22
+ fs.writeJsonSync(path.join(targetDir, 'package.json'), content, { spaces: 2 })
23
+ }
24
+
25
+ /**
26
+ * Generate a README.md in the target directory.
27
+ */
28
+ function generateReadme(targetDir, projectName) {
29
+ const content = `# ${projectName}
30
+
31
+ > AI Agent project scaffolded with [Raffles IT Kit](https://raffles-agent-skills-kit.vercel.app/en)
32
+
33
+ ## Getting Started
34
+
35
+ \`\`\`bash
36
+ # Open in Claude Code
37
+ claude .
38
+
39
+ # Or open in Cursor / Windsurf — agents are auto-detected from the workspace
40
+ \`\`\`
41
+
42
+ ## Project Structure
43
+
44
+ \`\`\`
45
+ ${projectName}/
46
+ ├── agents/ ← 19 specialist AI agent definitions
47
+ ├── skills/ ← 19 modular skill packs (SKILL.md files)
48
+ ├── workflows/ ← 11 slash command workflow definitions
49
+ ├── configs/ ← Model & runtime configuration
50
+ ├── prompts/ ← Shared prompt templates
51
+ └── rules/ ← Editor-specific rules (Gemini, etc.)
52
+ \`\`\`
53
+
54
+ ## Usage
55
+
56
+ Agents are **automatically selected** based on your request. No configuration needed.
57
+
58
+ \`\`\`
59
+ You: "Create a responsive product card with Tailwind CSS and dark mode"
60
+ AI: Routing to frontend-specialist...
61
+ Loading skills: react-best-practices, tailwind-patterns, frontend-design
62
+
63
+ You: "Build a JWT auth API with refresh tokens and rate limiting"
64
+ AI: Routing to backend-specialist...
65
+ Loading skills: api-patterns, nodejs-best-practices, clean-code
66
+
67
+ You: "Our login endpoint returns 500 only in production"
68
+ AI: Routing to debugger...
69
+ Loading skills: systematic-debugging
70
+ \`\`\`
71
+
72
+ ## Slash Commands
73
+
74
+ | Command | Description |
75
+ | ---------------- | ------------------------------------------------ |
76
+ | \`/create\` | Scaffold a new feature end-to-end |
77
+ | \`/debug\` | Structured root-cause analysis |
78
+ | \`/plan\` | Break a large task into a sprint plan |
79
+ | \`/test\` | Generate unit, integration, and E2E tests |
80
+ | \`/review\` | Code review: OWASP, performance, conventions |
81
+ | \`/deploy\` | Pre-flight checks → build → deploy → smoke test |
82
+
83
+ ## Resources
84
+
85
+ - [Documentation](https://raffles-agent-skills-kit.vercel.app/en)
86
+ - [Getting Started Guide](https://raffles-agent-skills-kit.vercel.app/en/docs/guide)
87
+ - [npm Package](https://www.npmjs.com/package/raffles-it-kit)
88
+ - [GitHub](https://github.com/HaiTrieu0902/agent-skills-kit)
89
+ `
90
+ fs.writeFileSync(path.join(targetDir, 'README.md'), content)
91
+ }
92
+
93
+ /**
94
+ * Copy a source directory into the target, skipping node_modules and .next.
95
+ */
96
+ function copyDir(src, dest) {
97
+ if (!fs.existsSync(src)) return 0
98
+ fs.ensureDirSync(dest)
99
+ let count = 0
100
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
101
+ if (entry.name === 'node_modules' || entry.name === '.next') continue
102
+ const s = path.join(src, entry.name)
103
+ const d = path.join(dest, entry.name)
104
+ if (entry.isDirectory()) {
105
+ count += copyDir(s, d)
106
+ } else {
107
+ fs.copyFileSync(s, d)
108
+ count++
109
+ }
110
+ }
111
+ return count
112
+ }
113
+
114
+ module.exports = { generatePackageJson, generateReadme, copyDir }
@@ -0,0 +1,24 @@
1
+ {
2
+ "mcpServers": {
3
+ "context7": {
4
+ "command": "npx",
5
+ "args": [
6
+ "-y",
7
+ "@upstash/context7-mcp",
8
+ "--api-key",
9
+ "YOUR_API_KEY"
10
+ ]
11
+ },
12
+ "shadcn": {
13
+ "command": "npx",
14
+ "args": [
15
+ "shadcn@latest",
16
+ "mcp"
17
+ ]
18
+ }
19
+ //other mcp servers
20
+ }
21
+ }
22
+
23
+ // setup mcp server in ~/.gemini\antigravity\mcp_config.json
24
+
@@ -0,0 +1,20 @@
1
+ # Model configuration for Antigravity Kit agents
2
+
3
+ defaults:
4
+ model: claude-sonnet-4-6
5
+ max_tokens: 8192
6
+ temperature: 0
7
+
8
+ overrides:
9
+ orchestrator:
10
+ model: claude-opus-4-6
11
+ code-archaeologist:
12
+ model: claude-opus-4-6
13
+
14
+ available_models:
15
+ - id: claude-opus-4-6
16
+ description: Most capable — use for complex orchestration
17
+ - id: claude-sonnet-4-6
18
+ description: Balanced — default for most agents
19
+ - id: claude-haiku-4-5-20251001
20
+ description: Fast — use for simple, high-frequency tasks