ai-spector 0.8.50 → 0.8.52
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/dist/cli.js +0 -0
- package/dist/core/config/load.d.ts +1 -1
- package/dist/core/config/load.d.ts.map +1 -1
- package/dist/core/config/load.js +7 -2
- package/dist/core/config/load.js.map +1 -1
- package/dist/core/course/catalog.d.ts +6 -0
- package/dist/core/course/catalog.d.ts.map +1 -1
- package/dist/core/course/catalog.js +45 -15
- package/dist/core/course/catalog.js.map +1 -1
- package/dist/core/course/html-shell.d.ts.map +1 -1
- package/dist/core/course/html-shell.js +20 -13
- package/dist/core/course/html-shell.js.map +1 -1
- package/dist/core/course/locale.js +4 -4
- package/dist/core/course/locale.js.map +1 -1
- package/dist/interfaces/mcp/server.js +0 -0
- package/package.json +5 -2
- package/scaffold/cursor/skills/ai-spector-course/SKILL.md +1 -1
- package/scaffold/cursor/skills/ai-spector-course/references/course-guide.md +1 -1
- package/website/README.md +50 -0
- package/website/docs/01-get-started/01-prerequisites-and-init.md +82 -0
- package/website/docs/01-get-started/02-setup-and-skills.md +50 -0
- package/website/docs/01-get-started/README.md +10 -0
- package/website/docs/01-get-started/_category_.json +4 -0
- package/website/docs/02-chat-basics/01-how-chat-works.md +48 -0
- package/website/docs/02-chat-basics/02-workspace-and-tasks.md +55 -0
- package/website/docs/02-chat-basics/README.md +10 -0
- package/website/docs/02-chat-basics/_category_.json +4 -0
- package/website/docs/03-graph/01-sources-and-analyze.md +44 -0
- package/website/docs/03-graph/02-validate-index-explore.md +57 -0
- package/website/docs/03-graph/README.md +10 -0
- package/website/docs/03-graph/_category_.json +4 -0
- package/website/docs/04-generate/01-generate-srs.md +63 -0
- package/website/docs/04-generate/02-basic-design.md +44 -0
- package/website/docs/04-generate/README.md +12 -0
- package/website/docs/04-generate/_category_.json +4 -0
- package/website/docs/05-prototype/01-translations.md +26 -0
- package/website/docs/05-prototype/02-build-prototype.md +54 -0
- package/website/docs/05-prototype/README.md +10 -0
- package/website/docs/05-prototype/_category_.json +4 -0
- package/website/docs/06-review/01-review-comments-changes.md +55 -0
- package/website/docs/06-review/README.md +9 -0
- package/website/docs/06-review/_category_.json +4 -0
- package/website/docs/07-advanced/01-custom-templates.md +30 -0
- package/website/docs/07-advanced/02-search-and-editors.md +36 -0
- package/website/docs/07-advanced/README.md +10 -0
- package/website/docs/07-advanced/_category_.json +4 -0
- package/website/docs/README.md +55 -0
- package/website/docs/vi/01-get-started/01-prerequisites-and-init.md +72 -0
- package/website/docs/vi/01-get-started/02-setup-and-skills.md +43 -0
- package/website/docs/vi/01-get-started/README.md +10 -0
- package/website/docs/vi/01-get-started/_category_.json +4 -0
- package/website/docs/vi/02-chat-basics/01-how-chat-works.md +47 -0
- package/website/docs/vi/02-chat-basics/02-workspace-and-tasks.md +41 -0
- package/website/docs/vi/02-chat-basics/README.md +10 -0
- package/website/docs/vi/02-chat-basics/_category_.json +4 -0
- package/website/docs/vi/03-graph/01-sources-and-analyze.md +43 -0
- package/website/docs/vi/03-graph/02-validate-index-explore.md +48 -0
- package/website/docs/vi/03-graph/README.md +10 -0
- package/website/docs/vi/03-graph/_category_.json +4 -0
- package/website/docs/vi/04-generate/01-generate-srs.md +52 -0
- package/website/docs/vi/04-generate/02-basic-design.md +32 -0
- package/website/docs/vi/04-generate/README.md +12 -0
- package/website/docs/vi/04-generate/_category_.json +4 -0
- package/website/docs/vi/05-prototype/01-translations.md +21 -0
- package/website/docs/vi/05-prototype/02-build-prototype.md +46 -0
- package/website/docs/vi/05-prototype/README.md +10 -0
- package/website/docs/vi/05-prototype/_category_.json +4 -0
- package/website/docs/vi/06-review/01-review-comments-changes.md +50 -0
- package/website/docs/vi/06-review/README.md +9 -0
- package/website/docs/vi/06-review/_category_.json +4 -0
- package/website/docs/vi/07-advanced/01-custom-templates.md +27 -0
- package/website/docs/vi/07-advanced/02-search-and-editors.md +35 -0
- package/website/docs/vi/07-advanced/README.md +10 -0
- package/website/docs/vi/07-advanced/_category_.json +4 -0
- package/website/docs/vi/README.md +54 -0
package/dist/cli.js
CHANGED
|
File without changes
|
|
@@ -6,7 +6,7 @@ export declare function packageBundleRoot(): string;
|
|
|
6
6
|
export declare function scaffoldBundleRoot(): string;
|
|
7
7
|
/** Bundled UI themes for HTML prototypes (`assets/themes/<name>/DESIGN.md`). */
|
|
8
8
|
export declare function themesBundleRoot(): string;
|
|
9
|
-
/** Step-by-step user course (`website/docs/`,
|
|
9
|
+
/** Step-by-step user course (`website/docs/`, legacy path `docs/course/`). */
|
|
10
10
|
export declare function courseBundleRoot(): string;
|
|
11
11
|
/** Cursor commands/skills/MCP bundled under scaffold (not `.cursor/` — root gitignore). */
|
|
12
12
|
export declare function scaffoldCursorBundleRoot(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/core/config/load.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAIjG,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAIhE,mEAAmE;AACnE,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,sDAAsD;AACtD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/core/config/load.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAIjG,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAIhE,mEAAmE;AACnE,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,sDAAsD;AACtD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,IAAI,MAAM,CAOzC;AAGD,2FAA2F;AAC3F,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,wBAAgB,eAAe,CAAC,KAAK,SAAgB,GAAG,MAAM,CAkB7D;AAkBD,wBAAsB,iBAAiB,CACrC,IAAI,SAAoB,GACvB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAsCtE;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAM9B;AAqBD,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,KAAK,CAAC;IAAE,QAAQ,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAcvE;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAErE;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAMpE;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,EACrB,KAAK,GAAE,UAAU,GAAG,QAAqB,GACxC,MAAM,CAER;AAED,mFAAmF;AACnF,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,GACpB,MAAM,CAER;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC,CASD;AAED,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAS9E"}
|
package/dist/core/config/load.js
CHANGED
|
@@ -17,9 +17,14 @@ export function scaffoldBundleRoot() {
|
|
|
17
17
|
export function themesBundleRoot() {
|
|
18
18
|
return join(packageBundleRoot(), "assets", "themes");
|
|
19
19
|
}
|
|
20
|
-
/** Step-by-step user course (`website/docs/`,
|
|
20
|
+
/** Step-by-step user course (`website/docs/`, legacy path `docs/course/`). */
|
|
21
21
|
export function courseBundleRoot() {
|
|
22
|
-
|
|
22
|
+
const root = packageBundleRoot();
|
|
23
|
+
const primary = join(root, "website", "docs");
|
|
24
|
+
if (existsSync(primary)) {
|
|
25
|
+
return primary;
|
|
26
|
+
}
|
|
27
|
+
return join(root, "docs", "course");
|
|
23
28
|
}
|
|
24
29
|
/** Cursor commands/skills/MCP bundled under scaffold (not `.cursor/` — root gitignore). */
|
|
25
30
|
export function scaffoldCursorBundleRoot() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/core/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAE1C,mEAAmE;AACnE,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACtE,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,iBAAiB,EAAE,EAAE,UAAU,CAAC,CAAC;AAC/C,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/core/config/load.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,12 @@ export interface CoursePage {
|
|
|
9
9
|
sectionId?: string;
|
|
10
10
|
sectionTitle?: string;
|
|
11
11
|
}
|
|
12
|
+
export declare class CourseNotFoundError extends Error {
|
|
13
|
+
readonly locale: CourseLocale;
|
|
14
|
+
readonly checkedPaths: string[];
|
|
15
|
+
constructor(locale: CourseLocale, checkedPaths: string[]);
|
|
16
|
+
}
|
|
17
|
+
export declare function formatCourseNotFoundMessage(locale: CourseLocale, checkedPaths: string[]): string;
|
|
12
18
|
/** Prefer project-local course copy when present; otherwise bundled docs. */
|
|
13
19
|
export declare function resolveCourseRoot(projectRoot?: string, locale?: CourseLocale): Promise<string>;
|
|
14
20
|
export declare function loadCoursePages(courseRoot: string, locale?: CourseLocale): Promise<CoursePage[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/core/course/catalog.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGvE,MAAM,WAAW,UAAU;IACzB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/core/course/catalog.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGvE,MAAM,WAAW,UAAU;IACzB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAqED,qBAAa,mBAAoB,SAAQ,KAAK;IAE1C,QAAQ,CAAC,MAAM,EAAE,YAAY;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE;gBADtB,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,EAAE;CAKlC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,CAgBR;AAED,6EAA6E;AAC7E,wBAAsB,iBAAiB,CACrC,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,GAAE,YAAoC,GAC3C,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,YAAoC,GAC3C,OAAO,CAAC,UAAU,EAAE,CAAC,CAqBvB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAGpF;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,UAAU,EAAE,EACnB,IAAI,EAAE,MAAM,GACX;IAAE,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAA;CAAE,CAYhE"}
|
|
@@ -26,7 +26,7 @@ async function collectMarkdownFiles(dir, base = dir, inSection = false) {
|
|
|
26
26
|
}
|
|
27
27
|
continue;
|
|
28
28
|
}
|
|
29
|
-
if (ent.name === "README.md"
|
|
29
|
+
if (ent.name === "README.md") {
|
|
30
30
|
files.push(relative(base, abs));
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -36,9 +36,6 @@ function slugFromRelPath(relPath) {
|
|
|
36
36
|
if (relPath === "README.md") {
|
|
37
37
|
return "index";
|
|
38
38
|
}
|
|
39
|
-
if (relPath === "00-overview.md") {
|
|
40
|
-
return "00-overview";
|
|
41
|
-
}
|
|
42
39
|
if (relPath.endsWith("/README.md")) {
|
|
43
40
|
return relPath.replace(/\/README\.md$/, "");
|
|
44
41
|
}
|
|
@@ -48,9 +45,6 @@ function orderFromRelPath(relPath) {
|
|
|
48
45
|
if (relPath === "README.md") {
|
|
49
46
|
return -2;
|
|
50
47
|
}
|
|
51
|
-
if (relPath === "00-overview.md") {
|
|
52
|
-
return -1;
|
|
53
|
-
}
|
|
54
48
|
const parts = relPath.split("/");
|
|
55
49
|
const sectionMatch = /^(\d{2})-/.exec(parts[0] ?? "");
|
|
56
50
|
const section = sectionMatch ? Number(sectionMatch[1]) : 99;
|
|
@@ -68,26 +62,62 @@ function titleFromMarkdown(markdown, fallback) {
|
|
|
68
62
|
}
|
|
69
63
|
return line.slice(2).trim();
|
|
70
64
|
}
|
|
65
|
+
export class CourseNotFoundError extends Error {
|
|
66
|
+
locale;
|
|
67
|
+
checkedPaths;
|
|
68
|
+
constructor(locale, checkedPaths) {
|
|
69
|
+
super(formatCourseNotFoundMessage(locale, checkedPaths));
|
|
70
|
+
this.locale = locale;
|
|
71
|
+
this.checkedPaths = checkedPaths;
|
|
72
|
+
this.name = "CourseNotFoundError";
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function formatCourseNotFoundMessage(locale, checkedPaths) {
|
|
76
|
+
const langLabel = locale === "vi" ? "Vietnamese" : "English";
|
|
77
|
+
const lines = [
|
|
78
|
+
`Course files not found (${langLabel}).`,
|
|
79
|
+
"",
|
|
80
|
+
"Checked:",
|
|
81
|
+
...checkedPaths.map((p) => ` - ${p}`),
|
|
82
|
+
"",
|
|
83
|
+
"Fix:",
|
|
84
|
+
" 1. Reinstall ai-spector (course ships in node_modules/ai-spector/website/docs/):",
|
|
85
|
+
" npm install ai-spector",
|
|
86
|
+
" 2. Or add a local copy in your project:",
|
|
87
|
+
" docs/course/ (optional override)",
|
|
88
|
+
" 3. From the ai-spector repo: edit website/docs/ (docs/course is a dev symlink).",
|
|
89
|
+
];
|
|
90
|
+
return lines.join("\n");
|
|
91
|
+
}
|
|
71
92
|
/** Prefer project-local course copy when present; otherwise bundled docs. */
|
|
72
93
|
export async function resolveCourseRoot(projectRoot, locale = DEFAULT_COURSE_LOCALE) {
|
|
73
94
|
const bundled = courseBundleRoot();
|
|
74
|
-
const
|
|
95
|
+
const local = projectRoot ? join(projectRoot, "docs", "course") : undefined;
|
|
75
96
|
if (locale === "vi") {
|
|
76
|
-
const
|
|
77
|
-
|
|
97
|
+
const checkedPaths = [];
|
|
98
|
+
if (local) {
|
|
99
|
+
checkedPaths.push(join(local, "vi"));
|
|
100
|
+
}
|
|
101
|
+
checkedPaths.push(join(bundled, "vi"));
|
|
102
|
+
for (const root of checkedPaths) {
|
|
78
103
|
if (await pathExists(root)) {
|
|
79
104
|
return root;
|
|
80
105
|
}
|
|
81
106
|
}
|
|
82
|
-
throw new
|
|
107
|
+
throw new CourseNotFoundError(locale, checkedPaths);
|
|
83
108
|
}
|
|
84
|
-
|
|
85
|
-
|
|
109
|
+
const checkedPaths = [];
|
|
110
|
+
if (local) {
|
|
111
|
+
checkedPaths.push(local);
|
|
86
112
|
if (await pathExists(local)) {
|
|
87
113
|
return local;
|
|
88
114
|
}
|
|
89
115
|
}
|
|
90
|
-
|
|
116
|
+
checkedPaths.push(bundled);
|
|
117
|
+
if (await pathExists(bundled)) {
|
|
118
|
+
return bundled;
|
|
119
|
+
}
|
|
120
|
+
throw new CourseNotFoundError(locale, checkedPaths);
|
|
91
121
|
}
|
|
92
122
|
export async function loadCoursePages(courseRoot, locale = DEFAULT_COURSE_LOCALE) {
|
|
93
123
|
const relPaths = await collectMarkdownFiles(courseRoot);
|
|
@@ -114,7 +144,7 @@ export function pageBySlug(pages, slug) {
|
|
|
114
144
|
return pages.find((p) => p.slug === normalized);
|
|
115
145
|
}
|
|
116
146
|
export function neighbors(pages, slug) {
|
|
117
|
-
const navPages = pages
|
|
147
|
+
const navPages = pages;
|
|
118
148
|
const current = pageBySlug(pages, slug);
|
|
119
149
|
if (!current) {
|
|
120
150
|
return {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/core/course/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAqB,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAanE,MAAM,WAAW,GAAG,gBAAgB,CAAC;AACrC,MAAM,WAAW,GAAG,WAAW,CAAC;AAEhC,KAAK,UAAU,oBAAoB,CACjC,GAAW,EACX,IAAI,GAAG,GAAG,EACV,SAAS,GAAG,KAAK;IAEjB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACtB,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,oBAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3D,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YAClC,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/core/course/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-shell.d.ts","sourceRoot":"","sources":["../../../src/core/course/html-shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAiXrB,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"html-shell.d.ts","sourceRoot":"","sources":["../../../src/core/course/html-shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAiXrB,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAwHD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAiGpE"}
|
|
@@ -173,7 +173,7 @@ button { font: inherit; cursor: pointer; }
|
|
|
173
173
|
.nav-group a.active { background: var(--accent-soft); color: var(--accent); font-weight: 600; }
|
|
174
174
|
.nav-group li.hidden { display: none; }
|
|
175
175
|
|
|
176
|
-
.main-wrap { padding: 1.5rem clamp(1rem, 3vw, 2.5rem) 3rem; }
|
|
176
|
+
.main-wrap { padding: 1.5rem clamp(1rem, 3vw, 2.5rem) 3rem; max-width: 56rem; }
|
|
177
177
|
.content-panel {
|
|
178
178
|
max-width: 48rem;
|
|
179
179
|
background: var(--panel);
|
|
@@ -203,12 +203,15 @@ button { font: inherit; cursor: pointer; }
|
|
|
203
203
|
|
|
204
204
|
.with-toc {
|
|
205
205
|
display: grid;
|
|
206
|
-
grid-template-columns: minmax(0, 1fr)
|
|
206
|
+
grid-template-columns: minmax(0, 1fr);
|
|
207
207
|
gap: 2rem;
|
|
208
208
|
align-items: start;
|
|
209
209
|
}
|
|
210
|
+
.with-toc.has-toc {
|
|
211
|
+
grid-template-columns: minmax(0, 1fr) 200px;
|
|
212
|
+
}
|
|
210
213
|
@media (max-width: 1100px) {
|
|
211
|
-
.with-toc { grid-template-columns: 1fr; }
|
|
214
|
+
.with-toc.has-toc { grid-template-columns: 1fr; }
|
|
212
215
|
.toc { display: none; }
|
|
213
216
|
}
|
|
214
217
|
.toc {
|
|
@@ -358,9 +361,6 @@ const SCRIPTS = (copyLabel, copiedLabel) => `
|
|
|
358
361
|
li.appendChild(a);
|
|
359
362
|
tocList.appendChild(li);
|
|
360
363
|
});
|
|
361
|
-
if (!headings.length) {
|
|
362
|
-
document.querySelector('.toc').style.display = 'none';
|
|
363
|
-
}
|
|
364
364
|
}
|
|
365
365
|
})();
|
|
366
366
|
`;
|
|
@@ -416,7 +416,7 @@ function navGroups(pages, locale) {
|
|
|
416
416
|
}
|
|
417
417
|
function breadcrumbHtml(page, locale, ui) {
|
|
418
418
|
const home = coursePageUrl(locale, "index");
|
|
419
|
-
if (!page || page.slug === "index"
|
|
419
|
+
if (!page || page.slug === "index") {
|
|
420
420
|
return `<p class="breadcrumb"><a href="${home}">${escapeHtml(ui.course)}</a></p>`;
|
|
421
421
|
}
|
|
422
422
|
const parts = [`<a href="${home}">${escapeHtml(ui.course)}</a>`];
|
|
@@ -453,13 +453,15 @@ function chatHintHtml(page, locale, ui) {
|
|
|
453
453
|
const hint = chatHintForSection(page?.sectionId, locale);
|
|
454
454
|
return `<div class="chat-hint"><strong>${escapeHtml(ui.inEditor)}</strong> ${hint}</div>`;
|
|
455
455
|
}
|
|
456
|
+
function hasTocHeadings(bodyHtml) {
|
|
457
|
+
return /<h[23][\s>]/i.test(bodyHtml);
|
|
458
|
+
}
|
|
456
459
|
export function buildCoursePageHtml(opts) {
|
|
457
460
|
const locale = opts.locale ?? "en";
|
|
458
461
|
const ui = courseUi(locale);
|
|
459
462
|
const progress = lessonProgress(opts.pages, opts.activeSlug);
|
|
460
463
|
const topLinks = [
|
|
461
464
|
opts.pages.find((p) => p.slug === "index"),
|
|
462
|
-
opts.pages.find((p) => p.slug === "00-overview"),
|
|
463
465
|
].filter(Boolean);
|
|
464
466
|
const topNav = topLinks
|
|
465
467
|
.map((p) => {
|
|
@@ -493,6 +495,14 @@ export function buildCoursePageHtml(opts) {
|
|
|
493
495
|
const progressLabel = progress.index > 0
|
|
494
496
|
? ui.lessonOf(progress.index, progress.total)
|
|
495
497
|
: ui.browse;
|
|
498
|
+
const showToc = hasTocHeadings(opts.bodyHtml);
|
|
499
|
+
const tocBlock = showToc
|
|
500
|
+
? `<nav class="toc" aria-label="${escapeHtml(ui.onThisPage)}">
|
|
501
|
+
<h4>${escapeHtml(ui.onThisPage)}</h4>
|
|
502
|
+
<ul></ul>
|
|
503
|
+
</nav>`
|
|
504
|
+
: "";
|
|
505
|
+
const withTocClass = showToc ? "with-toc has-toc" : "with-toc";
|
|
496
506
|
return `<!DOCTYPE html>
|
|
497
507
|
<html lang="${locale}">
|
|
498
508
|
<head>
|
|
@@ -525,12 +535,9 @@ export function buildCoursePageHtml(opts) {
|
|
|
525
535
|
<div class="content-panel">
|
|
526
536
|
${breadcrumbHtml(opts.activePage, locale, ui)}
|
|
527
537
|
${metaBadges(opts.activePage, progress, ui)}
|
|
528
|
-
<div class="
|
|
538
|
+
<div class="${withTocClass}">
|
|
529
539
|
<article class="content">${opts.bodyHtml}</article>
|
|
530
|
-
|
|
531
|
-
<h4>${escapeHtml(ui.onThisPage)}</h4>
|
|
532
|
-
<ul></ul>
|
|
533
|
-
</nav>
|
|
540
|
+
${tocBlock}
|
|
534
541
|
</div>
|
|
535
542
|
<nav class="pager">${prevLink}${nextLink}</nav>
|
|
536
543
|
<div id="chat-hint">${chatHintHtml(opts.activePage, locale, ui)}</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-shell.js","sourceRoot":"","sources":["../../../src/core/course/html-shell.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,qBAAqB,GAEtB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"html-shell.js","sourceRoot":"","sources":["../../../src/core/course/html-shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,10 +57,10 @@ export const SECTION_LABELS = {
|
|
|
57
57
|
vi: {
|
|
58
58
|
"01-get-started": "Bắt đầu",
|
|
59
59
|
"02-chat-basics": "Chat cơ bản",
|
|
60
|
-
"03-graph": "
|
|
61
|
-
"04-generate": "
|
|
62
|
-
"05-prototype": "
|
|
63
|
-
"06-review": "Review
|
|
60
|
+
"03-graph": "Graph & sources",
|
|
61
|
+
"04-generate": "Generate",
|
|
62
|
+
"05-prototype": "Prototype",
|
|
63
|
+
"06-review": "Review",
|
|
64
64
|
"07-advanced": "Nâng cao",
|
|
65
65
|
},
|
|
66
66
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../src/core/course/locale.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAiB,IAAI,CAAC;AAExD,MAAM,CAAC,MAAM,wBAAwB,GAA4B,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAwBvF,MAAM,EAAE,GAA0C;IAChD,EAAE,EAAE;QACF,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,mBAAmB;QAChC,QAAQ,EAAE,2BAA2B;QACrC,iBAAiB,EAAE,iBAAiB;QACpC,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,cAAc;QAC1B,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACtC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC5C,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,iBAAiB;QAChC,SAAS,EAAE,eAAe;QAC1B,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,0BAA0B;QACpC,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,YAAY;KACrB;IACD,EAAE,EAAE;QACF,MAAM,EAAE,UAAU;QAClB,WAAW,EAAE,qBAAqB;QAClC,QAAQ,EAAE,2BAA2B;QACrC,iBAAiB,EAAE,cAAc;QACjC,UAAU,EAAE,aAAa;QACzB,UAAU,EAAE,gBAAgB;QAC5B,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACxC,MAAM,EAAE,OAAO;QACf,aAAa,EAAE,kBAAkB;QACjC,SAAS,EAAE,kBAAkB;QAC7B,OAAO,EAAE,oBAAoB;QAC7B,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,6BAA6B;QACvC,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,YAAY;KACrB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAiD;IAC1E,EAAE,EAAE;QACF,gBAAgB,EAAE,aAAa;QAC/B,gBAAgB,EAAE,aAAa;QAC/B,UAAU,EAAE,iBAAiB;QAC7B,aAAa,EAAE,oBAAoB;QACnC,cAAc,EAAE,oBAAoB;QACpC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,UAAU;KAC1B;IACD,EAAE,EAAE;QACF,gBAAgB,EAAE,SAAS;QAC3B,gBAAgB,EAAE,aAAa;QAC/B,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../src/core/course/locale.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-spector",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.52",
|
|
4
4
|
"description": "Cursor-first documentation workflow: traceability graph, SRS/basic/detail design templates, and ai-spector CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"documents-basic-design.json",
|
|
34
34
|
"scaffold",
|
|
35
35
|
"assets",
|
|
36
|
+
"website/docs",
|
|
36
37
|
"docs/course",
|
|
37
38
|
"README.md",
|
|
38
39
|
"README.vi.md",
|
|
@@ -84,7 +85,9 @@
|
|
|
84
85
|
"themes:preview": "node dist/cli.js prototype preview",
|
|
85
86
|
"deploy": "bash scripts/deploy.sh",
|
|
86
87
|
"deploy:npm": "bash scripts/deploy.sh --npm",
|
|
87
|
-
"docs:dev": "npm --prefix website
|
|
88
|
+
"docs:dev": "npm --prefix website run preview",
|
|
89
|
+
"docs:dev:en": "npm --prefix website start",
|
|
90
|
+
"docs:dev:vi": "npm --prefix website run start:vi",
|
|
88
91
|
"docs:build": "npm --prefix website run build",
|
|
89
92
|
"docs:serve": "npm --prefix website run serve"
|
|
90
93
|
},
|
|
@@ -51,7 +51,7 @@ Natural language: *"open the course"*, *"learn ai-spector"*, *"show me the tutor
|
|
|
51
51
|
| Item | Path |
|
|
52
52
|
|------|------|
|
|
53
53
|
| Course index | `website/docs/README.md` · Vietnamese: `website/docs/vi/README.md` |
|
|
54
|
-
|
|
|
54
|
+
| Course home | `website/docs/README.md` |
|
|
55
55
|
| Lessons | `website/docs/<section>/` |
|
|
56
56
|
|
|
57
57
|
`docs/course/` is a symlink to `website/docs/` for npm and CLI. If missing locally, the bundled package still ships course files.
|
|
@@ -34,7 +34,7 @@ If port 4177 is busy, the command may fail — retry or suggest the user close t
|
|
|
34
34
|
| Review, comments, sign-off | `06-review/01-review-comments-changes` | `review documents` |
|
|
35
35
|
| Custom templates | `07-advanced/01-custom-templates` | `set up template pack` |
|
|
36
36
|
| Semantic search, editors | `07-advanced/02-search-and-editors` | `find mentions of rate limiting` |
|
|
37
|
-
| General onboarding / "where do I start" | `
|
|
37
|
+
| General onboarding / "where do I start" | `index` → `01-get-started` | `open the course` or setup |
|
|
38
38
|
|
|
39
39
|
## Section index (quick links)
|
|
40
40
|
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# AI Spector docs site (Docusaurus)
|
|
2
|
+
|
|
3
|
+
## Single source of truth
|
|
4
|
+
|
|
5
|
+
| Language | Edit here |
|
|
6
|
+
|----------|-----------|
|
|
7
|
+
| English | `website/docs/` |
|
|
8
|
+
| Tiếng Việt | `website/docs/vi/` |
|
|
9
|
+
|
|
10
|
+
```text
|
|
11
|
+
website/docs/ ← canonical (EN + vi/)
|
|
12
|
+
docs/course → symlink → website/docs/ (npm + course serve)
|
|
13
|
+
website/i18n/.../current/ → rsync mirror of docs/vi/ (generated, gitignored)
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
**Do not edit** `website/i18n/vi/.../current/` — it is rebuilt on every `npm start` / `npm run build`.
|
|
17
|
+
|
|
18
|
+
## Commands
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
cd website && npm install
|
|
22
|
+
npm run preview # build + serve — English & Tiếng Việt (recommended)
|
|
23
|
+
npm start # dev server, English only (fast HMR)
|
|
24
|
+
npm run start:vi # dev server, Tiếng Việt only
|
|
25
|
+
npm run build
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
From repo root:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm run docs:dev # preview — both locales work
|
|
32
|
+
npm run docs:dev:en # fast English-only dev
|
|
33
|
+
npm run docs:dev:vi # Vietnamese-only dev
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Note:** `npm start` loads one locale at a time. Use `npm run preview` or `npm run start:vi` to browse `/vi/docs/` without 404.
|
|
37
|
+
|
|
38
|
+
## Languages
|
|
39
|
+
|
|
40
|
+
- **English:** `/docs/`
|
|
41
|
+
- **Tiếng Việt:** `/vi/docs/` (locale dropdown)
|
|
42
|
+
|
|
43
|
+
## vs `course serve`
|
|
44
|
+
|
|
45
|
+
Same files via `docs/course` symlink:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npx ai-spector course serve --open
|
|
49
|
+
npx ai-spector course serve --open --lang vi
|
|
50
|
+
```
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Prerequisites & initialize
|
|
2
|
+
|
|
3
|
+
**Section:** [Get started](README.md) · **Course:** [Home](../README.md)
|
|
4
|
+
**Time:** ~10 min
|
|
5
|
+
|
|
6
|
+
**Goal:** Confirm your environment, install AI Spector, and scaffold the project.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
|
|
12
|
+
| Requirement | Command | Need |
|
|
13
|
+
|-------------|---------|------|
|
|
14
|
+
| Node.js ≥ 20 | `node --version` | Required |
|
|
15
|
+
| Git | `git --version` | Required |
|
|
16
|
+
| Cursor or Claude Code | open editor | Required |
|
|
17
|
+
| Python ≥ 3.11 | `python3 --version` | Optional (semantic search later) |
|
|
18
|
+
|
|
19
|
+
AI Spector must run inside a Git repo:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
cd /path/to/your/project
|
|
23
|
+
git status # or: git init && git commit -m "initial commit"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
If you have no `package.json` yet: `npm init -y`
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Install & init
|
|
31
|
+
|
|
32
|
+
**Two steps** — install the package first, then run the wizard.
|
|
33
|
+
|
|
34
|
+
**Internal registry** (no `npm login`):
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm install ai-spector --registry http://10.101.0.239:4873
|
|
38
|
+
npx ai-spector init
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Public npm:**
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm install ai-spector
|
|
45
|
+
npx ai-spector init
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Wizard: **editor** (Cursor / Claude / both), **languages**, **git hook** (yes), **CocoIndex** (no for now).
|
|
49
|
+
|
|
50
|
+
| Created | Purpose |
|
|
51
|
+
|---------|---------|
|
|
52
|
+
| `.ai-spector/` | Config, graph, templates |
|
|
53
|
+
| `docs/data-source/` | Input requirements |
|
|
54
|
+
| `docs/srs/`, `docs/basic-design/` | Generated output |
|
|
55
|
+
| `.cursor/` or `.claude/skills/` | Agent skills + MCP |
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Check
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
ls .ai-spector/ docs/data-source/
|
|
63
|
+
ls node_modules/ai-spector # package installed locally
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Troubleshooting
|
|
69
|
+
|
|
70
|
+
**`npx ai-spector init` not found**
|
|
71
|
+
|
|
72
|
+
Run `npm install ai-spector` first (with `--registry` on the internal network).
|
|
73
|
+
|
|
74
|
+
**Registry error on install**
|
|
75
|
+
|
|
76
|
+
Check VPN / company network, then retry the `npm install` command.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Next
|
|
81
|
+
|
|
82
|
+
[Setup in chat & enable skills](02-setup-and-skills.md)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Setup in chat & enable skills
|
|
2
|
+
|
|
3
|
+
**Section:** [Get started](README.md) · **Course:** [Home](../README.md)
|
|
4
|
+
**Time:** ~10 min · **Before:** [Prerequisites & init](01-prerequisites-and-init.md)
|
|
5
|
+
|
|
6
|
+
**Goal:** Finish npm/MCP setup in chat and turn on skill routing.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Finish setup in chat
|
|
11
|
+
|
|
12
|
+
Open the project in Cursor or Claude Code, then say:
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
setup ai-spector project
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
The agent installs `ai-spector`, verifies config, and prints a checklist. Confirm with:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
check ai-spector setup
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Browse the course while you wait: `npx ai-spector course serve --open`
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Enable skills
|
|
29
|
+
|
|
30
|
+
**Cursor:** Settings → Rules → **Agent Skills** → enable every folder under `.cursor/skills/`. Reload MCP.
|
|
31
|
+
|
|
32
|
+
**Claude Code:** Skills load from `.claude/skills/` automatically. Reload MCP via restart or `/mcp`.
|
|
33
|
+
|
|
34
|
+
Key skills: `ai-spector`, `ai-spector-review`, `ai-spector-graph`, `ai-spector-generate-srs`.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Check
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
validate the graph
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The agent invokes a graph tool (empty graph is fine) — not a generic refusal.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Next section
|
|
49
|
+
|
|
50
|
+
[Chat basics — How chat works](../02-chat-basics/01-how-chat-works.md)
|