ai-spector 0.8.50 → 0.8.51

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 (70) 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 +43 -7
  9. package/dist/core/course/catalog.js.map +1 -1
  10. package/dist/interfaces/mcp/server.js +0 -0
  11. package/package.json +2 -1
  12. package/website/README.md +40 -0
  13. package/website/docs/00-overview.md +44 -0
  14. package/website/docs/01-get-started/01-prerequisites-and-init.md +82 -0
  15. package/website/docs/01-get-started/02-setup-and-skills.md +50 -0
  16. package/website/docs/01-get-started/README.md +10 -0
  17. package/website/docs/01-get-started/_category_.json +4 -0
  18. package/website/docs/02-chat-basics/01-how-chat-works.md +48 -0
  19. package/website/docs/02-chat-basics/02-workspace-and-tasks.md +55 -0
  20. package/website/docs/02-chat-basics/README.md +10 -0
  21. package/website/docs/02-chat-basics/_category_.json +4 -0
  22. package/website/docs/03-graph/01-sources-and-analyze.md +44 -0
  23. package/website/docs/03-graph/02-validate-index-explore.md +57 -0
  24. package/website/docs/03-graph/README.md +10 -0
  25. package/website/docs/03-graph/_category_.json +4 -0
  26. package/website/docs/04-generate/01-generate-srs.md +63 -0
  27. package/website/docs/04-generate/02-basic-design.md +44 -0
  28. package/website/docs/04-generate/README.md +12 -0
  29. package/website/docs/04-generate/_category_.json +4 -0
  30. package/website/docs/05-prototype/01-translations.md +26 -0
  31. package/website/docs/05-prototype/02-build-prototype.md +54 -0
  32. package/website/docs/05-prototype/README.md +10 -0
  33. package/website/docs/05-prototype/_category_.json +4 -0
  34. package/website/docs/06-review/01-review-comments-changes.md +55 -0
  35. package/website/docs/06-review/README.md +9 -0
  36. package/website/docs/06-review/_category_.json +4 -0
  37. package/website/docs/07-advanced/01-custom-templates.md +30 -0
  38. package/website/docs/07-advanced/02-search-and-editors.md +36 -0
  39. package/website/docs/07-advanced/README.md +10 -0
  40. package/website/docs/07-advanced/_category_.json +4 -0
  41. package/website/docs/README.md +59 -0
  42. package/website/docs/vi/00-overview.md +44 -0
  43. package/website/docs/vi/01-get-started/01-prerequisites-and-init.md +82 -0
  44. package/website/docs/vi/01-get-started/02-setup-and-skills.md +50 -0
  45. package/website/docs/vi/01-get-started/README.md +10 -0
  46. package/website/docs/vi/01-get-started/_category_.json +4 -0
  47. package/website/docs/vi/02-chat-basics/01-how-chat-works.md +48 -0
  48. package/website/docs/vi/02-chat-basics/02-workspace-and-tasks.md +55 -0
  49. package/website/docs/vi/02-chat-basics/README.md +10 -0
  50. package/website/docs/vi/02-chat-basics/_category_.json +4 -0
  51. package/website/docs/vi/03-graph/01-sources-and-analyze.md +44 -0
  52. package/website/docs/vi/03-graph/02-validate-index-explore.md +57 -0
  53. package/website/docs/vi/03-graph/README.md +10 -0
  54. package/website/docs/vi/03-graph/_category_.json +4 -0
  55. package/website/docs/vi/04-generate/01-generate-srs.md +63 -0
  56. package/website/docs/vi/04-generate/02-basic-design.md +44 -0
  57. package/website/docs/vi/04-generate/README.md +12 -0
  58. package/website/docs/vi/04-generate/_category_.json +4 -0
  59. package/website/docs/vi/05-prototype/01-translations.md +26 -0
  60. package/website/docs/vi/05-prototype/02-build-prototype.md +54 -0
  61. package/website/docs/vi/05-prototype/README.md +10 -0
  62. package/website/docs/vi/05-prototype/_category_.json +4 -0
  63. package/website/docs/vi/06-review/01-review-comments-changes.md +55 -0
  64. package/website/docs/vi/06-review/README.md +9 -0
  65. package/website/docs/vi/06-review/_category_.json +4 -0
  66. package/website/docs/vi/07-advanced/01-custom-templates.md +30 -0
  67. package/website/docs/vi/07-advanced/02-search-and-editors.md +36 -0
  68. package/website/docs/vi/07-advanced/README.md +10 -0
  69. package/website/docs/vi/07-advanced/_category_.json +4 -0
  70. package/website/docs/vi/README.md +53 -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;AA2ED,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"}
@@ -68,26 +68,62 @@ function titleFromMarkdown(markdown, fallback) {
68
68
  }
69
69
  return line.slice(2).trim();
70
70
  }
71
+ export class CourseNotFoundError extends Error {
72
+ locale;
73
+ checkedPaths;
74
+ constructor(locale, checkedPaths) {
75
+ super(formatCourseNotFoundMessage(locale, checkedPaths));
76
+ this.locale = locale;
77
+ this.checkedPaths = checkedPaths;
78
+ this.name = "CourseNotFoundError";
79
+ }
80
+ }
81
+ export function formatCourseNotFoundMessage(locale, checkedPaths) {
82
+ const langLabel = locale === "vi" ? "Vietnamese" : "English";
83
+ const lines = [
84
+ `Course files not found (${langLabel}).`,
85
+ "",
86
+ "Checked:",
87
+ ...checkedPaths.map((p) => ` - ${p}`),
88
+ "",
89
+ "Fix:",
90
+ " 1. Reinstall ai-spector (course ships in node_modules/ai-spector/website/docs/):",
91
+ " npm install ai-spector",
92
+ " 2. Or add a local copy in your project:",
93
+ " docs/course/ (optional override)",
94
+ " 3. From the ai-spector repo: edit website/docs/ (docs/course is a dev symlink).",
95
+ ];
96
+ return lines.join("\n");
97
+ }
71
98
  /** Prefer project-local course copy when present; otherwise bundled docs. */
72
99
  export async function resolveCourseRoot(projectRoot, locale = DEFAULT_COURSE_LOCALE) {
73
100
  const bundled = courseBundleRoot();
74
- const localBase = projectRoot ? join(projectRoot, "docs", "course") : bundled;
101
+ const local = projectRoot ? join(projectRoot, "docs", "course") : undefined;
75
102
  if (locale === "vi") {
76
- const viCandidates = [join(localBase, "vi"), join(bundled, "vi")];
77
- for (const root of viCandidates) {
103
+ const checkedPaths = [];
104
+ if (local) {
105
+ checkedPaths.push(join(local, "vi"));
106
+ }
107
+ checkedPaths.push(join(bundled, "vi"));
108
+ for (const root of checkedPaths) {
78
109
  if (await pathExists(root)) {
79
110
  return root;
80
111
  }
81
112
  }
82
- throw new Error("Vietnamese course not found (expected website/docs/vi/ or docs/course/vi/)");
113
+ throw new CourseNotFoundError(locale, checkedPaths);
83
114
  }
84
- if (projectRoot) {
85
- const local = join(projectRoot, "docs", "course");
115
+ const checkedPaths = [];
116
+ if (local) {
117
+ checkedPaths.push(local);
86
118
  if (await pathExists(local)) {
87
119
  return local;
88
120
  }
89
121
  }
90
- return bundled;
122
+ checkedPaths.push(bundled);
123
+ if (await pathExists(bundled)) {
124
+ return bundled;
125
+ }
126
+ throw new CourseNotFoundError(locale, checkedPaths);
91
127
  }
92
128
  export async function loadCoursePages(courseRoot, locale = DEFAULT_COURSE_LOCALE) {
93
129
  const relPaths = await collectMarkdownFiles(courseRoot);
@@ -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":"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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.51",
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",
@@ -0,0 +1,40 @@
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 start # http://localhost:3000/docs/
23
+ npm run build
24
+ ```
25
+
26
+ From repo root: `npm run docs:dev`
27
+
28
+ ## Languages
29
+
30
+ - **English:** `/docs/`
31
+ - **Tiếng Việt:** `/vi/docs/` (locale dropdown)
32
+
33
+ ## vs `course serve`
34
+
35
+ Same files via `docs/course` symlink:
36
+
37
+ ```bash
38
+ npx ai-spector course serve --open
39
+ npx ai-spector course serve --open --lang vi
40
+ ```
@@ -0,0 +1,44 @@
1
+ ---
2
+ sidebar_position: 2
3
+ ---
4
+
5
+ # AI Spector — Course Overview
6
+
7
+ Documentation workflow in **Cursor** or **Claude Code**: traceability graph, SRS, basic design, prototypes. **Describe what you need in chat.**
8
+
9
+ Browse: `npx ai-spector course serve --open` · Tiếng Việt: `--lang vi` → `/course/vi/`
10
+
11
+ **In chat:** *"open the course"* · *"learn ai-spector"* · *"mở khóa học ai-spector"*
12
+
13
+ ---
14
+
15
+ ## Structure
16
+
17
+ **7 sections, 13 lessons** — each lesson ~10–15 min, one coherent task. No micro-steps for things you do in a single sitting.
18
+
19
+ | Section | Lessons |
20
+ |---------|---------|
21
+ | [Get started](01-get-started/README.md) | Prerequisites & init · Setup & skills |
22
+ | [Chat basics](02-chat-basics/README.md) | How chat works · Workspace & tasks |
23
+ | [Graph & sources](03-graph/README.md) | Sources & analyze · Validate & explore |
24
+ | [Generate documents](04-generate/README.md) | Generate SRS · Basic design |
25
+ | [Design & prototype](05-prototype/README.md) | Translations *(opt)* · Build prototype |
26
+ | [Review & changes](06-review/README.md) | Review, comments & incremental edits |
27
+ | [Advanced](07-advanced/README.md) | Custom templates · Search & editors |
28
+
29
+ ---
30
+
31
+ ## Pipeline
32
+
33
+ ```text
34
+ docs/data-source/ → analyze → validate → generate SRS (gated) → basic design
35
+ → prototype → review documents
36
+ ```
37
+
38
+ Every **generate** run: workspace check → clarify → plan approval → waves → spec review.
39
+
40
+ ---
41
+
42
+ ## Next
43
+
44
+ [Get started](01-get-started/README.md)
@@ -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)
@@ -0,0 +1,10 @@
1
+ # Section: Get started
2
+
3
+ Install AI Spector and make the agent ready to work.
4
+
5
+ | Lesson | Time | Goal |
6
+ |--------|------|------|
7
+ | [Prerequisites & init](01-prerequisites-and-init.md) | 10 min | Install package + `npx ai-spector init` |
8
+ | [Setup & skills](02-setup-and-skills.md) | 10 min | Chat setup + enable skill routing |
9
+
10
+ **Next section:** [Chat basics](../02-chat-basics/README.md)
@@ -0,0 +1,4 @@
1
+ {
2
+ "label": "Get started",
3
+ "position": 3
4
+ }
@@ -0,0 +1,48 @@
1
+ # How chat works
2
+
3
+ **Section:** [Chat basics](README.md) · **Course:** [Home](../README.md)
4
+ **Time:** ~10 min
5
+
6
+ **Goal:** Understand routing and what “approve” means.
7
+
8
+ ---
9
+
10
+ ## Orchestrator & workers
11
+
12
+ | Layer | Role |
13
+ |-------|------|
14
+ | **Orchestrator** | Classifies intent, asks routing questions, spawns workers |
15
+ | **Worker** | One job per runbook (analyze, generate, review…) |
16
+
17
+ Describe what you need in chat — skills route to the right worker. Same phrases work in **Cursor** and **Claude Code**.
18
+
19
+ ---
20
+
21
+ ## Common phrases
22
+
23
+ | You want to… | Say (examples) |
24
+ |--------------|----------------|
25
+ | Generate SRS | *“generate the SRS”*, *“write use cases”* |
26
+ | Sign off a document | *“review documents”*, *“approve srs/01-overview”* |
27
+ | Resolve feedback | *“resolve comments”*, *“show open comments”* |
28
+ | Analyze sources | *“analyze my data source”* |
29
+ | Check workspace | *“check my workspace”* |
30
+
31
+ Unsure? Say *“help me approve”* — the agent asks one clarifying question.
32
+
33
+ ---
34
+
35
+ ## Four kinds of “approve”
36
+
37
+ | You mean | Say | Not this |
38
+ |----------|-----|----------|
39
+ | Sign off a document | *“review srs/01-overview”*, *“approve the SRS”* | spec / plan / comment |
40
+ | Approve extracted spec | *“approve SPEC-001”* | document sign-off |
41
+ | Execute a plan | *“yes, go ahead”* after plan table | document sign-off |
42
+ | Close comment thread | *“resolve C-012”* | document sign-off |
43
+
44
+ ---
45
+
46
+ ## Next
47
+
48
+ [Workspace & tasks](02-workspace-and-tasks.md)
@@ -0,0 +1,55 @@
1
+ # Workspace & tasks
2
+
3
+ **Section:** [Chat basics](README.md) · **Course:** [Home](../README.md)
4
+ **Time:** ~10 min · **Before:** [How chat works](01-how-chat-works.md)
5
+
6
+ **Goal:** Audit project health and resume paused work.
7
+
8
+ ---
9
+
10
+ ## Check workspace
11
+
12
+ ```
13
+ check my workspace
14
+ ```
15
+
16
+ ```
17
+ why did pre-commit block me
18
+ ```
19
+
20
+ ```
21
+ stale clarifications
22
+ ```
23
+
24
+ CLI: `npx ai-spector setup --check`
25
+
26
+ Use after init, upgrades, or failed commits.
27
+
28
+ ---
29
+
30
+ ## Tasks & resume
31
+
32
+ Generation runs are **tasks** with saved state (clarifications, plans, wave progress).
33
+
34
+ ```
35
+ active tasks
36
+ ```
37
+
38
+ ```
39
+ resume my SRS
40
+ ```
41
+
42
+ ```
43
+ pause task
44
+ ```
45
+
46
+ | Phrase | Means |
47
+ |--------|-------|
48
+ | *resume SRS* | Continue a **generation task** |
49
+ | *review documents* | **Document sign-off** (different workflow) |
50
+
51
+ ---
52
+
53
+ ## Next section
54
+
55
+ [Graph & sources](../03-graph/README.md)
@@ -0,0 +1,10 @@
1
+ # Section: Chat basics
2
+
3
+ How the agent routes your requests.
4
+
5
+ | Lesson | Time | Goal |
6
+ |--------|------|------|
7
+ | [How chat works](01-how-chat-works.md) | 10 min | Routing, common phrases, approve types |
8
+ | [Workspace & tasks](02-workspace-and-tasks.md) | 10 min | Health check, resume/pause |
9
+
10
+ **Next section:** [Graph & sources](../03-graph/README.md)
@@ -0,0 +1,4 @@
1
+ {
2
+ "label": "Chat basics",
3
+ "position": 4
4
+ }
@@ -0,0 +1,44 @@
1
+ # Add sources & analyze
2
+
3
+ **Section:** [Graph & sources](README.md) · **Course:** [Home](../README.md)
4
+ **Time:** ~10 min
5
+
6
+ **Goal:** Put requirements in place and extract them into the traceability graph.
7
+
8
+ ---
9
+
10
+ ## Add source material
11
+
12
+ Drop files into `docs/data-source/` — `.md`, `.txt`, or `.pdf` (text must be selectable).
13
+
14
+ Include meeting notes, user stories, BRDs, API descriptions. The agent reads but never modifies these files.
15
+
16
+ ```bash
17
+ ls docs/data-source/ # at least one file before analyze
18
+ ```
19
+
20
+ ---
21
+
22
+ ## Analyze
23
+
24
+ ```
25
+ analyze my data source
26
+ ```
27
+
28
+ The agent extracts actors, use cases, and features into `.ai-spector/graph/traceability.graph.json`. Review the summary; add detail to sources and re-run if something is missing.
29
+
30
+ ---
31
+
32
+ ## Check
33
+
34
+ ```
35
+ validate the graph
36
+ ```
37
+
38
+ No critical errors (warnings are OK at this stage).
39
+
40
+ ---
41
+
42
+ ## Next
43
+
44
+ [Validate, index & explore](02-validate-index-explore.md)