@kurokeita/add-skill 2.6.2 → 3.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 (140) hide show
  1. package/README.md +43 -64
  2. package/dist/bin/cli.js +270 -478
  3. package/dist/skills/statusline-setup/.claude-plugin/plugin.json +1 -1
  4. package/dist/skills/statusline-setup/SKILL.md +21 -436
  5. package/dist/skills/statusline-setup/mod/hooks/register.tsx +93 -103
  6. package/dist/skills/statusline-setup/mod/tests/work.test.ts +28 -10
  7. package/dist/skills/statusline-setup/mod/types/index.d.ts +2 -1
  8. package/dist/skills/universalize-agents/reference/mapping.md +3 -2
  9. package/package.json +3 -3
  10. package/dist/agents/backend-specialist.md +0 -277
  11. package/dist/agents/code-archaeologist.md +0 -114
  12. package/dist/agents/database-architect.md +0 -238
  13. package/dist/agents/debugger.md +0 -231
  14. package/dist/agents/devops-engineer.md +0 -242
  15. package/dist/agents/documentation-writer.md +0 -104
  16. package/dist/agents/explorer-agent.md +0 -79
  17. package/dist/agents/frontend-specialist.md +0 -594
  18. package/dist/agents/game-developer.md +0 -162
  19. package/dist/agents/mobile-developer.md +0 -383
  20. package/dist/agents/orchestrator.md +0 -435
  21. package/dist/agents/penetration-tester.md +0 -188
  22. package/dist/agents/performance-optimizer.md +0 -191
  23. package/dist/agents/product-manager.md +0 -122
  24. package/dist/agents/product-owner.md +0 -106
  25. package/dist/agents/project-planner.md +0 -408
  26. package/dist/agents/qa-automation-engineer.md +0 -109
  27. package/dist/agents/security-auditor.md +0 -171
  28. package/dist/agents/test-engineer.md +0 -158
  29. package/dist/skills/agent-identifier/SKILL.md +0 -431
  30. package/dist/skills/agent-identifier/examples/agent-creation-prompt.md +0 -247
  31. package/dist/skills/agent-identifier/examples/complete-agent-examples.md +0 -432
  32. package/dist/skills/agent-identifier/references/agent-creation-system-prompt.md +0 -215
  33. package/dist/skills/agent-identifier/references/system-prompt-design.md +0 -419
  34. package/dist/skills/agent-identifier/references/triggering-examples.md +0 -508
  35. package/dist/skills/agent-identifier/scripts/validate-agent.sh +0 -217
  36. package/dist/skills/code-review-excellence/SKILL.md +0 -525
  37. package/dist/skills/component-refactoring/SKILL.md +0 -492
  38. package/dist/skills/component-refactoring/references/complexity-patterns.md +0 -493
  39. package/dist/skills/component-refactoring/references/component-splitting.md +0 -477
  40. package/dist/skills/component-refactoring/references/hook-extraction.md +0 -317
  41. package/dist/skills/context7-guidelines/SKILL.md +0 -31
  42. package/dist/skills/feature-design-assistant/SKILL.md +0 -371
  43. package/dist/skills/find-bugs/SKILL.md +0 -75
  44. package/dist/skills/frontend-design/SKILL.md +0 -45
  45. package/dist/skills/go-concurrency-patterns/SKILL.md +0 -657
  46. package/dist/skills/grill-me/SKILL.md +0 -9
  47. package/dist/skills/handoff/SKILL.md +0 -16
  48. package/dist/skills/koreader-plugin-development/SKILL.md +0 -141
  49. package/dist/skills/koreader-plugin-development/examples/2-example-patch.lua +0 -17
  50. package/dist/skills/koreader-plugin-development/examples/_meta.lua +0 -6
  51. package/dist/skills/koreader-plugin-development/examples/helloworld.lua +0 -36
  52. package/dist/skills/koreader-plugin-development/references/debugging.md +0 -92
  53. package/dist/skills/koreader-plugin-development/references/events-and-widgets.md +0 -102
  54. package/dist/skills/koreader-plugin-development/references/patches.md +0 -118
  55. package/dist/skills/koreader-plugin-development/references/plugin-anatomy.md +0 -97
  56. package/dist/skills/make-instruction/SKILL.md +0 -68
  57. package/dist/skills/make-prompt/SKILL.md +0 -70
  58. package/dist/skills/make-skill/SKILL.md +0 -147
  59. package/dist/skills/prd-to-tasks/SKILL.md +0 -164
  60. package/dist/skills/react-native-async-patterns/SKILL.md +0 -256
  61. package/dist/skills/react-native-performance/SKILL.md +0 -425
  62. package/dist/skills/react-native-testing/SKILL.md +0 -458
  63. package/dist/skills/react-native-zustand-patterns/SKILL.md +0 -343
  64. package/dist/skills/skill-creator/SKILL.md +0 -385
  65. package/dist/skills/skill-creator/scripts/init_skill.cjs +0 -235
  66. package/dist/skills/skill-creator/scripts/package_skill.cjs +0 -84
  67. package/dist/skills/skill-creator/scripts/validate_skill.cjs +0 -127
  68. package/dist/skills/skill-development/SKILL.md +0 -676
  69. package/dist/skills/skill-development/references/skill-creator-original.md +0 -210
  70. package/dist/skills/sql-optimization-patterns/SKILL.md +0 -509
  71. package/dist/skills/test-driven-development/SKILL.md +0 -114
  72. package/dist/skills/test-driven-development/deep-modules.md +0 -33
  73. package/dist/skills/test-driven-development/interface-design.md +0 -35
  74. package/dist/skills/test-driven-development/mocking.md +0 -68
  75. package/dist/skills/test-driven-development/refactoring.md +0 -10
  76. package/dist/skills/test-driven-development/tests.md +0 -61
  77. package/dist/skills/vercel-react-best-practices/AGENTS.md +0 -2410
  78. package/dist/skills/vercel-react-best-practices/SKILL.md +0 -127
  79. package/dist/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -55
  80. package/dist/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -49
  81. package/dist/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -38
  82. package/dist/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -80
  83. package/dist/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -36
  84. package/dist/skills/vercel-react-best-practices/rules/async-parallel.md +0 -28
  85. package/dist/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -99
  86. package/dist/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -59
  87. package/dist/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -31
  88. package/dist/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -49
  89. package/dist/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -35
  90. package/dist/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -50
  91. package/dist/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -74
  92. package/dist/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -71
  93. package/dist/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -48
  94. package/dist/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -56
  95. package/dist/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -82
  96. package/dist/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -80
  97. package/dist/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -28
  98. package/dist/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -70
  99. package/dist/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -32
  100. package/dist/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -50
  101. package/dist/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -45
  102. package/dist/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -37
  103. package/dist/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -50
  104. package/dist/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -82
  105. package/dist/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -24
  106. package/dist/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -57
  107. package/dist/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -26
  108. package/dist/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
  109. package/dist/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -40
  110. package/dist/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -38
  111. package/dist/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -46
  112. package/dist/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
  113. package/dist/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -28
  114. package/dist/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -39
  115. package/dist/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -45
  116. package/dist/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -29
  117. package/dist/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -74
  118. package/dist/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -58
  119. package/dist/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -44
  120. package/dist/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -40
  121. package/dist/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -73
  122. package/dist/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -41
  123. package/dist/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -76
  124. package/dist/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -83
  125. package/dist/skills/vercel-react-best-practices/rules/server-serialization.md +0 -38
  126. package/dist/skills/web-design-guidelines/SKILL.md +0 -40
  127. package/dist/skills/workflow-patterns/SKILL.md +0 -623
  128. package/dist/skills/write-prd/SKILL.md +0 -162
  129. package/dist/workflows/brainstorm.md +0 -113
  130. package/dist/workflows/create.md +0 -60
  131. package/dist/workflows/debug.md +0 -107
  132. package/dist/workflows/deploy.md +0 -178
  133. package/dist/workflows/enhance.md +0 -64
  134. package/dist/workflows/github-pull-request-create.md +0 -134
  135. package/dist/workflows/orchestrate.md +0 -246
  136. package/dist/workflows/plan.md +0 -90
  137. package/dist/workflows/preview.md +0 -83
  138. package/dist/workflows/status.md +0 -87
  139. package/dist/workflows/test.md +0 -144
  140. package/dist/workflows/ui-ux-pro-max.md +0 -315
@@ -1,84 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /* eslint-env node */
4
-
5
- /**
6
- * Skill Packager - Creates a distributable .skill file of a skill folder
7
- *
8
- * Usage:
9
- * node package_skill.js <path/to/skill-folder> [output-directory]
10
- */
11
-
12
- const path = require("node:path")
13
- const { spawnSync } = require("node:child_process")
14
- const { validateSkill } = require("./validate_skill.cjs")
15
-
16
- async function main() {
17
- const args = process.argv.slice(2)
18
- if (args.length < 1) {
19
- console.log(
20
- "Usage: node package_skill.js <path/to/skill-folder> [output-directory]",
21
- )
22
- process.exit(1)
23
- }
24
-
25
- const skillPathArg = args[0]
26
- const outputDirArg = args[1]
27
-
28
- if (skillPathArg.includes("..") || outputDirArg?.includes("..")) {
29
- console.error("❌ Error: Path traversal detected in arguments.")
30
- process.exit(1)
31
- }
32
-
33
- const skillPath = path.resolve(skillPathArg)
34
- const outputDir = outputDirArg ? path.resolve(outputDirArg) : process.cwd()
35
- const skillName = path.basename(skillPath)
36
-
37
- // 1. Validate first
38
- console.log("🔍 Validating skill...")
39
- const result = validateSkill(skillPath)
40
- if (!result.valid) {
41
- console.error(`❌ Validation failed: ${result.message}`)
42
- process.exit(1)
43
- }
44
-
45
- if (result.warning) {
46
- console.warn(`⚠️ ${result.warning}`)
47
- console.log("Please resolve all TODOs before packaging.")
48
- process.exit(1)
49
- }
50
- console.log("✅ Skill is valid!")
51
-
52
- // 2. Package
53
- const outputFilename = path.join(outputDir, `${skillName}.skill`)
54
-
55
- try {
56
- // Zip everything except junk, keeping the folder structure
57
- // We'll use the native 'zip' command for simplicity in a CLI environment
58
- // or we could use a JS library, but zip is ubiquitous on darwin/linux.
59
-
60
- // Command to zip:
61
- // -r: recursive
62
- // -x: exclude patterns
63
- // Run the zip command from within the directory to avoid parent folder nesting
64
- const zipProcess = spawnSync("zip", ["-r", outputFilename, "."], {
65
- cwd: skillPath,
66
- stdio: "inherit",
67
- })
68
-
69
- if (zipProcess.error) {
70
- throw zipProcess.error
71
- }
72
-
73
- if (zipProcess.status !== 0) {
74
- throw new Error(`zip command failed with exit code ${zipProcess.status}`)
75
- }
76
-
77
- console.log(`✅ Successfully packaged skill to: ${outputFilename}`)
78
- } catch (err) {
79
- console.error(`❌ Error packaging: ${err.message}`)
80
- process.exit(1)
81
- }
82
- }
83
-
84
- main()
@@ -1,127 +0,0 @@
1
- /* eslint-env node */
2
-
3
- /**
4
- * Quick validation logic for skills.
5
- * Leveraging existing dependencies when possible or providing a zero-dep fallback.
6
- */
7
-
8
- const fs = require("node:fs")
9
- const path = require("node:path")
10
-
11
- function validateSkill(skillPath) {
12
- if (!fs.existsSync(skillPath) || !fs.statSync(skillPath).isDirectory()) {
13
- return { valid: false, message: `Path is not a directory: ${skillPath}` }
14
- }
15
-
16
- const skillMdPath = path.join(skillPath, "SKILL.md")
17
- if (!fs.existsSync(skillMdPath)) {
18
- return { valid: false, message: "SKILL.md not found" }
19
- }
20
-
21
- const content = fs.readFileSync(skillMdPath, "utf8")
22
- if (!content.startsWith("---")) {
23
- return { valid: false, message: "No YAML frontmatter found" }
24
- }
25
-
26
- const parts = content.split("---")
27
- if (parts.length < 3) {
28
- return { valid: false, message: "Invalid frontmatter format" }
29
- }
30
-
31
- const frontmatterText = parts[1]
32
-
33
- const nameMatch = frontmatterText.match(/^name:\s*(.+)$/m)
34
- // Match description: "text" or description: 'text' or description: text
35
- const descMatch = frontmatterText.match(
36
- /^description:\s*(?:'([^']*)'|"([^"]*)"|(.+))$/m,
37
- )
38
-
39
- if (!nameMatch)
40
- return { valid: false, message: 'Missing "name" in frontmatter' }
41
- if (!descMatch)
42
- return {
43
- valid: false,
44
- message: "Description must be a single-line string: description: ...",
45
- }
46
-
47
- const name = nameMatch[1].trim()
48
- const description = (
49
- descMatch[1] !== undefined
50
- ? descMatch[1]
51
- : descMatch[2] !== undefined
52
- ? descMatch[2]
53
- : descMatch[3] || ""
54
- ).trim()
55
-
56
- if (description.includes("\n")) {
57
- return {
58
- valid: false,
59
- message: "Description must be a single line (no newlines)",
60
- }
61
- }
62
-
63
- if (!/^[a-z0-9-]+$/.test(name)) {
64
- return { valid: false, message: `Name "${name}" should be hyphen-case` }
65
- }
66
-
67
- if (description.length > 1024) {
68
- return { valid: false, message: "Description is too long (max 1024)" }
69
- }
70
-
71
- // Check for TODOs
72
- const files = getAllFiles(skillPath)
73
- for (const file of files) {
74
- const fileContent = fs.readFileSync(file, "utf8")
75
- if (fileContent.includes("TODO:")) {
76
- return {
77
- valid: true,
78
- message: "Skill has unresolved TODOs",
79
- warning: `Found unresolved TODO in ${path.relative(skillPath, file)}`,
80
- }
81
- }
82
- }
83
-
84
- return { valid: true, message: "Skill is valid!" }
85
- }
86
-
87
- function getAllFiles(dir, fileList = []) {
88
- const files = fs.readdirSync(dir)
89
- files.forEach((file) => {
90
- const name = path.join(dir, file)
91
- if (fs.statSync(name).isDirectory()) {
92
- if (!["node_modules", ".git", "__pycache__"].includes(file)) {
93
- getAllFiles(name, fileList)
94
- }
95
- } else {
96
- fileList.push(name)
97
- }
98
- })
99
- return fileList
100
- }
101
-
102
- if (require.main === module) {
103
- const args = process.argv.slice(2)
104
- if (args.length !== 1) {
105
- console.log("Usage: node validate_skill.js <skill_directory>")
106
- process.exit(1)
107
- }
108
-
109
- const skillDirArg = args[0]
110
- if (skillDirArg.includes("..")) {
111
- console.error("❌ Error: Path traversal detected in skill directory path.")
112
- process.exit(1)
113
- }
114
-
115
- const result = validateSkill(path.resolve(skillDirArg))
116
- if (result.warning) {
117
- console.warn(`⚠️ ${result.warning}`)
118
- }
119
- if (result.valid) {
120
- console.log(`✅ ${result.message}`)
121
- } else {
122
- console.error(`❌ ${result.message}`)
123
- process.exit(1)
124
- }
125
- }
126
-
127
- module.exports = { validateSkill }