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.
Files changed (75) hide show
  1. package/dist/cli.js +0 -0
  2. package/dist/core/config/load.d.ts +1 -1
  3. package/dist/core/config/load.d.ts.map +1 -1
  4. package/dist/core/config/load.js +7 -2
  5. package/dist/core/config/load.js.map +1 -1
  6. package/dist/core/course/catalog.d.ts +6 -0
  7. package/dist/core/course/catalog.d.ts.map +1 -1
  8. package/dist/core/course/catalog.js +45 -15
  9. package/dist/core/course/catalog.js.map +1 -1
  10. package/dist/core/course/html-shell.d.ts.map +1 -1
  11. package/dist/core/course/html-shell.js +20 -13
  12. package/dist/core/course/html-shell.js.map +1 -1
  13. package/dist/core/course/locale.js +4 -4
  14. package/dist/core/course/locale.js.map +1 -1
  15. package/dist/interfaces/mcp/server.js +0 -0
  16. package/package.json +5 -2
  17. package/scaffold/cursor/skills/ai-spector-course/SKILL.md +1 -1
  18. package/scaffold/cursor/skills/ai-spector-course/references/course-guide.md +1 -1
  19. package/website/README.md +50 -0
  20. package/website/docs/01-get-started/01-prerequisites-and-init.md +82 -0
  21. package/website/docs/01-get-started/02-setup-and-skills.md +50 -0
  22. package/website/docs/01-get-started/README.md +10 -0
  23. package/website/docs/01-get-started/_category_.json +4 -0
  24. package/website/docs/02-chat-basics/01-how-chat-works.md +48 -0
  25. package/website/docs/02-chat-basics/02-workspace-and-tasks.md +55 -0
  26. package/website/docs/02-chat-basics/README.md +10 -0
  27. package/website/docs/02-chat-basics/_category_.json +4 -0
  28. package/website/docs/03-graph/01-sources-and-analyze.md +44 -0
  29. package/website/docs/03-graph/02-validate-index-explore.md +57 -0
  30. package/website/docs/03-graph/README.md +10 -0
  31. package/website/docs/03-graph/_category_.json +4 -0
  32. package/website/docs/04-generate/01-generate-srs.md +63 -0
  33. package/website/docs/04-generate/02-basic-design.md +44 -0
  34. package/website/docs/04-generate/README.md +12 -0
  35. package/website/docs/04-generate/_category_.json +4 -0
  36. package/website/docs/05-prototype/01-translations.md +26 -0
  37. package/website/docs/05-prototype/02-build-prototype.md +54 -0
  38. package/website/docs/05-prototype/README.md +10 -0
  39. package/website/docs/05-prototype/_category_.json +4 -0
  40. package/website/docs/06-review/01-review-comments-changes.md +55 -0
  41. package/website/docs/06-review/README.md +9 -0
  42. package/website/docs/06-review/_category_.json +4 -0
  43. package/website/docs/07-advanced/01-custom-templates.md +30 -0
  44. package/website/docs/07-advanced/02-search-and-editors.md +36 -0
  45. package/website/docs/07-advanced/README.md +10 -0
  46. package/website/docs/07-advanced/_category_.json +4 -0
  47. package/website/docs/README.md +55 -0
  48. package/website/docs/vi/01-get-started/01-prerequisites-and-init.md +72 -0
  49. package/website/docs/vi/01-get-started/02-setup-and-skills.md +43 -0
  50. package/website/docs/vi/01-get-started/README.md +10 -0
  51. package/website/docs/vi/01-get-started/_category_.json +4 -0
  52. package/website/docs/vi/02-chat-basics/01-how-chat-works.md +47 -0
  53. package/website/docs/vi/02-chat-basics/02-workspace-and-tasks.md +41 -0
  54. package/website/docs/vi/02-chat-basics/README.md +10 -0
  55. package/website/docs/vi/02-chat-basics/_category_.json +4 -0
  56. package/website/docs/vi/03-graph/01-sources-and-analyze.md +43 -0
  57. package/website/docs/vi/03-graph/02-validate-index-explore.md +48 -0
  58. package/website/docs/vi/03-graph/README.md +10 -0
  59. package/website/docs/vi/03-graph/_category_.json +4 -0
  60. package/website/docs/vi/04-generate/01-generate-srs.md +52 -0
  61. package/website/docs/vi/04-generate/02-basic-design.md +32 -0
  62. package/website/docs/vi/04-generate/README.md +12 -0
  63. package/website/docs/vi/04-generate/_category_.json +4 -0
  64. package/website/docs/vi/05-prototype/01-translations.md +21 -0
  65. package/website/docs/vi/05-prototype/02-build-prototype.md +46 -0
  66. package/website/docs/vi/05-prototype/README.md +10 -0
  67. package/website/docs/vi/05-prototype/_category_.json +4 -0
  68. package/website/docs/vi/06-review/01-review-comments-changes.md +50 -0
  69. package/website/docs/vi/06-review/README.md +9 -0
  70. package/website/docs/vi/06-review/_category_.json +4 -0
  71. package/website/docs/vi/07-advanced/01-custom-templates.md +27 -0
  72. package/website/docs/vi/07-advanced/02-search-and-editors.md +35 -0
  73. package/website/docs/vi/07-advanced/README.md +10 -0
  74. package/website/docs/vi/07-advanced/_category_.json +4 -0
  75. 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/`, exposed as `docs/course/` in the package). */
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,4FAA4F;AAC5F,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;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"}
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"}
@@ -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/`, exposed as `docs/course/` in the package). */
20
+ /** Step-by-step user course (`website/docs/`, legacy path `docs/course/`). */
21
21
  export function courseBundleRoot() {
22
- return join(packageBundleRoot(), "docs", "course");
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":"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"}
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;AA2ED,6EAA6E;AAC7E,wBAAsB,iBAAiB,CACrC,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,GAAE,YAAoC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAqBjB;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"}
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" || ent.name === "00-overview.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 localBase = projectRoot ? join(projectRoot, "docs", "course") : bundled;
95
+ const local = projectRoot ? join(projectRoot, "docs", "course") : undefined;
75
96
  if (locale === "vi") {
76
- const viCandidates = [join(localBase, "vi"), join(bundled, "vi")];
77
- for (const root of viCandidates) {
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 Error("Vietnamese course not found (expected website/docs/vi/ or docs/course/vi/)");
107
+ throw new CourseNotFoundError(locale, checkedPaths);
83
108
  }
84
- if (projectRoot) {
85
- const local = join(projectRoot, "docs", "course");
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
- return bundled;
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.filter((p) => p.slug !== "00-overview");
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":"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"}
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,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,OAAO,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;QACnD,OAAO,OAAO,GAAG,GAAG,CAAC;IACvB,CAAC;IACD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,OAAO,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC;AAChC,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,QAAgB;IAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAEjC;IACA;IAFX,YACW,MAAoB,EACpB,YAAsB;QAE/B,KAAK,CAAC,2BAA2B,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;QAHhD,WAAM,GAAN,MAAM,CAAc;QACpB,iBAAY,GAAZ,YAAY,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,UAAU,2BAA2B,CACzC,MAAoB,EACpB,YAAsB;IAEtB,MAAM,SAAS,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,MAAM,KAAK,GAAG;QACZ,2BAA2B,SAAS,IAAI;QACxC,EAAE;QACF,UAAU;QACV,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,EAAE;QACF,MAAM;QACN,oFAAoF;QACpF,+BAA+B;QAC/B,2CAA2C;QAC3C,0CAA0C;QAC1C,mFAAmF;KACpF,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAoB,EACpB,SAAuB,qBAAqB;IAE5C,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5E,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,MAAM,IAAI,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,KAAK,EAAE,CAAC;QACV,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,MAAM,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,IAAI,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,SAAuB,qBAAqB;IAE5C,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI;YACJ,OAAO;YACP,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC;YAChC,KAAK,EAAE,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC;YACxC,SAAS;YACT,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SACtE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAmB,EAAE,IAAY;IAC1D,MAAM,UAAU,GAAG,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnF,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,KAAmB,EACnB,IAAY;IAEZ,MAAM,QAAQ,GAAG,KAAK,CAAC;IACvB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,OAAO;QACL,OAAO;QACP,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;KAC5E,CAAC;AACJ,CAAC"}
@@ -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;AAoHD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CA4FpE"}
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) 200px;
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" || page.slug === "00-overview") {
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="with-toc">
538
+ <div class="${withTocClass}">
529
539
  <article class="content">${opts.bodyHtml}</article>
530
- <nav class="toc" aria-label="${escapeHtml(ui.onThisPage)}">
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAySd,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,WAAmB,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAmCpC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;;;;4BAKrB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;qDACF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;CAyB7E,CAAC;AAaF,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,YAAY,CAAC,IAAgB;IACpC,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,WAAW,CAAC,KAAmB;IACtC,OAAO,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,cAAc,CACrB,KAAmB,EACnB,UAAkB;IAElB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7B,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,WAAW,GAAG;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,UAAU;IACV,aAAa;IACb,cAAc;IACd,WAAW;IACX,aAAa;CACL,CAAC;AAEX,SAAS,SAAS,CAChB,KAAmB,EACnB,MAAoB;IAEpB,OAAO,WAAW;SACf,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACjB,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CACtE,CAAC;QACF,OAAO;YACL,KAAK,EAAE,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC;YAC/C,SAAS;YACT,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;SAC7D,CAAC;IACJ,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,IAA4B,EAAE,MAAoB,EAAE,EAA+B;IACzG,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAClE,OAAO,kCAAkC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;IACpF,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,YAAY,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CACR,YAAY,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,CACtH,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;IACjE,OAAO,yBAAyB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1D,CAAC;AAED,SAAS,UAAU,CACjB,IAA4B,EAC5B,QAAsD,EACtD,EAA+B;IAE/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,IAAI,EAAE,YAAY,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,uBAAuB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,uBAAuB,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,4BAA4B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC7D,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkB,EAAE,MAAoB,EAAE,EAA+B;IACjG,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,OAAO;gBACO,QAAQ,CAAC,IAAI,EAAE,WAAW,KAAK,mBAAmB,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC;gBACvE,QAAQ,CAAC,IAAI,EAAE,WAAW,KAAK,mBAAmB,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC;SAC9E,CAAC;AACV,CAAC;AAED,SAAS,YAAY,CAAC,IAA4B,EAAE,MAAoB,EAAE,EAA+B;IACvG,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACzD,OAAO,kCAAkC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAwB;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG;QACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;KACjD,CAAC,MAAM,CAAC,OAAO,CAAiB,CAAC;IAElC,MAAM,MAAM,GAAG,QAAQ;SACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,OAAO,iBAAiB,MAAM,CAAC,IAAI,EAAE,WAAW,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;IAC/H,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;SAC7C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;aACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG;gBACV,MAAM,CAAC,IAAI,EAAE;gBACb,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa;aAC3C,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,iBAAiB,GAAG,WAAW,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC;QACvG,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,8BAA8B,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,KAAK,aAAa,CAAC;IAC7F,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;QACxB,CAAC,CAAC,yBAAyB,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,gCAAgC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa;QACpM,CAAC,CAAC,mCAAmC,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;QACxB,CAAC,CAAC,yBAAyB,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe;QAChM,CAAC,CAAC,mCAAmC,CAAC;IAExC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC;QACtC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;IAEd,OAAO;cACK,MAAM;;;;WAIT,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC;WACtD,MAAM;;;;yDAIwC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC;8BACjD,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MAC1D,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;wCACX,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC;cACtD,UAAU,CAAC,aAAa,CAAC;6FACsD,QAAQ,CAAC,GAAG;;6CAE5D,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC;;;;;;6BAMxC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC;yDACK,UAAU,CAAC,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC;mCAChG,MAAM;QACjC,UAAU;;;;UAIR,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;UAC3C,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC;;qCAEd,IAAI,CAAC,QAAQ;yCACT,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC;kBAChD,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC;;;;6BAId,QAAQ,GAAG,QAAQ;8BAClB,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;;;;YAI3D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC;;QAE/B,CAAC;AACT,CAAC"}
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": "Đồ thị & nguồn",
61
- "04-generate": "Tạo tài liệu",
62
- "05-prototype": "Thiết kế & prototype",
63
- "06-review": "Review & thay đổi",
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":"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"}
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.50",
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 start",
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
- | Overview | `website/docs/00-overview.md` |
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" | `00-overview` → `01-get-started` | `open the course` or setup |
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)