create-ai-project 1.16.2 → 1.17.0
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/.claude/agents-en/acceptance-test-generator.md +4 -3
- package/.claude/agents-en/code-reviewer.md +2 -2
- package/.claude/agents-en/code-verifier.md +2 -2
- package/.claude/agents-en/design-sync.md +2 -2
- package/.claude/agents-en/document-reviewer.md +4 -4
- package/.claude/agents-en/integration-test-reviewer.md +2 -2
- package/.claude/agents-en/investigator.md +2 -2
- package/.claude/agents-en/prd-creator.md +4 -2
- package/.claude/agents-en/quality-fixer-frontend.md +7 -5
- package/.claude/agents-en/quality-fixer.md +3 -3
- package/.claude/agents-en/requirement-analyzer.md +2 -2
- package/.claude/agents-en/scope-discoverer.md +2 -2
- package/.claude/agents-en/skill-creator.md +2 -2
- package/.claude/agents-en/skill-reviewer.md +2 -2
- package/.claude/agents-en/solver.md +2 -2
- package/.claude/agents-en/task-decomposer.md +2 -2
- package/.claude/agents-en/task-executor-frontend.md +3 -3
- package/.claude/agents-en/task-executor.md +2 -2
- package/.claude/agents-en/technical-designer-frontend.md +17 -6
- package/.claude/agents-en/technical-designer.md +2 -2
- package/.claude/agents-en/ui-spec-designer.md +115 -0
- package/.claude/agents-en/verifier.md +2 -2
- package/.claude/agents-en/work-planner.md +2 -2
- package/.claude/agents-ja/acceptance-test-generator.md +4 -3
- package/.claude/agents-ja/code-reviewer.md +2 -2
- package/.claude/agents-ja/code-verifier.md +2 -2
- package/.claude/agents-ja/design-sync.md +2 -2
- package/.claude/agents-ja/document-reviewer.md +4 -4
- package/.claude/agents-ja/integration-test-reviewer.md +2 -2
- package/.claude/agents-ja/investigator.md +2 -2
- package/.claude/agents-ja/prd-creator.md +4 -2
- package/.claude/agents-ja/quality-fixer-frontend.md +7 -5
- package/.claude/agents-ja/quality-fixer.md +3 -3
- package/.claude/agents-ja/requirement-analyzer.md +2 -2
- package/.claude/agents-ja/scope-discoverer.md +2 -2
- package/.claude/agents-ja/skill-creator.md +2 -2
- package/.claude/agents-ja/skill-reviewer.md +2 -2
- package/.claude/agents-ja/solver.md +2 -2
- package/.claude/agents-ja/task-decomposer.md +2 -2
- package/.claude/agents-ja/task-executor-frontend.md +3 -3
- package/.claude/agents-ja/task-executor.md +2 -2
- package/.claude/agents-ja/technical-designer-frontend.md +17 -6
- package/.claude/agents-ja/technical-designer.md +2 -2
- package/.claude/agents-ja/ui-spec-designer.md +115 -0
- package/.claude/agents-ja/verifier.md +2 -2
- package/.claude/agents-ja/work-planner.md +2 -2
- package/.claude/commands-en/add-integration-tests.md +1 -1
- package/.claude/commands-en/build.md +55 -19
- package/.claude/commands-en/create-skill.md +1 -1
- package/.claude/commands-en/design.md +1 -1
- package/.claude/commands-en/diagnose.md +2 -2
- package/.claude/commands-en/front-build.md +40 -20
- package/.claude/commands-en/front-design.md +25 -8
- package/.claude/commands-en/front-plan.md +17 -9
- package/.claude/commands-en/front-review.md +2 -2
- package/.claude/commands-en/implement.md +15 -10
- package/.claude/commands-en/project-inject.md +1 -1
- package/.claude/commands-en/refine-skill.md +1 -1
- package/.claude/commands-en/reverse-engineer.md +3 -3
- package/.claude/commands-en/review.md +2 -2
- package/.claude/commands-en/sync-skills.md +1 -1
- package/.claude/commands-en/update-doc.md +2 -2
- package/.claude/commands-ja/add-integration-tests.md +1 -1
- package/.claude/commands-ja/build.md +56 -18
- package/.claude/commands-ja/create-skill.md +1 -1
- package/.claude/commands-ja/design.md +1 -1
- package/.claude/commands-ja/diagnose.md +2 -2
- package/.claude/commands-ja/front-build.md +41 -21
- package/.claude/commands-ja/front-design.md +26 -9
- package/.claude/commands-ja/front-plan.md +15 -7
- package/.claude/commands-ja/front-review.md +2 -2
- package/.claude/commands-ja/implement.md +15 -10
- package/.claude/commands-ja/project-inject.md +1 -1
- package/.claude/commands-ja/refine-skill.md +1 -1
- package/.claude/commands-ja/reverse-engineer.md +3 -3
- package/.claude/commands-ja/review.md +2 -2
- package/.claude/commands-ja/sync-skills.md +1 -1
- package/.claude/commands-ja/update-doc.md +2 -2
- package/.claude/skills-en/documentation-criteria/SKILL.md +37 -1
- package/.claude/skills-en/documentation-criteria/references/design-template.md +24 -0
- package/.claude/skills-en/documentation-criteria/references/prd-template.md +10 -0
- package/.claude/skills-en/documentation-criteria/references/ui-spec-template.md +145 -0
- package/.claude/skills-en/{frontend/technical-spec → frontend-technical-spec}/SKILL.md +5 -5
- package/.claude/skills-en/{frontend/typescript-rules → frontend-typescript-rules}/SKILL.md +1 -1
- package/.claude/skills-en/{frontend/typescript-testing → frontend-typescript-testing}/SKILL.md +9 -2
- package/.claude/skills-en/frontend-typescript-testing/references/e2e.md +185 -0
- package/.claude/skills-en/integration-e2e-testing/SKILL.md +4 -0
- package/.claude/skills-en/integration-e2e-testing/references/e2e-design.md +86 -0
- package/.claude/skills-en/subagents-orchestration-guide/SKILL.md +44 -22
- package/.claude/skills-en/task-analyzer/references/skills-index.yaml +15 -11
- package/.claude/skills-en/technical-spec/SKILL.md +5 -4
- package/.claude/skills-ja/documentation-criteria/SKILL.md +37 -1
- package/.claude/skills-ja/documentation-criteria/references/design-template.md +24 -0
- package/.claude/skills-ja/documentation-criteria/references/prd-template.md +10 -0
- package/.claude/skills-ja/documentation-criteria/references/ui-spec-template.md +145 -0
- package/.claude/skills-ja/{frontend/technical-spec → frontend-technical-spec}/SKILL.md +5 -5
- package/.claude/skills-ja/{frontend/typescript-rules → frontend-typescript-rules}/SKILL.md +1 -1
- package/.claude/skills-ja/{frontend/typescript-testing → frontend-typescript-testing}/SKILL.md +2 -2
- package/.claude/skills-ja/frontend-typescript-testing/references/e2e.md +185 -0
- package/.claude/skills-ja/integration-e2e-testing/SKILL.md +4 -0
- package/.claude/skills-ja/integration-e2e-testing/references/e2e-design.md +86 -0
- package/.claude/skills-ja/subagents-orchestration-guide/SKILL.md +44 -22
- package/.claude/skills-ja/task-analyzer/references/skills-index.yaml +15 -11
- package/.claude/skills-ja/technical-spec/SKILL.md +5 -4
- package/CHANGELOG.md +67 -0
- package/CLAUDE.en.md +2 -2
- package/CLAUDE.ja.md +2 -2
- package/CLAUDE.md +68 -86
- package/README.ja.md +10 -7
- package/README.md +10 -7
- package/bin/create-project.js +76 -75
- package/biome.json +5 -8
- package/package.json +11 -24
- package/scripts/post-setup.js +54 -57
- package/scripts/set-language.js +107 -112
- package/scripts/setup-project.js +97 -92
- package/scripts/show-coverage.js +36 -22
- package/scripts/update-project.js +205 -201
- package/scripts/utils.js +19 -21
- package/tsconfig.json +3 -3
- package/vitest.config.mjs +2 -2
- package/.tsprunerc +0 -11
- package/scripts/check-unused-exports.js +0 -69
package/scripts/utils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import fs from 'node:fs'
|
|
4
|
+
import path from 'node:path'
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Recursively copy a directory from source to target.
|
|
@@ -10,38 +10,38 @@ const path = require('path');
|
|
|
10
10
|
* @param {string} target - Target directory path
|
|
11
11
|
* @returns {boolean} - Whether the copy was successful
|
|
12
12
|
*/
|
|
13
|
-
function copyDirectory(source, target) {
|
|
13
|
+
export function copyDirectory(source, target) {
|
|
14
14
|
if (!fs.existsSync(source)) {
|
|
15
|
-
return false
|
|
15
|
+
return false
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
if (!fs.existsSync(target)) {
|
|
19
|
-
fs.mkdirSync(target, { recursive: true })
|
|
19
|
+
fs.mkdirSync(target, { recursive: true })
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
const entries = fs.readdirSync(source, { withFileTypes: true })
|
|
22
|
+
const entries = fs.readdirSync(source, { withFileTypes: true })
|
|
23
23
|
|
|
24
24
|
for (const entry of entries) {
|
|
25
|
-
const sourcePath = path.join(source, entry.name)
|
|
26
|
-
const targetPath = path.join(target, entry.name)
|
|
25
|
+
const sourcePath = path.join(source, entry.name)
|
|
26
|
+
const targetPath = path.join(target, entry.name)
|
|
27
27
|
|
|
28
28
|
if (entry.isDirectory()) {
|
|
29
|
-
copyDirectory(sourcePath, targetPath)
|
|
29
|
+
copyDirectory(sourcePath, targetPath)
|
|
30
30
|
} else {
|
|
31
|
-
fs.copyFileSync(sourcePath, targetPath)
|
|
31
|
+
fs.copyFileSync(sourcePath, targetPath)
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
return true
|
|
35
|
+
return true
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
39
|
* Remove a directory recursively.
|
|
40
40
|
* @param {string} dirPath - Directory path to remove
|
|
41
41
|
*/
|
|
42
|
-
function removeDirectory(dirPath) {
|
|
42
|
+
export function removeDirectory(dirPath) {
|
|
43
43
|
if (fs.existsSync(dirPath)) {
|
|
44
|
-
fs.rmSync(dirPath, { recursive: true, force: true })
|
|
44
|
+
fs.rmSync(dirPath, { recursive: true, force: true })
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -51,18 +51,16 @@ function removeDirectory(dirPath) {
|
|
|
51
51
|
* @param {string} target - Target file path
|
|
52
52
|
* @returns {boolean} - Whether the copy was successful
|
|
53
53
|
*/
|
|
54
|
-
function copyFile(source, target) {
|
|
54
|
+
export function copyFile(source, target) {
|
|
55
55
|
if (!fs.existsSync(source)) {
|
|
56
|
-
return false
|
|
56
|
+
return false
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
const targetDir = path.dirname(target)
|
|
59
|
+
const targetDir = path.dirname(target)
|
|
60
60
|
if (!fs.existsSync(targetDir)) {
|
|
61
|
-
fs.mkdirSync(targetDir, { recursive: true })
|
|
61
|
+
fs.mkdirSync(targetDir, { recursive: true })
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
fs.copyFileSync(source, target)
|
|
65
|
-
return true
|
|
64
|
+
fs.copyFileSync(source, target)
|
|
65
|
+
return true
|
|
66
66
|
}
|
|
67
|
-
|
|
68
|
-
module.exports = { copyDirectory, removeDirectory, copyFile };
|
package/tsconfig.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
3
|
// Basic configuration
|
|
4
|
-
"target": "
|
|
5
|
-
"module": "
|
|
6
|
-
"lib": ["
|
|
4
|
+
"target": "ES2022",
|
|
5
|
+
"module": "Node16",
|
|
6
|
+
"lib": ["ES2022"],
|
|
7
7
|
"types": ["node"],
|
|
8
8
|
"baseUrl": ".", // Use project root as reference
|
|
9
9
|
"paths": {
|
package/vitest.config.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineConfig } from 'vitest/config'
|
|
2
|
-
import path from 'path'
|
|
3
|
-
import { fileURLToPath } from 'url'
|
|
2
|
+
import path from 'node:path'
|
|
3
|
+
import { fileURLToPath } from 'node:url'
|
|
4
4
|
|
|
5
5
|
const __filename = fileURLToPath(import.meta.url)
|
|
6
6
|
const __dirname = path.dirname(__filename)
|
package/.tsprunerc
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Unused exports checker script
|
|
5
|
-
* Filters out "used in module" from ts-prune output to show only truly unused exports
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
const { execSync } = require('child_process')
|
|
9
|
-
|
|
10
|
-
try {
|
|
11
|
-
// Run ts-prune
|
|
12
|
-
const output = execSync(
|
|
13
|
-
'npx ts-prune --project tsconfig.json --ignore "src/index.ts|__tests__|test|vitest"',
|
|
14
|
-
{ encoding: 'utf8' }
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
// Process each line
|
|
18
|
-
const lines = output.split('\n').filter(line => line.trim())
|
|
19
|
-
const results = {
|
|
20
|
-
usedInModule: [],
|
|
21
|
-
trulyUnused: [],
|
|
22
|
-
total: 0
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
for (const line of lines) {
|
|
26
|
-
if (line.includes(' - ')) {
|
|
27
|
-
results.total++
|
|
28
|
-
if (line.includes('(used in module)')) {
|
|
29
|
-
results.usedInModule.push(line)
|
|
30
|
-
} else {
|
|
31
|
-
results.trulyUnused.push(line)
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Display results
|
|
37
|
-
console.log('=== Unused Exports Analysis ===\n')
|
|
38
|
-
|
|
39
|
-
if (results.trulyUnused.length > 0) {
|
|
40
|
-
console.log(`🔴 Truly unused exports: ${results.trulyUnused.length}`)
|
|
41
|
-
console.log('─'.repeat(50))
|
|
42
|
-
results.trulyUnused.forEach(line => console.log(line))
|
|
43
|
-
console.log('')
|
|
44
|
-
} else {
|
|
45
|
-
console.log('✅ No truly unused exports found\n')
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (results.usedInModule.length > 0) {
|
|
49
|
-
console.log(`⚠️ Used only in module (unnecessary exports): ${results.usedInModule.length}`)
|
|
50
|
-
console.log('─'.repeat(50))
|
|
51
|
-
results.usedInModule.forEach(line => console.log(line))
|
|
52
|
-
console.log('')
|
|
53
|
-
} else {
|
|
54
|
-
console.log('✅ No unnecessary internal exports found\n')
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Summary
|
|
58
|
-
console.log('=== Summary ===')
|
|
59
|
-
console.log(`Total unnecessary exports: ${results.total}`)
|
|
60
|
-
console.log(`├── Truly unused: ${results.trulyUnused.length} (delete immediately)`)
|
|
61
|
-
console.log(`└── Used in module only: ${results.usedInModule.length} (remove export keyword)`)
|
|
62
|
-
|
|
63
|
-
// Exit code
|
|
64
|
-
process.exit(results.trulyUnused.length > 0 ? 1 : 0)
|
|
65
|
-
|
|
66
|
-
} catch (error) {
|
|
67
|
-
console.error('Error occurred:', error.message)
|
|
68
|
-
process.exit(1)
|
|
69
|
-
}
|