cmx-sdk 0.2.6 → 0.2.8
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/README.md +16 -0
- package/dist/add-studio-YUDYE2OH.js +72 -0
- package/dist/{chunk-XPP5MZKG.js → chunk-7TDMLYBI.js} +17 -45
- package/dist/chunk-EDXXR5BE.js +80 -0
- package/dist/chunk-EZMBZWH7.js +121 -0
- package/dist/chunk-FPQYL5GE.js +128 -0
- package/dist/chunk-NZQ6SBFS.js +35 -0
- package/dist/cli.js +1152 -619
- package/dist/index.d.ts +253 -385
- package/dist/index.js +154 -25
- package/dist/index.js.map +1 -1
- package/dist/{init-NDNG5Q5T.js → init-FLRQXJX4.js} +23 -51
- package/dist/interactive-menu-FYVOQSTL.js +80 -0
- package/dist/studio-HAS6DYLO.js +8 -0
- package/dist/update-sdk-KJZ6VB4M.js +10 -0
- package/dist/update-studio-TWCYSYIS.js +14 -0
- package/package.json +18 -10
- package/templates/AGENTS.md +173 -0
- package/templates/CLAUDE.md +28 -0
- package/templates/claude/commands/check.md +64 -0
- package/templates/claude/commands/next-action.md +66 -0
- package/templates/claude/skills/cmx-cache/SKILL.md +50 -0
- package/templates/claude/skills/cmx-cache/references/cache-patterns.md +153 -0
- package/templates/claude/skills/cmx-component/SKILL.md +108 -0
- package/templates/claude/skills/cmx-component/references/component-schema.md +123 -0
- package/templates/claude/skills/cmx-content/SKILL.md +158 -0
- package/templates/claude/skills/cmx-content/references/migration-patterns.md +120 -0
- package/templates/claude/skills/cmx-content/references/seed-patterns.md +146 -0
- package/templates/claude/skills/cmx-dev/SKILL.md +266 -0
- package/templates/claude/skills/cmx-dev/references/api-patterns.md +220 -0
- package/templates/claude/skills/cmx-dev/references/cli-reference.md +54 -0
- package/templates/claude/skills/cmx-form/SKILL.md +103 -0
- package/templates/claude/skills/cmx-form/references/form-template.md +152 -0
- package/templates/claude/skills/cmx-migrate/SKILL.md +501 -0
- package/templates/claude/skills/cmx-migrate/references/analysis-guide.md +127 -0
- package/templates/claude/skills/cmx-migrate/references/html-to-mdx.md +99 -0
- package/templates/claude/skills/cmx-migrate/references/intermediate-format.md +196 -0
- package/templates/claude/skills/cmx-migrate/references/tool-setup.md +150 -0
- package/templates/claude/skills/cmx-schema/SKILL.md +159 -0
- package/templates/claude/skills/cmx-schema/references/field-types.md +164 -0
- package/templates/claude/skills/cmx-schema/references/migration-scenarios.md +44 -0
- package/templates/claude/skills/cmx-seo/SKILL.md +54 -0
- package/templates/claude/skills/cmx-seo/references/seo-patterns.md +216 -0
- package/templates/claude/skills/cmx-style/SKILL.md +48 -0
- package/templates/claude/skills/cmx-style/references/style-patterns.md +114 -0
- package/dist/add-studio-J7M7KOWM.js +0 -125
- package/dist/interactive-menu-RPPCBCOU.js +0 -66
- package/dist/studio-3YGVKWS4.js +0 -7
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
cleanupTempFile,
|
|
4
|
-
downloadTarball
|
|
5
|
-
} from "./chunk-IIQLQIDP.js";
|
|
6
|
-
|
|
7
|
-
// src/commands/add-studio.ts
|
|
8
|
-
import { existsSync, readFileSync, mkdirSync } from "fs";
|
|
9
|
-
import { join, resolve } from "path";
|
|
10
|
-
import { execSync } from "child_process";
|
|
11
|
-
import { config } from "dotenv";
|
|
12
|
-
import { extract } from "tar";
|
|
13
|
-
var REPO_OWNER = "kzkm-lab";
|
|
14
|
-
var REPO_NAME = "cmx-starter-kit";
|
|
15
|
-
var REPO_BRANCH = "main";
|
|
16
|
-
function findProjectRoot() {
|
|
17
|
-
let dir = resolve(process.cwd());
|
|
18
|
-
const root = resolve("/");
|
|
19
|
-
while (dir !== root) {
|
|
20
|
-
const pkgPath = join(dir, "package.json");
|
|
21
|
-
if (existsSync(pkgPath)) {
|
|
22
|
-
try {
|
|
23
|
-
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
24
|
-
if (pkg.dependencies?.["cmx-sdk"] || pkg.devDependencies?.["cmx-sdk"]) {
|
|
25
|
-
return dir;
|
|
26
|
-
}
|
|
27
|
-
} catch {
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
dir = resolve(dir, "..");
|
|
31
|
-
}
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
async function downloadStudio(targetDir) {
|
|
35
|
-
const tarballUrl = `https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/tarball/${REPO_BRANCH}`;
|
|
36
|
-
const tmpFile = join(targetDir, ".tmp-studio-tarball.tar.gz");
|
|
37
|
-
await downloadTarball(tarballUrl, tmpFile, {
|
|
38
|
-
headers: { Accept: "application/vnd.github+json" }
|
|
39
|
-
});
|
|
40
|
-
const studioDir = join(targetDir, ".cmx", "studio");
|
|
41
|
-
mkdirSync(studioDir, { recursive: true });
|
|
42
|
-
await extract({
|
|
43
|
-
file: tmpFile,
|
|
44
|
-
cwd: studioDir,
|
|
45
|
-
strip: 2,
|
|
46
|
-
// {owner}-{repo}-{hash}/.cmx/studio/ → 2階層スキップ
|
|
47
|
-
filter: (path) => {
|
|
48
|
-
const parts = path.split("/");
|
|
49
|
-
return parts.length >= 3 && parts[1] === ".cmx" && parts[2] === "studio";
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
cleanupTempFile(tmpFile);
|
|
53
|
-
}
|
|
54
|
-
async function downloadStudioViaApi(targetDir, apiUrl, apiKey) {
|
|
55
|
-
const downloadUrl = `${apiUrl}/api/v1/sdk/download/studio`;
|
|
56
|
-
const tmpFile = join(targetDir, ".tmp-studio-tarball.tar.gz");
|
|
57
|
-
await downloadTarball(downloadUrl, tmpFile, {
|
|
58
|
-
headers: { Authorization: `Bearer ${apiKey}` }
|
|
59
|
-
});
|
|
60
|
-
const studioDir = join(targetDir, ".cmx", "studio");
|
|
61
|
-
mkdirSync(studioDir, { recursive: true });
|
|
62
|
-
await extract({
|
|
63
|
-
file: tmpFile,
|
|
64
|
-
cwd: studioDir,
|
|
65
|
-
strip: 2,
|
|
66
|
-
filter: (path) => {
|
|
67
|
-
const parts = path.split("/");
|
|
68
|
-
return parts.length >= 3 && parts[1] === ".cmx" && parts[2] === "studio";
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
cleanupTempFile(tmpFile);
|
|
72
|
-
}
|
|
73
|
-
async function addStudio() {
|
|
74
|
-
console.log("\n CMX Studio \u3092\u8FFD\u52A0\u4E2D...\n");
|
|
75
|
-
const projectRoot = findProjectRoot();
|
|
76
|
-
if (!projectRoot) {
|
|
77
|
-
console.error(" \u274C CMX \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093");
|
|
78
|
-
console.error(" package.json \u306B cmx-sdk \u4F9D\u5B58\u304C\u3042\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\n");
|
|
79
|
-
process.exit(1);
|
|
80
|
-
}
|
|
81
|
-
const studioDir = join(projectRoot, ".cmx", "studio");
|
|
82
|
-
if (existsSync(studioDir)) {
|
|
83
|
-
console.error(" \u274C .cmx/studio/ \u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059");
|
|
84
|
-
console.error(" \u518D\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B\u5834\u5408\u306F\u5148\u306B\u524A\u9664\u3057\u3066\u304F\u3060\u3055\u3044\n");
|
|
85
|
-
process.exit(1);
|
|
86
|
-
}
|
|
87
|
-
config({ path: join(projectRoot, ".env") });
|
|
88
|
-
const apiUrl = process.env.CMX_API_URL;
|
|
89
|
-
const apiKey = process.env.CMX_API_KEY;
|
|
90
|
-
const useApiDownload = !!(apiUrl && apiKey);
|
|
91
|
-
console.log(" \u23F3 Studio \u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u4E2D...");
|
|
92
|
-
try {
|
|
93
|
-
if (useApiDownload) {
|
|
94
|
-
await downloadStudioViaApi(projectRoot, apiUrl, apiKey);
|
|
95
|
-
} else {
|
|
96
|
-
await downloadStudio(projectRoot);
|
|
97
|
-
}
|
|
98
|
-
console.log(" \u2713 Studio \u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3057\u307E\u3057\u305F");
|
|
99
|
-
} catch (error) {
|
|
100
|
-
console.error("\n \u274C Studio \u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F");
|
|
101
|
-
console.error(` ${error instanceof Error ? error.message : "\u4E0D\u660E\u306A\u30A8\u30E9\u30FC"}
|
|
102
|
-
`);
|
|
103
|
-
process.exit(1);
|
|
104
|
-
}
|
|
105
|
-
console.log("\n \u{1F4E6} Studio \u306E\u4F9D\u5B58\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u4E2D...");
|
|
106
|
-
try {
|
|
107
|
-
const pm = existsSync(join(projectRoot, "pnpm-lock.yaml")) ? "pnpm" : existsSync(join(projectRoot, "yarn.lock")) ? "yarn" : "npm";
|
|
108
|
-
const installCmd = pm === "yarn" ? "yarn" : `${pm} install`;
|
|
109
|
-
execSync(installCmd, { cwd: studioDir, stdio: "inherit" });
|
|
110
|
-
} catch {
|
|
111
|
-
console.error("\n \u26A0\uFE0F \u4F9D\u5B58\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u306B\u5931\u6557\u3057\u307E\u3057\u305F");
|
|
112
|
-
console.error(" cd .cmx/studio && npm install \u3067\u624B\u52D5\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\n");
|
|
113
|
-
}
|
|
114
|
-
console.log(`
|
|
115
|
-
\u2705 CMX Studio \u3092\u8FFD\u52A0\u3057\u307E\u3057\u305F\uFF01
|
|
116
|
-
|
|
117
|
-
\u8D77\u52D5\u65B9\u6CD5:
|
|
118
|
-
npx cmx-sdk studio # \u30B5\u30A4\u30C8 + Studio \u3092\u8D77\u52D5
|
|
119
|
-
npm --prefix .cmx/studio run dev # Studio \u306E\u307F\u8D77\u52D5
|
|
120
|
-
`);
|
|
121
|
-
process.exit(0);
|
|
122
|
-
}
|
|
123
|
-
export {
|
|
124
|
-
addStudio
|
|
125
|
-
};
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
// src/commands/interactive-menu.ts
|
|
4
|
-
import { select } from "@inquirer/prompts";
|
|
5
|
-
async function interactiveMenu() {
|
|
6
|
-
console.log("\n CMX - \u30D8\u30C3\u30C9\u30EC\u30B9 CMS\n");
|
|
7
|
-
const action = await select({
|
|
8
|
-
message: "\u4F55\u3092\u3057\u307E\u3059\u304B?",
|
|
9
|
-
choices: [
|
|
10
|
-
{ name: "\u65B0\u898F\u30B5\u30A4\u30C8\u3092\u4F5C\u6210", value: "init" },
|
|
11
|
-
{ name: "Studio \u3092\u8FFD\u52A0", value: "add-studio" },
|
|
12
|
-
{ name: "Studio \u3092\u8D77\u52D5", value: "studio" },
|
|
13
|
-
{ name: "\u578B\u3092\u751F\u6210", value: "codegen-types" },
|
|
14
|
-
{ name: "\u30DA\u30FC\u30B8\u3092\u751F\u6210", value: "codegen-pages" },
|
|
15
|
-
{ name: "\u30D8\u30EB\u30D7", value: "help" }
|
|
16
|
-
]
|
|
17
|
-
});
|
|
18
|
-
switch (action) {
|
|
19
|
-
case "init": {
|
|
20
|
-
const { init } = await import("./init-NDNG5Q5T.js");
|
|
21
|
-
return init(void 0, {});
|
|
22
|
-
}
|
|
23
|
-
case "add-studio": {
|
|
24
|
-
const { addStudio } = await import("./add-studio-J7M7KOWM.js");
|
|
25
|
-
return addStudio();
|
|
26
|
-
}
|
|
27
|
-
case "studio": {
|
|
28
|
-
const { studio } = await import("./studio-3YGVKWS4.js");
|
|
29
|
-
return studio();
|
|
30
|
-
}
|
|
31
|
-
case "codegen-types": {
|
|
32
|
-
console.log("\n npx cmx-sdk codegen types \u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\n");
|
|
33
|
-
process.exit(0);
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
case "codegen-pages": {
|
|
37
|
-
console.log("\n npx cmx-sdk codegen pages \u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\n");
|
|
38
|
-
process.exit(0);
|
|
39
|
-
break;
|
|
40
|
-
}
|
|
41
|
-
case "help": {
|
|
42
|
-
console.log(`
|
|
43
|
-
\u4F7F\u3044\u65B9:
|
|
44
|
-
npx cmx-sdk init [project-name] \u65B0\u898F\u30B5\u30A4\u30C8\u3092\u4F5C\u6210
|
|
45
|
-
npx cmx-sdk add-studio Studio \u3092\u8FFD\u52A0
|
|
46
|
-
npx cmx-sdk studio \u30B5\u30A4\u30C8 + Studio \u3092\u8D77\u52D5
|
|
47
|
-
npx cmx-sdk codegen types TypeScript \u578B\u3092\u751F\u6210
|
|
48
|
-
npx cmx-sdk codegen pages Next.js \u30DA\u30FC\u30B8\u3092\u751F\u6210
|
|
49
|
-
npx cmx-sdk codegen all \u578B\u751F\u6210 + \u30DA\u30FC\u30B8\u751F\u6210 + \u6574\u5408\u30C1\u30A7\u30C3\u30AF
|
|
50
|
-
npx cmx-sdk mdx validate MDX\u672C\u6587\u3092\u691C\u8A3C
|
|
51
|
-
npx cmx-sdk mdx doctor MDX\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u5B9A\u7FA9\u3092\u691C\u8A3C
|
|
52
|
-
npx cmx-sdk --help \u5168\u30B3\u30DE\u30F3\u30C9\u3092\u8868\u793A
|
|
53
|
-
|
|
54
|
-
\u8D77\u52D5:
|
|
55
|
-
npm run dev \u30B5\u30A4\u30C8\u3092\u8D77\u52D5 (localhost:4000)
|
|
56
|
-
npx cmx-sdk studio \u30B5\u30A4\u30C8 + Studio \u3092\u8D77\u52D5
|
|
57
|
-
npm --prefix .cmx/studio run dev Studio \u306E\u307F\u8D77\u52D5
|
|
58
|
-
`);
|
|
59
|
-
process.exit(0);
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
export {
|
|
65
|
-
interactiveMenu
|
|
66
|
-
};
|