@zigrivers/scaffold 3.0.2 → 3.4.0

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 (241) hide show
  1. package/README.md +61 -45
  2. package/content/knowledge/core/test-skeleton-generation.md +313 -0
  3. package/{knowledge → content/knowledge}/execution/enhancement-workflow.md +1 -1
  4. package/content/knowledge/product/vision-innovation.md +273 -0
  5. package/{knowledge → content/knowledge}/tools/post-implementation-review-methodology.md +1 -1
  6. package/{pipeline → content/pipeline}/consolidation/workflow-audit.md +1 -1
  7. package/{pipeline → content/pipeline}/decisions/review-adrs.md +1 -1
  8. package/{pipeline → content/pipeline}/environment/design-system.md +1 -1
  9. package/{pipeline → content/pipeline}/finalization/implementation-playbook.md +2 -2
  10. package/{pipeline → content/pipeline}/foundation/tech-stack.md +1 -1
  11. package/{pipeline → content/pipeline}/modeling/review-domain-modeling.md +1 -1
  12. package/{pipeline → content/pipeline}/planning/implementation-plan-review.md +2 -1
  13. package/{pipeline → content/pipeline}/quality/review-testing.md +1 -1
  14. package/{pipeline → content/pipeline}/quality/story-tests.md +2 -2
  15. package/{pipeline → content/pipeline}/vision/innovate-vision.md +1 -1
  16. package/content/skills/mmr/SKILL.md +65 -0
  17. package/content/skills/multi-model-dispatch/SKILL.md +327 -0
  18. package/content/skills/scaffold-pipeline/SKILL.md +210 -0
  19. package/content/skills/scaffold-runner/SKILL.md +666 -0
  20. package/{tools → content/tools}/post-implementation-review.md +2 -2
  21. package/{tools → content/tools}/prompt-pipeline.md +7 -0
  22. package/dist/cli/commands/build.d.ts.map +1 -1
  23. package/dist/cli/commands/build.js +17 -1
  24. package/dist/cli/commands/build.js.map +1 -1
  25. package/dist/cli/commands/build.test.js +47 -12
  26. package/dist/cli/commands/build.test.js.map +1 -1
  27. package/dist/cli/commands/info.test.js +2 -2
  28. package/dist/cli/commands/info.test.js.map +1 -1
  29. package/dist/cli/commands/init.d.ts.map +1 -1
  30. package/dist/cli/commands/init.js +9 -0
  31. package/dist/cli/commands/init.js.map +1 -1
  32. package/dist/cli/commands/init.test.js +6 -0
  33. package/dist/cli/commands/init.test.js.map +1 -1
  34. package/dist/cli/commands/list.test.js +8 -8
  35. package/dist/cli/commands/list.test.js.map +1 -1
  36. package/dist/cli/commands/run.test.js +4 -4
  37. package/dist/cli/commands/run.test.js.map +1 -1
  38. package/dist/cli/commands/skill.d.ts.map +1 -1
  39. package/dist/cli/commands/skill.js +51 -57
  40. package/dist/cli/commands/skill.js.map +1 -1
  41. package/dist/cli/commands/skill.test.js +86 -43
  42. package/dist/cli/commands/skill.test.js.map +1 -1
  43. package/dist/cli/middleware/project-root.d.ts.map +1 -1
  44. package/dist/cli/middleware/project-root.js +16 -0
  45. package/dist/cli/middleware/project-root.js.map +1 -1
  46. package/dist/cli/middleware/project-root.test.js +20 -0
  47. package/dist/cli/middleware/project-root.test.js.map +1 -1
  48. package/dist/config/migration.js.map +1 -1
  49. package/dist/config/migration.test.js +4 -0
  50. package/dist/config/migration.test.js.map +1 -1
  51. package/dist/config/schema.d.ts +3 -3
  52. package/dist/config/schema.js +1 -1
  53. package/dist/config/schema.js.map +1 -1
  54. package/dist/config/schema.test.js +8 -0
  55. package/dist/config/schema.test.js.map +1 -1
  56. package/dist/core/adapters/adapter.d.ts +1 -1
  57. package/dist/core/adapters/adapter.d.ts.map +1 -1
  58. package/dist/core/adapters/adapter.js +4 -1
  59. package/dist/core/adapters/adapter.js.map +1 -1
  60. package/dist/core/adapters/adapter.test.js +5 -2
  61. package/dist/core/adapters/adapter.test.js.map +1 -1
  62. package/dist/core/adapters/gemini.d.ts +10 -0
  63. package/dist/core/adapters/gemini.d.ts.map +1 -0
  64. package/dist/core/adapters/gemini.js +126 -0
  65. package/dist/core/adapters/gemini.js.map +1 -0
  66. package/dist/core/adapters/gemini.test.d.ts +2 -0
  67. package/dist/core/adapters/gemini.test.d.ts.map +1 -0
  68. package/dist/core/adapters/gemini.test.js +91 -0
  69. package/dist/core/adapters/gemini.test.js.map +1 -0
  70. package/dist/core/skills/sync.d.ts +36 -0
  71. package/dist/core/skills/sync.d.ts.map +1 -0
  72. package/dist/core/skills/sync.js +119 -0
  73. package/dist/core/skills/sync.js.map +1 -0
  74. package/dist/core/skills/sync.test.d.ts +2 -0
  75. package/dist/core/skills/sync.test.d.ts.map +1 -0
  76. package/dist/core/skills/sync.test.js +166 -0
  77. package/dist/core/skills/sync.test.js.map +1 -0
  78. package/dist/e2e/commands.test.js +10 -10
  79. package/dist/e2e/commands.test.js.map +1 -1
  80. package/dist/e2e/init.test.js +78 -0
  81. package/dist/e2e/init.test.js.map +1 -1
  82. package/dist/e2e/knowledge.test.js +5 -4
  83. package/dist/e2e/knowledge.test.js.map +1 -1
  84. package/dist/index.js +0 -0
  85. package/dist/project/adopt.test.js +8 -8
  86. package/dist/project/adopt.test.js.map +1 -1
  87. package/dist/project/gemini-md.d.ts +7 -0
  88. package/dist/project/gemini-md.d.ts.map +1 -0
  89. package/dist/project/gemini-md.js +59 -0
  90. package/dist/project/gemini-md.js.map +1 -0
  91. package/dist/project/gemini-md.test.d.ts +2 -0
  92. package/dist/project/gemini-md.test.d.ts.map +1 -0
  93. package/dist/project/gemini-md.test.js +104 -0
  94. package/dist/project/gemini-md.test.js.map +1 -0
  95. package/dist/types/config.d.ts +1 -1
  96. package/dist/types/config.d.ts.map +1 -1
  97. package/dist/types/wizard.d.ts +1 -1
  98. package/dist/types/wizard.d.ts.map +1 -1
  99. package/dist/utils/fs.d.ts +7 -1
  100. package/dist/utils/fs.d.ts.map +1 -1
  101. package/dist/utils/fs.js +22 -9
  102. package/dist/utils/fs.js.map +1 -1
  103. package/dist/utils/fs.test.js +15 -1
  104. package/dist/utils/fs.test.js.map +1 -1
  105. package/dist/validation/index.test.js +2 -2
  106. package/dist/validation/index.test.js.map +1 -1
  107. package/dist/wizard/questions.d.ts +1 -1
  108. package/dist/wizard/questions.d.ts.map +1 -1
  109. package/dist/wizard/questions.js +3 -0
  110. package/dist/wizard/questions.js.map +1 -1
  111. package/dist/wizard/questions.test.d.ts +2 -0
  112. package/dist/wizard/questions.test.d.ts.map +1 -0
  113. package/dist/wizard/questions.test.js +36 -0
  114. package/dist/wizard/questions.test.js.map +1 -0
  115. package/dist/wizard/wizard.js.map +1 -1
  116. package/dist/wizard/wizard.test.js +21 -1
  117. package/dist/wizard/wizard.test.js.map +1 -1
  118. package/package.json +3 -5
  119. package/skills/mmr/SKILL.md +65 -0
  120. package/skills/scaffold-pipeline/SKILL.md +3 -3
  121. /package/{knowledge → content/knowledge}/core/adr-craft.md +0 -0
  122. /package/{knowledge → content/knowledge}/core/ai-memory-management.md +0 -0
  123. /package/{knowledge → content/knowledge}/core/api-design.md +0 -0
  124. /package/{knowledge → content/knowledge}/core/automated-review-tooling.md +0 -0
  125. /package/{knowledge → content/knowledge}/core/claude-md-patterns.md +0 -0
  126. /package/{knowledge → content/knowledge}/core/coding-conventions.md +0 -0
  127. /package/{knowledge → content/knowledge}/core/database-design.md +0 -0
  128. /package/{knowledge → content/knowledge}/core/design-system-tokens.md +0 -0
  129. /package/{knowledge → content/knowledge}/core/dev-environment.md +0 -0
  130. /package/{knowledge → content/knowledge}/core/domain-modeling.md +0 -0
  131. /package/{knowledge → content/knowledge}/core/eval-craft.md +0 -0
  132. /package/{knowledge → content/knowledge}/core/git-workflow-patterns.md +0 -0
  133. /package/{knowledge → content/knowledge}/core/multi-model-review-dispatch.md +0 -0
  134. /package/{knowledge → content/knowledge}/core/operations-runbook.md +0 -0
  135. /package/{knowledge → content/knowledge}/core/project-structure-patterns.md +0 -0
  136. /package/{knowledge → content/knowledge}/core/review-step-template.md +0 -0
  137. /package/{knowledge → content/knowledge}/core/security-best-practices.md +0 -0
  138. /package/{knowledge → content/knowledge}/core/system-architecture.md +0 -0
  139. /package/{knowledge → content/knowledge}/core/task-decomposition.md +0 -0
  140. /package/{knowledge → content/knowledge}/core/task-tracking.md +0 -0
  141. /package/{knowledge → content/knowledge}/core/tech-stack-selection.md +0 -0
  142. /package/{knowledge → content/knowledge}/core/testing-strategy.md +0 -0
  143. /package/{knowledge → content/knowledge}/core/user-stories.md +0 -0
  144. /package/{knowledge → content/knowledge}/core/user-story-innovation.md +0 -0
  145. /package/{knowledge → content/knowledge}/core/ux-specification.md +0 -0
  146. /package/{knowledge → content/knowledge}/execution/task-claiming-strategy.md +0 -0
  147. /package/{knowledge → content/knowledge}/execution/tdd-execution-loop.md +0 -0
  148. /package/{knowledge → content/knowledge}/execution/worktree-management.md +0 -0
  149. /package/{knowledge → content/knowledge}/finalization/apply-fixes-and-freeze.md +0 -0
  150. /package/{knowledge → content/knowledge}/finalization/developer-onboarding.md +0 -0
  151. /package/{knowledge → content/knowledge}/finalization/implementation-playbook.md +0 -0
  152. /package/{knowledge → content/knowledge}/product/gap-analysis.md +0 -0
  153. /package/{knowledge → content/knowledge}/product/prd-craft.md +0 -0
  154. /package/{knowledge → content/knowledge}/product/prd-innovation.md +0 -0
  155. /package/{knowledge → content/knowledge}/product/vision-craft.md +0 -0
  156. /package/{knowledge → content/knowledge}/review/review-adr.md +0 -0
  157. /package/{knowledge → content/knowledge}/review/review-api-design.md +0 -0
  158. /package/{knowledge → content/knowledge}/review/review-database-design.md +0 -0
  159. /package/{knowledge → content/knowledge}/review/review-domain-modeling.md +0 -0
  160. /package/{knowledge → content/knowledge}/review/review-implementation-tasks.md +0 -0
  161. /package/{knowledge → content/knowledge}/review/review-methodology.md +0 -0
  162. /package/{knowledge → content/knowledge}/review/review-operations.md +0 -0
  163. /package/{knowledge → content/knowledge}/review/review-prd.md +0 -0
  164. /package/{knowledge → content/knowledge}/review/review-security.md +0 -0
  165. /package/{knowledge → content/knowledge}/review/review-system-architecture.md +0 -0
  166. /package/{knowledge → content/knowledge}/review/review-testing-strategy.md +0 -0
  167. /package/{knowledge → content/knowledge}/review/review-user-stories.md +0 -0
  168. /package/{knowledge → content/knowledge}/review/review-ux-specification.md +0 -0
  169. /package/{knowledge → content/knowledge}/review/review-vision.md +0 -0
  170. /package/{knowledge → content/knowledge}/tools/release-management.md +0 -0
  171. /package/{knowledge → content/knowledge}/tools/session-analysis.md +0 -0
  172. /package/{knowledge → content/knowledge}/tools/version-strategy.md +0 -0
  173. /package/{knowledge → content/knowledge}/validation/critical-path-analysis.md +0 -0
  174. /package/{knowledge → content/knowledge}/validation/cross-phase-consistency.md +0 -0
  175. /package/{knowledge → content/knowledge}/validation/decision-completeness.md +0 -0
  176. /package/{knowledge → content/knowledge}/validation/dependency-validation.md +0 -0
  177. /package/{knowledge → content/knowledge}/validation/implementability-review.md +0 -0
  178. /package/{knowledge → content/knowledge}/validation/scope-management.md +0 -0
  179. /package/{knowledge → content/knowledge}/validation/traceability.md +0 -0
  180. /package/{methodology → content/methodology}/README.md +0 -0
  181. /package/{methodology → content/methodology}/custom-defaults.yml +0 -0
  182. /package/{methodology → content/methodology}/deep.yml +0 -0
  183. /package/{methodology → content/methodology}/mvp.yml +0 -0
  184. /package/{pipeline → content/pipeline}/architecture/review-architecture.md +0 -0
  185. /package/{pipeline → content/pipeline}/architecture/system-architecture.md +0 -0
  186. /package/{pipeline → content/pipeline}/build/multi-agent-resume.md +0 -0
  187. /package/{pipeline → content/pipeline}/build/multi-agent-start.md +0 -0
  188. /package/{pipeline → content/pipeline}/build/new-enhancement.md +0 -0
  189. /package/{pipeline → content/pipeline}/build/quick-task.md +0 -0
  190. /package/{pipeline → content/pipeline}/build/single-agent-resume.md +0 -0
  191. /package/{pipeline → content/pipeline}/build/single-agent-start.md +0 -0
  192. /package/{pipeline → content/pipeline}/consolidation/claude-md-optimization.md +0 -0
  193. /package/{pipeline → content/pipeline}/decisions/adrs.md +0 -0
  194. /package/{pipeline → content/pipeline}/environment/ai-memory-setup.md +0 -0
  195. /package/{pipeline → content/pipeline}/environment/automated-pr-review.md +0 -0
  196. /package/{pipeline → content/pipeline}/environment/dev-env-setup.md +0 -0
  197. /package/{pipeline → content/pipeline}/environment/git-workflow.md +0 -0
  198. /package/{pipeline → content/pipeline}/finalization/apply-fixes-and-freeze.md +0 -0
  199. /package/{pipeline → content/pipeline}/finalization/developer-onboarding-guide.md +0 -0
  200. /package/{pipeline → content/pipeline}/foundation/beads.md +0 -0
  201. /package/{pipeline → content/pipeline}/foundation/coding-standards.md +0 -0
  202. /package/{pipeline → content/pipeline}/foundation/project-structure.md +0 -0
  203. /package/{pipeline → content/pipeline}/foundation/tdd.md +0 -0
  204. /package/{pipeline → content/pipeline}/integration/add-e2e-testing.md +0 -0
  205. /package/{pipeline → content/pipeline}/modeling/domain-modeling.md +0 -0
  206. /package/{pipeline → content/pipeline}/parity/platform-parity-review.md +0 -0
  207. /package/{pipeline → content/pipeline}/planning/implementation-plan.md +0 -0
  208. /package/{pipeline → content/pipeline}/pre/create-prd.md +0 -0
  209. /package/{pipeline → content/pipeline}/pre/innovate-prd.md +0 -0
  210. /package/{pipeline → content/pipeline}/pre/innovate-user-stories.md +0 -0
  211. /package/{pipeline → content/pipeline}/pre/review-prd.md +0 -0
  212. /package/{pipeline → content/pipeline}/pre/review-user-stories.md +0 -0
  213. /package/{pipeline → content/pipeline}/pre/user-stories.md +0 -0
  214. /package/{pipeline → content/pipeline}/quality/create-evals.md +0 -0
  215. /package/{pipeline → content/pipeline}/quality/operations.md +0 -0
  216. /package/{pipeline → content/pipeline}/quality/review-operations.md +0 -0
  217. /package/{pipeline → content/pipeline}/quality/review-security.md +0 -0
  218. /package/{pipeline → content/pipeline}/quality/security.md +0 -0
  219. /package/{pipeline → content/pipeline}/specification/api-contracts.md +0 -0
  220. /package/{pipeline → content/pipeline}/specification/database-schema.md +0 -0
  221. /package/{pipeline → content/pipeline}/specification/review-api.md +0 -0
  222. /package/{pipeline → content/pipeline}/specification/review-database.md +0 -0
  223. /package/{pipeline → content/pipeline}/specification/review-ux.md +0 -0
  224. /package/{pipeline → content/pipeline}/specification/ux-spec.md +0 -0
  225. /package/{pipeline → content/pipeline}/validation/critical-path-walkthrough.md +0 -0
  226. /package/{pipeline → content/pipeline}/validation/cross-phase-consistency.md +0 -0
  227. /package/{pipeline → content/pipeline}/validation/decision-completeness.md +0 -0
  228. /package/{pipeline → content/pipeline}/validation/dependency-graph-validation.md +0 -0
  229. /package/{pipeline → content/pipeline}/validation/implementability-dry-run.md +0 -0
  230. /package/{pipeline → content/pipeline}/validation/scope-creep-check.md +0 -0
  231. /package/{pipeline → content/pipeline}/validation/traceability-matrix.md +0 -0
  232. /package/{pipeline → content/pipeline}/vision/create-vision.md +0 -0
  233. /package/{pipeline → content/pipeline}/vision/review-vision.md +0 -0
  234. /package/{tools → content/tools}/dashboard.md +0 -0
  235. /package/{tools → content/tools}/release.md +0 -0
  236. /package/{tools → content/tools}/review-code.md +0 -0
  237. /package/{tools → content/tools}/review-pr.md +0 -0
  238. /package/{tools → content/tools}/session-analyzer.md +0 -0
  239. /package/{tools → content/tools}/update.md +0 -0
  240. /package/{tools → content/tools}/version-bump.md +0 -0
  241. /package/{tools → content/tools}/version.md +0 -0
@@ -0,0 +1,91 @@
1
+ import fs from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { afterEach, describe, it, expect, vi } from 'vitest';
5
+ import { GeminiAdapter } from './gemini.js';
6
+ import * as fsUtils from '../../utils/fs.js';
7
+ const tmpDirs = [];
8
+ const makeContext = (overrides) => ({
9
+ projectRoot: overrides?.projectRoot ?? makeTmpDir(),
10
+ methodology: overrides?.methodology ?? 'standard',
11
+ allSteps: overrides?.allSteps ?? ['create-prd', 'status', 'next'],
12
+ });
13
+ const makeStepInput = (overrides) => ({
14
+ slug: overrides?.slug ?? 'create-prd',
15
+ description: overrides?.description ?? 'Create a PRD',
16
+ phase: overrides?.phase ?? 'planning',
17
+ dependsOn: overrides?.dependsOn ?? [],
18
+ produces: overrides?.produces ?? ['docs/prd.md'],
19
+ pipelineIndex: overrides?.pipelineIndex ?? 0,
20
+ body: overrides?.body ?? '## Purpose\nCreate the PRD.',
21
+ sections: overrides?.sections ?? { Purpose: 'Create the PRD.' },
22
+ knowledgeEntries: overrides?.knowledgeEntries ?? [],
23
+ conditional: overrides?.conditional ?? null,
24
+ longDescription: overrides?.longDescription ?? 'Create the PRD.',
25
+ });
26
+ function makeTmpDir() {
27
+ const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'scaffold-gemini-adapter-'));
28
+ tmpDirs.push(dir);
29
+ return dir;
30
+ }
31
+ afterEach(() => {
32
+ vi.restoreAllMocks();
33
+ for (const dir of tmpDirs) {
34
+ try {
35
+ fs.rmSync(dir, { recursive: true, force: true });
36
+ }
37
+ catch {
38
+ /* ignore */
39
+ }
40
+ }
41
+ tmpDirs.length = 0;
42
+ });
43
+ describe('GeminiAdapter', () => {
44
+ it('generateStepWrapper creates a .gemini command TOML file for the step slug', () => {
45
+ const adapter = new GeminiAdapter();
46
+ adapter.initialize(makeContext());
47
+ const result = adapter.generateStepWrapper(makeStepInput({
48
+ slug: 'create-prd',
49
+ description: 'Create a PRD',
50
+ longDescription: 'Capture the project requirements in detail.',
51
+ }));
52
+ expect(result.files).toHaveLength(1);
53
+ expect(result.files[0].relativePath).toBe('.gemini/commands/scaffold/create-prd.toml');
54
+ expect(result.files[0].writeMode).toBe('create');
55
+ expect(result.files[0].content).toContain('description = "Run scaffold create-prd through the Scaffold runner workflow."');
56
+ expect(result.files[0].content).toContain('Step description: Create a PRD');
57
+ expect(result.files[0].content).toContain('Purpose: Capture the project requirements in detail.');
58
+ expect(result.files[0].content).toContain('User request: scaffold create-prd');
59
+ });
60
+ it('finalize emits shared skills, GEMINI.md, and status/next commands', () => {
61
+ const adapter = new GeminiAdapter();
62
+ const context = makeContext();
63
+ adapter.initialize(context);
64
+ const step = makeStepInput({ slug: 'create-prd' });
65
+ const stepOutput = adapter.generateStepWrapper(step);
66
+ const finalizeInput = { results: [stepOutput] };
67
+ const result = adapter.finalize(finalizeInput);
68
+ expect(result.files.map((file) => file.relativePath)).toEqual(expect.arrayContaining([
69
+ '.agents/skills/scaffold-runner/SKILL.md',
70
+ '.agents/skills/scaffold-pipeline/SKILL.md',
71
+ 'GEMINI.md',
72
+ '.gemini/commands/scaffold/status.toml',
73
+ '.gemini/commands/scaffold/next.toml',
74
+ ]));
75
+ expect(result.files.find((file) => file.relativePath === 'GEMINI.md')?.content).toContain('@./.agents/skills/scaffold-runner/SKILL.md');
76
+ expect(result.files.find((file) => file.relativePath === 'GEMINI.md')?.content).toContain('@./.agents/skills/scaffold-pipeline/SKILL.md');
77
+ expect(fs.existsSync(path.join(context.projectRoot, 'GEMINI.md'))).toBe(false);
78
+ });
79
+ it('returns a controlled error when packaged skill files are missing', () => {
80
+ const adapter = new GeminiAdapter();
81
+ const context = makeContext();
82
+ adapter.initialize(context);
83
+ const missingSkillDir = path.join(makeTmpDir(), 'missing-agent-skills');
84
+ vi.spyOn(fsUtils, 'getPackageSkillsDir').mockReturnValue(missingSkillDir);
85
+ const result = adapter.finalize({ results: [] });
86
+ expect(result.files).toEqual([]);
87
+ expect(result.errors).toHaveLength(1);
88
+ expect(result.errors[0].code).toBe('GEMINI_SKILL_FILES_MISSING');
89
+ });
90
+ });
91
+ //# sourceMappingURL=gemini.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.test.js","sourceRoot":"","sources":["../../../src/core/adapters/gemini.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export interface SkillTarget {
2
+ installDir: '.claude/skills' | '.agents/skills';
3
+ label: string;
4
+ templateVars: Record<string, string>;
5
+ }
6
+ export interface SkillDefinition {
7
+ name: string;
8
+ description: string;
9
+ }
10
+ export interface InstallResult {
11
+ installed: number;
12
+ errors: string[];
13
+ }
14
+ export interface InstallOptions {
15
+ force?: boolean;
16
+ }
17
+ export declare const SKILL_TARGETS: SkillTarget[];
18
+ export declare const INSTALLABLE_SKILLS: SkillDefinition[];
19
+ /** Replace `{{KEY}}` template markers with values from `vars`. */
20
+ export declare function resolveSkillTemplate(content: string, vars: Record<string, string>): string;
21
+ /** Read the package version from package.json. */
22
+ export declare function getPackageVersion(): string;
23
+ /** Return the directory containing skill template sources. */
24
+ export declare function getSkillTemplateDir(): string;
25
+ /**
26
+ * Check `.scaffold-skill-version` markers in each target directory.
27
+ * If any marker is missing or stale, reinstall all skills.
28
+ * Skips silently if template source files are missing.
29
+ */
30
+ export declare function syncSkillsIfNeeded(projectRoot: string): void;
31
+ /**
32
+ * Install all skill templates to both target directories, resolving
33
+ * template variables per target. Writes version markers on success.
34
+ */
35
+ export declare function installAllSkills(projectRoot: string, options?: InstallOptions): InstallResult;
36
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/core/skills/sync.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,gBAAgB,GAAG,gBAAgB,CAAA;IAC/C,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAMD,eAAO,MAAM,aAAa,EAAE,WAAW,EAWtC,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAS/C,CAAA;AAQD,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAE1F;AAED,kDAAkD;AAClD,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED,8DAA8D;AAC9D,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAe5D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,aAAa,CA8C7F"}
@@ -0,0 +1,119 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { getPackageRoot } from '../../utils/fs.js';
5
+ // ---------------------------------------------------------------------------
6
+ // Constants
7
+ // ---------------------------------------------------------------------------
8
+ export const SKILL_TARGETS = [
9
+ {
10
+ installDir: '.claude/skills',
11
+ label: 'Claude Code',
12
+ templateVars: { INSTRUCTIONS_FILE: 'CLAUDE.md' },
13
+ },
14
+ {
15
+ installDir: '.agents/skills',
16
+ label: 'shared agents',
17
+ templateVars: { INSTRUCTIONS_FILE: 'AGENTS.md' },
18
+ },
19
+ ];
20
+ export const INSTALLABLE_SKILLS = [
21
+ {
22
+ name: 'scaffold-runner',
23
+ description: 'Interactive CLI wrapper that surfaces decision points before execution',
24
+ },
25
+ {
26
+ name: 'scaffold-pipeline',
27
+ description: 'Static reference for pipeline ordering, dependencies, and phase structure',
28
+ },
29
+ ];
30
+ const VERSION_MARKER_FILE = '.scaffold-skill-version';
31
+ // ---------------------------------------------------------------------------
32
+ // Helpers
33
+ // ---------------------------------------------------------------------------
34
+ /** Replace `{{KEY}}` template markers with values from `vars`. */
35
+ export function resolveSkillTemplate(content, vars) {
36
+ return content.replace(/\{\{(\w+)\}\}/g, (match, key) => vars[key] ?? match);
37
+ }
38
+ /** Read the package version from package.json. */
39
+ export function getPackageVersion() {
40
+ // Both src/core/skills/ and dist/core/skills/ are 3 levels deep from the package root
41
+ const thisDir = path.dirname(fileURLToPath(import.meta.url));
42
+ const pkgPath = path.resolve(thisDir, '..', '..', '..', 'package.json');
43
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
44
+ return pkg.version;
45
+ }
46
+ /** Return the directory containing skill template sources. */
47
+ export function getSkillTemplateDir() {
48
+ return path.join(getPackageRoot(), 'content', 'skills');
49
+ }
50
+ // ---------------------------------------------------------------------------
51
+ // Core functions
52
+ // ---------------------------------------------------------------------------
53
+ /**
54
+ * Check `.scaffold-skill-version` markers in each target directory.
55
+ * If any marker is missing or stale, reinstall all skills.
56
+ * Skips silently if template source files are missing.
57
+ */
58
+ export function syncSkillsIfNeeded(projectRoot) {
59
+ const currentVersion = getPackageVersion();
60
+ // Fast path: check if all markers match the current version
61
+ const allCurrent = SKILL_TARGETS.every(target => {
62
+ const markerPath = path.join(projectRoot, target.installDir, VERSION_MARKER_FILE);
63
+ if (!fs.existsSync(markerPath))
64
+ return false;
65
+ const markerVersion = fs.readFileSync(markerPath, 'utf8').trim();
66
+ return markerVersion === currentVersion;
67
+ });
68
+ if (allCurrent)
69
+ return;
70
+ // At least one target is stale or missing — reinstall
71
+ installAllSkills(projectRoot);
72
+ }
73
+ /**
74
+ * Install all skill templates to both target directories, resolving
75
+ * template variables per target. Writes version markers on success.
76
+ */
77
+ export function installAllSkills(projectRoot, options) {
78
+ const force = options?.force ?? false;
79
+ const templateDir = getSkillTemplateDir();
80
+ const currentVersion = getPackageVersion();
81
+ let installed = 0;
82
+ const errors = [];
83
+ for (const target of SKILL_TARGETS) {
84
+ for (const skill of INSTALLABLE_SKILLS) {
85
+ const sourcePath = path.join(templateDir, skill.name, 'SKILL.md');
86
+ if (!fs.existsSync(sourcePath)) {
87
+ // Skip silently — template source not bundled
88
+ continue;
89
+ }
90
+ const destDir = path.join(projectRoot, target.installDir, skill.name);
91
+ const destPath = path.join(destDir, 'SKILL.md');
92
+ if (fs.existsSync(destPath) && !force) {
93
+ // Already present and not forcing — still count it if it exists
94
+ continue;
95
+ }
96
+ try {
97
+ fs.mkdirSync(destDir, { recursive: true });
98
+ const template = fs.readFileSync(sourcePath, 'utf8');
99
+ const resolved = resolveSkillTemplate(template, target.templateVars);
100
+ fs.writeFileSync(destPath, resolved, 'utf8');
101
+ installed++;
102
+ }
103
+ catch (err) {
104
+ errors.push(`Failed to install ${skill.name} to ${target.installDir}: ${err}`);
105
+ }
106
+ }
107
+ // Write version marker for this target
108
+ const targetDir = path.join(projectRoot, target.installDir);
109
+ try {
110
+ fs.mkdirSync(targetDir, { recursive: true });
111
+ fs.writeFileSync(path.join(targetDir, VERSION_MARKER_FILE), currentVersion, 'utf8');
112
+ }
113
+ catch (err) {
114
+ errors.push(`Failed to write version marker to ${target.installDir}: ${err}`);
115
+ }
116
+ }
117
+ return { installed, errors };
118
+ }
119
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/core/skills/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sync.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.test.d.ts","sourceRoot":"","sources":["../../../src/core/skills/sync.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,166 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ import fs from 'node:fs';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import crypto from 'node:crypto';
6
+ // Mock getPackageRoot so we can control where source skills are found
7
+ vi.mock('../../utils/fs.js', () => ({
8
+ getPackageRoot: vi.fn(() => '/mock-package-root'),
9
+ }));
10
+ import { syncSkillsIfNeeded, installAllSkills, SKILL_TARGETS, INSTALLABLE_SKILLS } from './sync.js';
11
+ import { getPackageRoot } from '../../utils/fs.js';
12
+ function makeTmpDir() {
13
+ const dir = path.join(os.tmpdir(), `scaffold-sync-test-${crypto.randomUUID()}`);
14
+ fs.mkdirSync(dir, { recursive: true });
15
+ return dir;
16
+ }
17
+ /**
18
+ * Seed skill template source files in a fake package root.
19
+ * Uses the template format with {{INSTRUCTIONS_FILE}} markers.
20
+ */
21
+ function seedSkillTemplates(packageRoot) {
22
+ for (const skill of INSTALLABLE_SKILLS) {
23
+ const skillDir = path.join(packageRoot, 'content', 'skills', skill.name);
24
+ fs.mkdirSync(skillDir, { recursive: true });
25
+ fs.writeFileSync(path.join(skillDir, 'SKILL.md'), `# ${skill.name}\nInstructions file: {{INSTRUCTIONS_FILE}}\n`, 'utf8');
26
+ }
27
+ }
28
+ /**
29
+ * Write a version marker file in the given target directory.
30
+ */
31
+ function seedVersionMarker(projectRoot, installDir, version) {
32
+ const dir = path.join(projectRoot, installDir);
33
+ fs.mkdirSync(dir, { recursive: true });
34
+ fs.writeFileSync(path.join(dir, '.scaffold-skill-version'), version, 'utf8');
35
+ }
36
+ describe('syncSkillsIfNeeded', () => {
37
+ let tmpDir;
38
+ let packageRoot;
39
+ beforeEach(() => {
40
+ tmpDir = makeTmpDir();
41
+ packageRoot = makeTmpDir();
42
+ vi.mocked(getPackageRoot).mockReturnValue(packageRoot);
43
+ });
44
+ afterEach(() => {
45
+ vi.restoreAllMocks();
46
+ fs.rmSync(tmpDir, { recursive: true, force: true });
47
+ fs.rmSync(packageRoot, { recursive: true, force: true });
48
+ });
49
+ it('installs skills when no version marker exists', () => {
50
+ seedSkillTemplates(packageRoot);
51
+ syncSkillsIfNeeded(tmpDir);
52
+ // Skills should be installed in both targets
53
+ for (const target of SKILL_TARGETS) {
54
+ for (const skill of INSTALLABLE_SKILLS) {
55
+ const skillPath = path.join(tmpDir, target.installDir, skill.name, 'SKILL.md');
56
+ expect(fs.existsSync(skillPath)).toBe(true);
57
+ }
58
+ }
59
+ });
60
+ it('resolves {{INSTRUCTIONS_FILE}} to CLAUDE.md for .claude/skills/', () => {
61
+ seedSkillTemplates(packageRoot);
62
+ syncSkillsIfNeeded(tmpDir);
63
+ const content = fs.readFileSync(path.join(tmpDir, '.claude', 'skills', INSTALLABLE_SKILLS[0].name, 'SKILL.md'), 'utf8');
64
+ expect(content).toContain('Instructions file: CLAUDE.md');
65
+ expect(content).not.toContain('{{INSTRUCTIONS_FILE}}');
66
+ });
67
+ it('resolves {{INSTRUCTIONS_FILE}} to AGENTS.md for .agents/skills/', () => {
68
+ seedSkillTemplates(packageRoot);
69
+ syncSkillsIfNeeded(tmpDir);
70
+ const content = fs.readFileSync(path.join(tmpDir, '.agents', 'skills', INSTALLABLE_SKILLS[0].name, 'SKILL.md'), 'utf8');
71
+ expect(content).toContain('Instructions file: AGENTS.md');
72
+ expect(content).not.toContain('{{INSTRUCTIONS_FILE}}');
73
+ });
74
+ it('skips sync when version marker matches package version', () => {
75
+ seedSkillTemplates(packageRoot);
76
+ // First install to create the skills and markers
77
+ installAllSkills(tmpDir);
78
+ // Spy on writeFileSync after initial install
79
+ const writeSpy = vi.spyOn(fs, 'writeFileSync');
80
+ // syncSkillsIfNeeded should detect markers match and skip
81
+ syncSkillsIfNeeded(tmpDir);
82
+ expect(writeSpy).not.toHaveBeenCalled();
83
+ writeSpy.mockRestore();
84
+ });
85
+ it('re-syncs when version marker is stale', () => {
86
+ seedSkillTemplates(packageRoot);
87
+ // Seed stale version markers
88
+ for (const target of SKILL_TARGETS) {
89
+ seedVersionMarker(tmpDir, target.installDir, '0.0.0-old');
90
+ }
91
+ syncSkillsIfNeeded(tmpDir);
92
+ // Skills should have been installed
93
+ for (const target of SKILL_TARGETS) {
94
+ for (const skill of INSTALLABLE_SKILLS) {
95
+ const skillPath = path.join(tmpDir, target.installDir, skill.name, 'SKILL.md');
96
+ expect(fs.existsSync(skillPath)).toBe(true);
97
+ }
98
+ // Version marker should be updated
99
+ const marker = fs.readFileSync(path.join(tmpDir, target.installDir, '.scaffold-skill-version'), 'utf8');
100
+ expect(marker).not.toBe('0.0.0-old');
101
+ }
102
+ });
103
+ it('skips silently when template source is missing', () => {
104
+ // Don't seed any templates — packageRoot has no content/skills/
105
+ // Should not throw
106
+ syncSkillsIfNeeded(tmpDir);
107
+ // No skills should be installed
108
+ for (const target of SKILL_TARGETS) {
109
+ for (const skill of INSTALLABLE_SKILLS) {
110
+ const skillPath = path.join(tmpDir, target.installDir, skill.name, 'SKILL.md');
111
+ expect(fs.existsSync(skillPath)).toBe(false);
112
+ }
113
+ }
114
+ });
115
+ });
116
+ describe('installAllSkills', () => {
117
+ let tmpDir;
118
+ let packageRoot;
119
+ beforeEach(() => {
120
+ tmpDir = makeTmpDir();
121
+ packageRoot = makeTmpDir();
122
+ vi.mocked(getPackageRoot).mockReturnValue(packageRoot);
123
+ });
124
+ afterEach(() => {
125
+ vi.restoreAllMocks();
126
+ fs.rmSync(tmpDir, { recursive: true, force: true });
127
+ fs.rmSync(packageRoot, { recursive: true, force: true });
128
+ });
129
+ it('installs all skills to both target directories', () => {
130
+ seedSkillTemplates(packageRoot);
131
+ const result = installAllSkills(tmpDir);
132
+ expect(result.installed).toBe(INSTALLABLE_SKILLS.length * SKILL_TARGETS.length);
133
+ expect(result.errors).toEqual([]);
134
+ for (const target of SKILL_TARGETS) {
135
+ for (const skill of INSTALLABLE_SKILLS) {
136
+ const skillPath = path.join(tmpDir, target.installDir, skill.name, 'SKILL.md');
137
+ expect(fs.existsSync(skillPath)).toBe(true);
138
+ }
139
+ }
140
+ });
141
+ it('writes version markers', () => {
142
+ seedSkillTemplates(packageRoot);
143
+ installAllSkills(tmpDir);
144
+ for (const target of SKILL_TARGETS) {
145
+ const markerPath = path.join(tmpDir, target.installDir, '.scaffold-skill-version');
146
+ expect(fs.existsSync(markerPath)).toBe(true);
147
+ const version = fs.readFileSync(markerPath, 'utf8');
148
+ expect(version.length).toBeGreaterThan(0);
149
+ }
150
+ });
151
+ it('overwrites existing skills when force is true', () => {
152
+ seedSkillTemplates(packageRoot);
153
+ // First install
154
+ installAllSkills(tmpDir);
155
+ // Write custom content to a skill file
156
+ const skillPath = path.join(tmpDir, '.claude', 'skills', INSTALLABLE_SKILLS[0].name, 'SKILL.md');
157
+ fs.writeFileSync(skillPath, '# custom content that should be overwritten', 'utf8');
158
+ // Reinstall with force
159
+ const result = installAllSkills(tmpDir, { force: true });
160
+ expect(result.installed).toBe(INSTALLABLE_SKILLS.length * SKILL_TARGETS.length);
161
+ const content = fs.readFileSync(skillPath, 'utf8');
162
+ expect(content).toContain('Instructions file: CLAUDE.md');
163
+ expect(content).not.toContain('custom content');
164
+ });
165
+ });
166
+ //# sourceMappingURL=sync.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.test.js","sourceRoot":"","sources":["../../../src/core/skills/sync.test.ts"],"names":[],"mappings":"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"}
@@ -36,8 +36,8 @@ function makeProjectRoot(opts = {}) {
36
36
  if (opts.pipelineFiles !== undefined && opts.pipelineFiles.length > 0) {
37
37
  for (const f of opts.pipelineFiles) {
38
38
  const dir = f.subdir
39
- ? path.join(root, 'pipeline', f.subdir)
40
- : path.join(root, 'pipeline');
39
+ ? path.join(root, 'content', 'pipeline', f.subdir)
40
+ : path.join(root, 'content', 'pipeline');
41
41
  fs.mkdirSync(dir, { recursive: true });
42
42
  fs.writeFileSync(path.join(dir, f.name), f.content, 'utf8');
43
43
  }
@@ -259,7 +259,7 @@ outputs:
259
259
  },
260
260
  ],
261
261
  });
262
- const pipelineDir = path.join(root, 'pipeline');
262
+ const pipelineDir = path.join(root, 'content', 'pipeline');
263
263
  const metaPrompts = discoverMetaPrompts(pipelineDir);
264
264
  expect(metaPrompts.size).toBe(2);
265
265
  const graph = buildGraph([...metaPrompts.values()].map(mp => mp.frontmatter), new Map());
@@ -290,7 +290,7 @@ outputs:
290
290
  },
291
291
  ],
292
292
  });
293
- const pipelineDir = path.join(root, 'pipeline');
293
+ const pipelineDir = path.join(root, 'content', 'pipeline');
294
294
  const metaPrompts = discoverMetaPrompts(pipelineDir);
295
295
  const graph = buildGraph([...metaPrompts.values()].map(mp => mp.frontmatter), new Map());
296
296
  // With both steps pending, only step-a (no deps) should be eligible
@@ -323,7 +323,7 @@ outputs:
323
323
  },
324
324
  ],
325
325
  });
326
- const pipelineDir = path.join(root, 'pipeline');
326
+ const pipelineDir = path.join(root, 'content', 'pipeline');
327
327
  const metaPrompts = discoverMetaPrompts(pipelineDir);
328
328
  const graph = buildGraph([...metaPrompts.values()].map(mp => mp.frontmatter), new Map());
329
329
  // After step-a completes, step-b becomes eligible
@@ -356,7 +356,7 @@ outputs:
356
356
  },
357
357
  ],
358
358
  });
359
- const pipelineDir = path.join(root, 'pipeline');
359
+ const pipelineDir = path.join(root, 'content', 'pipeline');
360
360
  const metaPrompts = discoverMetaPrompts(pipelineDir);
361
361
  const graph = buildGraph([...metaPrompts.values()].map(mp => mp.frontmatter), new Map());
362
362
  const cycles = detectCycles(graph);
@@ -394,7 +394,7 @@ outputs:
394
394
  },
395
395
  ],
396
396
  });
397
- const pipelineDir = path.join(root, 'pipeline');
397
+ const pipelineDir = path.join(root, 'content', 'pipeline');
398
398
  const metaPrompts = discoverMetaPrompts(pipelineDir);
399
399
  const graph = buildGraph([...metaPrompts.values()].map(mp => mp.frontmatter), new Map());
400
400
  const cycles = detectCycles(graph);
@@ -430,7 +430,7 @@ outputs:
430
430
  ` },
431
431
  ],
432
432
  });
433
- const pipelineDir = path.join(root, 'pipeline');
433
+ const pipelineDir = path.join(root, 'content', 'pipeline');
434
434
  const metaPrompts = discoverMetaPrompts(pipelineDir);
435
435
  expect(metaPrompts.size).toBe(2);
436
436
  expect(metaPrompts.has('create-prd')).toBe(true);
@@ -459,7 +459,7 @@ outputs:
459
459
  },
460
460
  ],
461
461
  });
462
- const pipelineDir = path.join(root, 'pipeline');
462
+ const pipelineDir = path.join(root, 'content', 'pipeline');
463
463
  const metaPrompts = discoverMetaPrompts(pipelineDir);
464
464
  const graph = buildGraph([...metaPrompts.values()].map(mp => mp.frontmatter), new Map());
465
465
  // With step-a skipped, step-b should be eligible
@@ -474,7 +474,7 @@ outputs:
474
474
  it('real scaffold pipeline directory loads without errors', () => {
475
475
  const repoRoot = path.resolve(import.meta.url.replace('file://', ''), '../../../..');
476
476
  // The real pipeline dir in the repo
477
- const pipelineDir = path.join(repoRoot, 'pipeline');
477
+ const pipelineDir = path.join(repoRoot, 'content', 'pipeline');
478
478
  if (!fs.existsSync(pipelineDir)) {
479
479
  // Skip if running outside repo context
480
480
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../src/e2e/commands.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../src/e2e/commands.test.ts"],"names":[],"mappings":"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"}