@devflow-tools/cli 0.12.5 → 0.12.6
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/package.json +2 -2
- package/dist/commands/benchmark-cmd.d.ts +0 -5
- package/dist/commands/benchmark-cmd.d.ts.map +0 -1
- package/dist/commands/benchmark-cmd.js +0 -18
- package/dist/commands/benchmark-cmd.js.map +0 -1
- package/dist/commands/connect.d.ts +0 -8
- package/dist/commands/connect.d.ts.map +0 -1
- package/dist/commands/connect.js +0 -26
- package/dist/commands/connect.js.map +0 -1
- package/dist/commands/context.d.ts +0 -15
- package/dist/commands/context.d.ts.map +0 -1
- package/dist/commands/context.js +0 -24
- package/dist/commands/context.js.map +0 -1
- package/dist/commands/dashboard.d.ts +0 -3
- package/dist/commands/dashboard.d.ts.map +0 -1
- package/dist/commands/dashboard.js +0 -10
- package/dist/commands/dashboard.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -56
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -156
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/graph.d.ts +0 -11
- package/dist/commands/graph.d.ts.map +0 -1
- package/dist/commands/graph.js +0 -14
- package/dist/commands/graph.js.map +0 -1
- package/dist/commands/index-cmd.d.ts +0 -4
- package/dist/commands/index-cmd.d.ts.map +0 -1
- package/dist/commands/index-cmd.js +0 -15
- package/dist/commands/index-cmd.js.map +0 -1
- package/dist/commands/init.d.ts +0 -20
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -145
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/knowledge.d.ts +0 -5
- package/dist/commands/knowledge.d.ts.map +0 -1
- package/dist/commands/knowledge.js +0 -23
- package/dist/commands/knowledge.js.map +0 -1
- package/dist/commands/memory.d.ts +0 -5
- package/dist/commands/memory.d.ts.map +0 -1
- package/dist/commands/memory.js +0 -72
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/plugin/install.d.ts +0 -3
- package/dist/commands/plugin/install.d.ts.map +0 -1
- package/dist/commands/plugin/install.js +0 -22
- package/dist/commands/plugin/install.js.map +0 -1
- package/dist/commands/plugin/list.d.ts +0 -3
- package/dist/commands/plugin/list.d.ts.map +0 -1
- package/dist/commands/plugin/list.js +0 -47
- package/dist/commands/plugin/list.js.map +0 -1
- package/dist/commands/plugin/search.d.ts +0 -3
- package/dist/commands/plugin/search.d.ts.map +0 -1
- package/dist/commands/plugin/search.js +0 -29
- package/dist/commands/plugin/search.js.map +0 -1
- package/dist/commands/plugin/uninstall.d.ts +0 -3
- package/dist/commands/plugin/uninstall.d.ts.map +0 -1
- package/dist/commands/plugin/uninstall.js +0 -21
- package/dist/commands/plugin/uninstall.js.map +0 -1
- package/dist/commands/plugin-guide.d.ts +0 -19
- package/dist/commands/plugin-guide.d.ts.map +0 -1
- package/dist/commands/plugin-guide.js +0 -131
- package/dist/commands/plugin-guide.js.map +0 -1
- package/dist/commands/plugin-loader.d.ts +0 -2
- package/dist/commands/plugin-loader.d.ts.map +0 -1
- package/dist/commands/plugin-loader.js +0 -2
- package/dist/commands/plugin-loader.js.map +0 -1
- package/dist/commands/review.d.ts +0 -6
- package/dist/commands/review.d.ts.map +0 -1
- package/dist/commands/review.js +0 -75
- package/dist/commands/review.js.map +0 -1
- package/dist/commands/server.d.ts +0 -16
- package/dist/commands/server.d.ts.map +0 -1
- package/dist/commands/server.js +0 -88
- package/dist/commands/server.js.map +0 -1
- package/dist/commands/session.d.ts +0 -7
- package/dist/commands/session.d.ts.map +0 -1
- package/dist/commands/session.js +0 -20
- package/dist/commands/session.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -6
- package/dist/commands/setup.d.ts.map +0 -1
- package/dist/commands/setup.js +0 -78
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/skill.d.ts +0 -18
- package/dist/commands/skill.d.ts.map +0 -1
- package/dist/commands/skill.js +0 -105
- package/dist/commands/skill.js.map +0 -1
- package/dist/commands/start.d.ts +0 -5
- package/dist/commands/start.d.ts.map +0 -1
- package/dist/commands/start.js +0 -58
- package/dist/commands/start.js.map +0 -1
- package/dist/commands/status.d.ts +0 -2
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -33
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/stop.d.ts +0 -2
- package/dist/commands/stop.d.ts.map +0 -1
- package/dist/commands/stop.js +0 -12
- package/dist/commands/stop.js.map +0 -1
- package/dist/commands/workflow.d.ts +0 -6
- package/dist/commands/workflow.d.ts.map +0 -1
- package/dist/commands/workflow.js +0 -24
- package/dist/commands/workflow.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -606
- package/dist/index.js.map +0 -1
- package/dist/lib/dashboard-cache.d.ts +0 -3
- package/dist/lib/dashboard-cache.d.ts.map +0 -1
- package/dist/lib/dashboard-cache.js +0 -97
- package/dist/lib/dashboard-cache.js.map +0 -1
- package/dist/lib/paths.d.ts +0 -1
- package/dist/lib/paths.d.ts.map +0 -1
- package/dist/lib/paths.js +0 -4
- package/dist/lib/paths.js.map +0 -1
- package/dist/lib/plugin-registry.d.ts +0 -18
- package/dist/lib/plugin-registry.d.ts.map +0 -1
- package/dist/lib/plugin-registry.js +0 -39
- package/dist/lib/plugin-registry.js.map +0 -1
- package/dist/lib/plugin-setup.d.ts +0 -23
- package/dist/lib/plugin-setup.d.ts.map +0 -1
- package/dist/lib/plugin-setup.js +0 -141
- package/dist/lib/plugin-setup.js.map +0 -1
- package/dist/lib/with-server.d.ts +0 -7
- package/dist/lib/with-server.d.ts.map +0 -1
- package/dist/lib/with-server.js +0 -28
- package/dist/lib/with-server.js.map +0 -1
- package/dist/mode.d.ts +0 -10
- package/dist/mode.d.ts.map +0 -1
- package/dist/mode.js +0 -40
- package/dist/mode.js.map +0 -1
- package/dist/plugin-files/.claude-plugin/plugin.json +0 -20
- package/dist/plugin-files/CLAUDE.md +0 -34
- package/dist/plugin-files/dist/command-registry.json +0 -235
- package/dist/plugin-files/dist/skills/devflow:context/SKILL.md +0 -49
- package/dist/plugin-files/dist/skills/devflow:docker/SKILL.md +0 -67
- package/dist/plugin-files/dist/skills/devflow:electron/SKILL.md +0 -67
- package/dist/plugin-files/dist/skills/devflow:graph/SKILL.md +0 -42
- package/dist/plugin-files/dist/skills/devflow:graphql/SKILL.md +0 -68
- package/dist/plugin-files/dist/skills/devflow:knowledge/SKILL.md +0 -42
- package/dist/plugin-files/dist/skills/devflow:memory/SKILL.md +0 -41
- package/dist/plugin-files/dist/skills/devflow:nest/SKILL.md +0 -68
- package/dist/plugin-files/dist/skills/devflow:nextjs/SKILL.md +0 -65
- package/dist/plugin-files/dist/skills/devflow:performance/SKILL.md +0 -67
- package/dist/plugin-files/dist/skills/devflow:react/SKILL.md +0 -85
- package/dist/plugin-files/dist/skills/devflow:tailwind/SKILL.md +0 -63
- package/dist/plugin-files/dist/skills/devflow:taro/SKILL.md +0 -66
- package/dist/plugin-files/dist/skills/devflow:vue/SKILL.md +0 -74
- package/dist/plugin-files/dist/skills/devflow:workflow/SKILL.md +0 -42
- package/dist/plugin-files/hooks/constitution.md +0 -20
- package/dist/plugin-files/hooks/post-tool-use +0 -16
- package/dist/plugin-files/hooks/pre-tool-use +0 -23
- package/dist/plugin-files/hooks/session-start +0 -165
- package/dist/plugin-files/hooks/stop +0 -32
- package/dist/plugin-files/hooks.json +0 -52
- package/dist/plugin-files/package.json +0 -31
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { execSync } from "child_process";
|
|
2
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync, rmSync } from "fs";
|
|
3
|
-
import { join, dirname } from "path";
|
|
4
|
-
import { createRequire } from "module";
|
|
5
|
-
const require = createRequire(import.meta.url);
|
|
6
|
-
function getDashboardDir(projectRoot) {
|
|
7
|
-
return join(projectRoot, ".devflow", "dashboard");
|
|
8
|
-
}
|
|
9
|
-
function getVersionFile(projectRoot) {
|
|
10
|
-
return join(getDashboardDir(projectRoot), "version.txt");
|
|
11
|
-
}
|
|
12
|
-
function getCliVersion() {
|
|
13
|
-
try {
|
|
14
|
-
const pkg = require("../package.json");
|
|
15
|
-
return pkg.version ?? "0.0.0";
|
|
16
|
-
}
|
|
17
|
-
catch {
|
|
18
|
-
return "0.0.0";
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
function getTarGzPath() {
|
|
22
|
-
try {
|
|
23
|
-
const pkgJson = require.resolve("@devflow-tools/devflow/package.json");
|
|
24
|
-
const tarGz = join(dirname(pkgJson), "dist", "dashboard-standalone.tar.gz");
|
|
25
|
-
if (existsSync(tarGz))
|
|
26
|
-
return tarGz;
|
|
27
|
-
}
|
|
28
|
-
catch { }
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
export function isDashboardInstalled(projectRoot) {
|
|
32
|
-
const versionFile = getVersionFile(projectRoot);
|
|
33
|
-
if (!existsSync(versionFile))
|
|
34
|
-
return false;
|
|
35
|
-
try {
|
|
36
|
-
const cachedVersion = readFileSync(versionFile, "utf-8").trim();
|
|
37
|
-
return cachedVersion === getCliVersion() && existsSync(join(getDashboardDir(projectRoot), "apps", "dashboard", "server.js"));
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
export function ensureDashboardExtracted(projectRoot) {
|
|
44
|
-
const dashDir = getDashboardDir(projectRoot);
|
|
45
|
-
const versionFile = getVersionFile(projectRoot);
|
|
46
|
-
const cliVersion = getCliVersion();
|
|
47
|
-
if (isDashboardInstalled(projectRoot)) {
|
|
48
|
-
return dashDir;
|
|
49
|
-
}
|
|
50
|
-
// Clean old cache
|
|
51
|
-
if (existsSync(dashDir)) {
|
|
52
|
-
rmSync(dashDir, { recursive: true, force: true });
|
|
53
|
-
}
|
|
54
|
-
mkdirSync(dashDir, { recursive: true });
|
|
55
|
-
// Try to extract from npm package tar.gz
|
|
56
|
-
const tarGz = getTarGzPath();
|
|
57
|
-
if (tarGz) {
|
|
58
|
-
execSync(`tar -xzf "${tarGz}" -C "${dashDir}"`, { stdio: "pipe" });
|
|
59
|
-
writeFileSync(versionFile, cliVersion);
|
|
60
|
-
return dashDir;
|
|
61
|
-
}
|
|
62
|
-
// Monorepo dev fallback: symlink next.js standalone build output
|
|
63
|
-
try {
|
|
64
|
-
const pkgJson = require.resolve("@devflow-tools/devflow/package.json");
|
|
65
|
-
const repoRoot = join(dirname(pkgJson), "..", "..");
|
|
66
|
-
const standaloneDir = join(repoRoot, "apps", "dashboard", ".next", "standalone");
|
|
67
|
-
const staticDir = join(repoRoot, "apps", "dashboard", ".next", "static");
|
|
68
|
-
const publicDir = join(repoRoot, "apps", "dashboard", "public");
|
|
69
|
-
const serverPath = join(standaloneDir, "apps", "dashboard", "server.js");
|
|
70
|
-
if (!existsSync(serverPath)) {
|
|
71
|
-
throw new Error(`Dashboard build not found.\n` +
|
|
72
|
-
` Expected: ${serverPath}\n` +
|
|
73
|
-
` Run: npm run build:dist (requires Node >= 18)\n` +
|
|
74
|
-
` Or install from npm: npm install @devflow-tools/devflow@${cliVersion}`);
|
|
75
|
-
}
|
|
76
|
-
// Copy standalone output to cache
|
|
77
|
-
execSync(`cp -r "${standaloneDir}/"* "${dashDir}/"`, { stdio: "pipe" });
|
|
78
|
-
if (existsSync(staticDir)) {
|
|
79
|
-
const destStatic = join(dashDir, "apps", "dashboard", ".next");
|
|
80
|
-
mkdirSync(destStatic, { recursive: true });
|
|
81
|
-
execSync(`cp -r "${staticDir}" "${destStatic}/"`, { stdio: "pipe" });
|
|
82
|
-
}
|
|
83
|
-
if (existsSync(publicDir)) {
|
|
84
|
-
execSync(`cp -r "${publicDir}" "${dashDir}/"`, { stdio: "pipe" });
|
|
85
|
-
}
|
|
86
|
-
writeFileSync(versionFile, cliVersion);
|
|
87
|
-
return dashDir;
|
|
88
|
-
}
|
|
89
|
-
catch (e) {
|
|
90
|
-
// Clean up partial cache
|
|
91
|
-
if (existsSync(dashDir)) {
|
|
92
|
-
rmSync(dashDir, { recursive: true, force: true });
|
|
93
|
-
}
|
|
94
|
-
throw e;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=dashboard-cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-cache.js","sourceRoot":"","sources":["../../src/lib/dashboard-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/paths.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=paths.d.ts.map
|
package/dist/lib/paths.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":""}
|
package/dist/lib/paths.js
DELETED
package/dist/lib/paths.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,iGAAiG"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export interface PluginInfo {
|
|
2
|
-
name: string;
|
|
3
|
-
version: string;
|
|
4
|
-
description: string;
|
|
5
|
-
tags: string[];
|
|
6
|
-
compatibleStacks: string[];
|
|
7
|
-
size: string;
|
|
8
|
-
author: string;
|
|
9
|
-
homepage: string;
|
|
10
|
-
}
|
|
11
|
-
export interface PluginRegistry {
|
|
12
|
-
version: string;
|
|
13
|
-
lastUpdated: string;
|
|
14
|
-
plugins: PluginInfo[];
|
|
15
|
-
}
|
|
16
|
-
export declare function loadPluginRegistry(): PluginRegistry;
|
|
17
|
-
export declare function getInstalledPlugins(): string[];
|
|
18
|
-
//# sourceMappingURL=plugin-registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-registry.d.ts","sourceRoot":"","sources":["../../src/lib/plugin-registry.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,wBAAgB,kBAAkB,IAAI,cAAc,CAqBnD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAS9C"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from 'fs';
|
|
2
|
-
import { join, dirname } from 'path';
|
|
3
|
-
import { execSync } from 'child_process';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
-
const __dirname = dirname(__filename);
|
|
7
|
-
export function loadPluginRegistry() {
|
|
8
|
-
const paths = [
|
|
9
|
-
join(process.cwd(), 'plugin-registry.json'),
|
|
10
|
-
join(__dirname, '../plugin-registry.json'),
|
|
11
|
-
join(process.cwd(), 'packages/devflow/plugin-registry.json'),
|
|
12
|
-
];
|
|
13
|
-
for (const p of paths) {
|
|
14
|
-
try {
|
|
15
|
-
const content = readFileSync(p, 'utf-8');
|
|
16
|
-
return JSON.parse(content);
|
|
17
|
-
}
|
|
18
|
-
catch {
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return {
|
|
23
|
-
version: '0.0.0',
|
|
24
|
-
lastUpdated: new Date().toISOString(),
|
|
25
|
-
plugins: [],
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
export function getInstalledPlugins() {
|
|
29
|
-
try {
|
|
30
|
-
const result = execSync('npm list -g --depth=0 --json', { encoding: 'utf-8' });
|
|
31
|
-
const list = JSON.parse(result);
|
|
32
|
-
return Object.keys(list.dependencies || {})
|
|
33
|
-
.filter(name => name.startsWith('@devflow-tools/plugin-'));
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
return [];
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=plugin-registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-registry.js","sourceRoot":"","sources":["../../src/lib/plugin-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAmBtC,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,sBAAsB,CAAC;QAC3C,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uCAAuC,CAAC;KAC7D,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,8BAA8B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;aACxC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Locate plugin files directory.
|
|
3
|
-
* Priority: bundled dist/plugin-files (npm) -> monorepo plugins/claude-code (dev)
|
|
4
|
-
*/
|
|
5
|
-
export declare function getPluginFilesDir(): string;
|
|
6
|
-
/**
|
|
7
|
-
* Ensure the devflow plugin is enabled in ~/.claude/settings.json.
|
|
8
|
-
* Idempotent: skips if already present.
|
|
9
|
-
*/
|
|
10
|
-
export declare function ensurePluginEnabled(settingsPath: string): void;
|
|
11
|
-
/**
|
|
12
|
-
* Write .claude/mcp.json for the project.
|
|
13
|
-
* Merges with existing config; does not overwrite user's custom servers.
|
|
14
|
-
* Skips if devflow server already configured.
|
|
15
|
-
*/
|
|
16
|
-
export declare function writeMcpConfig(projectRoot: string, mcpCommand: string): void;
|
|
17
|
-
/**
|
|
18
|
-
* Deploy plugin files to cache directory.
|
|
19
|
-
* Copies hooks, hooks.json, CLAUDE.md, package.json, dist/ to cache.
|
|
20
|
-
* Also copies dist/skills/ to ~/.claude/skills/ (Claude Code's actual skill load location).
|
|
21
|
-
*/
|
|
22
|
-
export declare function deployPlugin(pluginFilesDir: string, cacheBaseDir: string, version: string, globalSkillsDir?: string): void;
|
|
23
|
-
//# sourceMappingURL=plugin-setup.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-setup.d.ts","sourceRoot":"","sources":["../../src/lib/plugin-setup.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAgB1C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAsB9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAsB5E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,GACvB,IAAI,CAuCN"}
|
package/dist/lib/plugin-setup.js
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync, cpSync, readdirSync, statSync, rmSync, } from "node:fs";
|
|
2
|
-
import { join, dirname } from "node:path";
|
|
3
|
-
const PLUGIN_KEY = "@devflow-tools/claude-code-plugin@devflow-local";
|
|
4
|
-
const MARKETPLACE = "devflow-local";
|
|
5
|
-
const PLUGIN_NAME = "@devflow-tools/claude-code-plugin";
|
|
6
|
-
/**
|
|
7
|
-
* Locate plugin files directory.
|
|
8
|
-
* Priority: bundled dist/plugin-files (npm) -> monorepo plugins/claude-code (dev)
|
|
9
|
-
*/
|
|
10
|
-
export function getPluginFilesDir() {
|
|
11
|
-
// npm user: files are at dist/plugin-files relative to compiled JS
|
|
12
|
-
const bundled = join(dirname(new URL(import.meta.url).pathname), "../../plugin-files");
|
|
13
|
-
if (existsSync(bundled))
|
|
14
|
-
return bundled;
|
|
15
|
-
// monorepo dev: files are at plugins/claude-code relative to repo root
|
|
16
|
-
const monorepo = join(dirname(new URL(import.meta.url).pathname), "../../../../plugins/claude-code");
|
|
17
|
-
if (existsSync(monorepo))
|
|
18
|
-
return monorepo;
|
|
19
|
-
throw new Error("Plugin files not found. Run `npm run build` first.");
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Ensure the devflow plugin is enabled in ~/.claude/settings.json.
|
|
23
|
-
* Idempotent: skips if already present.
|
|
24
|
-
*/
|
|
25
|
-
export function ensurePluginEnabled(settingsPath) {
|
|
26
|
-
let settings = {};
|
|
27
|
-
if (existsSync(settingsPath)) {
|
|
28
|
-
try {
|
|
29
|
-
settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
console.warn("Warning: Could not parse settings.json, skipping plugin enablement");
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
mkdirSync(dirname(settingsPath), { recursive: true });
|
|
38
|
-
}
|
|
39
|
-
const enabledPlugins = settings.enabledPlugins ?? {};
|
|
40
|
-
if (enabledPlugins[PLUGIN_KEY] === true)
|
|
41
|
-
return;
|
|
42
|
-
enabledPlugins[PLUGIN_KEY] = true;
|
|
43
|
-
settings.enabledPlugins = enabledPlugins;
|
|
44
|
-
writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Write .claude/mcp.json for the project.
|
|
48
|
-
* Merges with existing config; does not overwrite user's custom servers.
|
|
49
|
-
* Skips if devflow server already configured.
|
|
50
|
-
*/
|
|
51
|
-
export function writeMcpConfig(projectRoot, mcpCommand) {
|
|
52
|
-
const claudeDir = join(projectRoot, ".claude");
|
|
53
|
-
const mcpPath = join(claudeDir, "mcp.json");
|
|
54
|
-
let existing = {};
|
|
55
|
-
if (existsSync(mcpPath)) {
|
|
56
|
-
try {
|
|
57
|
-
existing = JSON.parse(readFileSync(mcpPath, "utf-8"));
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
console.warn("Warning: Could not parse existing mcp.json, skipping MCP config");
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
mkdirSync(claudeDir, { recursive: true });
|
|
66
|
-
}
|
|
67
|
-
const mcpServers = existing.mcpServers ?? {};
|
|
68
|
-
if (mcpServers.devflow)
|
|
69
|
-
return; // already configured, don't overwrite
|
|
70
|
-
mcpServers.devflow = { command: mcpCommand, args: [], env: {} };
|
|
71
|
-
existing.mcpServers = mcpServers;
|
|
72
|
-
writeFileSync(mcpPath, JSON.stringify(existing, null, 2));
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Deploy plugin files to cache directory.
|
|
76
|
-
* Copies hooks, hooks.json, CLAUDE.md, package.json, dist/ to cache.
|
|
77
|
-
* Also copies dist/skills/ to ~/.claude/skills/ (Claude Code's actual skill load location).
|
|
78
|
-
*/
|
|
79
|
-
export function deployPlugin(pluginFilesDir, cacheBaseDir, version, globalSkillsDir) {
|
|
80
|
-
const target = join(cacheBaseDir, MARKETPLACE, PLUGIN_NAME, version);
|
|
81
|
-
mkdirSync(target, { recursive: true });
|
|
82
|
-
// Copy hooks/
|
|
83
|
-
const hooksSrc = join(pluginFilesDir, "hooks");
|
|
84
|
-
if (existsSync(hooksSrc)) {
|
|
85
|
-
copyDirSync(hooksSrc, join(target, "hooks"));
|
|
86
|
-
}
|
|
87
|
-
// Copy static files
|
|
88
|
-
for (const file of ["hooks.json", "CLAUDE.md", "package.json"]) {
|
|
89
|
-
const src = join(pluginFilesDir, file);
|
|
90
|
-
if (existsSync(src))
|
|
91
|
-
cpSync(src, join(target, file), { force: true });
|
|
92
|
-
}
|
|
93
|
-
// Copy .claude-plugin/plugin.json
|
|
94
|
-
const pluginJsonSrc = join(pluginFilesDir, ".claude-plugin", "plugin.json");
|
|
95
|
-
if (existsSync(pluginJsonSrc)) {
|
|
96
|
-
mkdirSync(join(target, ".claude-plugin"), { recursive: true });
|
|
97
|
-
cpSync(pluginJsonSrc, join(target, ".claude-plugin", "plugin.json"), { force: true });
|
|
98
|
-
}
|
|
99
|
-
// Copy dist/ (command-registry.json + skills/)
|
|
100
|
-
const distSrc = join(pluginFilesDir, "dist");
|
|
101
|
-
if (existsSync(distSrc)) {
|
|
102
|
-
copyDirSync(distSrc, join(target, "dist"));
|
|
103
|
-
}
|
|
104
|
-
// Copy injected skills to ~/.claude/skills/
|
|
105
|
-
if (globalSkillsDir) {
|
|
106
|
-
const skillsSrc = join(pluginFilesDir, "dist", "skills");
|
|
107
|
-
if (existsSync(skillsSrc)) {
|
|
108
|
-
copyDirSync(skillsSrc, globalSkillsDir);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// Clean old versions
|
|
112
|
-
cleanOldVersions(target);
|
|
113
|
-
}
|
|
114
|
-
function copyDirSync(src, dest) {
|
|
115
|
-
mkdirSync(dest, { recursive: true });
|
|
116
|
-
for (const entry of readdirSync(src)) {
|
|
117
|
-
const srcPath = join(src, entry);
|
|
118
|
-
const destPath = join(dest, entry);
|
|
119
|
-
if (statSync(srcPath).isDirectory()) {
|
|
120
|
-
copyDirSync(srcPath, destPath);
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
cpSync(srcPath, destPath, { force: true });
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
function cleanOldVersions(currentTarget) {
|
|
128
|
-
const parentDir = join(currentTarget, "..");
|
|
129
|
-
if (!existsSync(parentDir))
|
|
130
|
-
return;
|
|
131
|
-
const currentVersion = currentTarget.split("/").pop() ?? "";
|
|
132
|
-
for (const entry of readdirSync(parentDir)) {
|
|
133
|
-
if (entry !== currentVersion) {
|
|
134
|
-
const entryPath = join(parentDir, entry);
|
|
135
|
-
if (statSync(entryPath).isDirectory()) {
|
|
136
|
-
rmSync(entryPath, { recursive: true, force: true });
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=plugin-setup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-setup.js","sourceRoot":"","sources":["../../src/lib/plugin-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { DevFlowApiClient } from "@devflow-tools/sdk";
|
|
2
|
-
export interface WithServerOptions {
|
|
3
|
-
skipServer?: boolean;
|
|
4
|
-
serverUrl?: string;
|
|
5
|
-
}
|
|
6
|
-
export declare function withServer<T>(projectRoot: string, serverFn: (client: DevFlowApiClient) => Promise<T>, localFn: () => Promise<T>, opts?: WithServerOptions): Promise<T>;
|
|
7
|
-
//# sourceMappingURL=with-server.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"with-server.d.ts","sourceRoot":"","sources":["../../src/lib/with-server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAMtD,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,UAAU,CAAC,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,EAClD,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,CAAC,CAAC,CAyBZ"}
|
package/dist/lib/with-server.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import { DevFlowApiClient } from "@devflow-tools/sdk";
|
|
3
|
-
const DEFAULT_SERVER_URL = process.env.DEVFLOW_SERVER_URL ?? "http://localhost:13337";
|
|
4
|
-
const pingCache = new Map();
|
|
5
|
-
const PING_TTL_MS = 30_000;
|
|
6
|
-
export async function withServer(projectRoot, serverFn, localFn, opts = {}) {
|
|
7
|
-
const serverUrl = opts.serverUrl ?? DEFAULT_SERVER_URL;
|
|
8
|
-
if (opts.skipServer) {
|
|
9
|
-
return localFn();
|
|
10
|
-
}
|
|
11
|
-
let reachable = false;
|
|
12
|
-
const cached = pingCache.get(serverUrl);
|
|
13
|
-
if (cached && Date.now() - cached.ts < PING_TTL_MS) {
|
|
14
|
-
reachable = cached.result;
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
const client = new DevFlowApiClient({ baseUrl: serverUrl, projectRoot });
|
|
18
|
-
reachable = await client.ping();
|
|
19
|
-
pingCache.set(serverUrl, { result: reachable, ts: Date.now() });
|
|
20
|
-
}
|
|
21
|
-
if (reachable) {
|
|
22
|
-
const client = new DevFlowApiClient({ baseUrl: serverUrl, projectRoot });
|
|
23
|
-
return serverFn(client);
|
|
24
|
-
}
|
|
25
|
-
console.error(chalk.dim(" (server not running, using local engine — telemetry disabled)"));
|
|
26
|
-
return localFn();
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=with-server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"with-server.js","sourceRoot":"","sources":["../../src/lib/with-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,wBAAwB,CAAC;AACtF,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2C,CAAC;AACrE,MAAM,WAAW,GAAG,MAAM,CAAC;AAO3B,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,WAAmB,EACnB,QAAkD,EAClD,OAAyB,EACzB,OAA0B,EAAE;IAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAEvD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC;QACnD,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QACzE,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAChC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC,CAAC;IAC5F,OAAO,OAAO,EAAE,CAAC;AACnB,CAAC"}
|
package/dist/mode.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export type RunMode = "local" | "server";
|
|
2
|
-
export interface CLIConfig {
|
|
3
|
-
serverUrl?: string;
|
|
4
|
-
apiKey?: string;
|
|
5
|
-
projectRoot: string;
|
|
6
|
-
mode: RunMode;
|
|
7
|
-
}
|
|
8
|
-
export declare function detectMode(projectRoot: string): RunMode;
|
|
9
|
-
export declare function loadConfig(projectRoot: string): CLIConfig;
|
|
10
|
-
//# sourceMappingURL=mode.d.ts.map
|
package/dist/mode.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mode.d.ts","sourceRoot":"","sources":["../src/mode.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEzC,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAYvD;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAsBzD"}
|
package/dist/mode.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from "fs";
|
|
2
|
-
import { join } from "path";
|
|
3
|
-
export function detectMode(projectRoot) {
|
|
4
|
-
const configPath = join(projectRoot, ".devflow", "config.json");
|
|
5
|
-
if (existsSync(configPath)) {
|
|
6
|
-
try {
|
|
7
|
-
const raw = readFileSync(configPath, "utf-8");
|
|
8
|
-
const config = JSON.parse(raw);
|
|
9
|
-
if (config.serverUrl)
|
|
10
|
-
return "server";
|
|
11
|
-
}
|
|
12
|
-
catch {
|
|
13
|
-
// corrupt config — fall back to local
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
return "local";
|
|
17
|
-
}
|
|
18
|
-
export function loadConfig(projectRoot) {
|
|
19
|
-
const configPath = join(projectRoot, ".devflow", "config.json");
|
|
20
|
-
let serverUrl;
|
|
21
|
-
let apiKey;
|
|
22
|
-
if (existsSync(configPath)) {
|
|
23
|
-
try {
|
|
24
|
-
const raw = readFileSync(configPath, "utf-8");
|
|
25
|
-
const config = JSON.parse(raw);
|
|
26
|
-
serverUrl = config.serverUrl;
|
|
27
|
-
apiKey = config.apiKey;
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
// ignore corrupt config
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return {
|
|
34
|
-
projectRoot,
|
|
35
|
-
serverUrl,
|
|
36
|
-
apiKey,
|
|
37
|
-
mode: serverUrl ? "server" : "local",
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=mode.js.map
|
package/dist/mode.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mode.js","sourceRoot":"","sources":["../src/mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAW5B,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAChE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,MAAM,CAAC,SAAS;gBAAE,OAAO,QAAQ,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAChE,IAAI,SAA6B,CAAC;IAClC,IAAI,MAA0B,CAAC;IAE/B,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAC7B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW;QACX,SAAS;QACT,MAAM;QACN,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@devflow-tools/claude-code-plugin",
|
|
3
|
-
"description": "DevFlow — Developer Intelligence Platform: project context, code graph, knowledge base, memory engine, and workflow automation with 14 domain plugins",
|
|
4
|
-
"version": "0.8.1",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "DevFlow"
|
|
7
|
-
},
|
|
8
|
-
"homepage": "https://github.com/shilongfeicool/dev-flow",
|
|
9
|
-
"repository": "https://github.com/shilongfeicool/dev-flow",
|
|
10
|
-
"license": "MIT",
|
|
11
|
-
"keywords": [
|
|
12
|
-
"devflow",
|
|
13
|
-
"context",
|
|
14
|
-
"knowledge-base",
|
|
15
|
-
"code-graph",
|
|
16
|
-
"memory",
|
|
17
|
-
"workflow",
|
|
18
|
-
"development"
|
|
19
|
-
]
|
|
20
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# DevFlow Plugin for Claude Code
|
|
2
|
-
|
|
3
|
-
This plugin provides the DevFlow developer intelligence platform inside Claude Code.
|
|
4
|
-
|
|
5
|
-
## What You Get
|
|
6
|
-
|
|
7
|
-
- **Context Engine** — Search code by natural language query. Use `/devflow:context` before making any code change.
|
|
8
|
-
- **Graph Engine** — View architecture layers, file groups, and dependency graphs. Use `/devflow:graph` to understand module structure.
|
|
9
|
-
- **Memory Engine** — Access project conventions, tech stack, and past decisions. Use `/devflow:memory` at the start of every task.
|
|
10
|
-
- **Knowledge Engine** — Search official docs for React, Vue, NestJS, TypeScript, and more. Use `/devflow:knowledge` when unsure about API usage.
|
|
11
|
-
- **Workflow Engine** — Run standardized development workflows (bug fixes, features, reviews). Use `/devflow:workflow` for complex multi-step tasks.
|
|
12
|
-
- **Domain Plugins** — Specialized expertise for 14 frameworks/tools via `/devflow:react`, `/devflow:git`, `/devflow:nextjs`, etc.
|
|
13
|
-
|
|
14
|
-
## How to Use
|
|
15
|
-
|
|
16
|
-
1. **Before any code change:** `/devflow:context` to understand the current implementation
|
|
17
|
-
2. **Before writing new code:** `/devflow:memory` to check conventions
|
|
18
|
-
3. **When stuck on API:** `/devflow:knowledge` to search docs
|
|
19
|
-
4. **When debugging:** `/devflow:graph` to trace dependencies
|
|
20
|
-
5. **For complex workflows:** `/devflow:workflow` or domain-specific commands like `/devflow:react`
|
|
21
|
-
|
|
22
|
-
## Architecture
|
|
23
|
-
|
|
24
|
-
This plugin is a thin skill layer. The real work happens in:
|
|
25
|
-
- `devflow-mcp` — MCP stdio server (auto-started by this plugin)
|
|
26
|
-
- `devflow` CLI — Command-line interface for direct usage
|
|
27
|
-
|
|
28
|
-
## Project Setup
|
|
29
|
-
|
|
30
|
-
If DevFlow hasn't been initialized in the current project yet, run:
|
|
31
|
-
```
|
|
32
|
-
devflow init
|
|
33
|
-
devflow index
|
|
34
|
-
```
|