git-impact 0.6.6 → 0.7.1

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.
@@ -53,7 +53,7 @@ let tmp;
53
53
  fs.mkdirSync(path.join(tmp, ".claude"));
54
54
  (0, vitest_1.expect)((0, installer_1.detectEditors)(tmp)).toContain("claude");
55
55
  });
56
- (0, vitest_1.it)("finds multiple editors in stable order", () => {
56
+ (0, vitest_1.it)("finds multiple editors in catalog order", () => {
57
57
  fs.mkdirSync(path.join(tmp, ".cursor"));
58
58
  fs.mkdirSync(path.join(tmp, ".gemini"));
59
59
  fs.mkdirSync(path.join(tmp, ".claude"));
@@ -63,17 +63,32 @@ let tmp;
63
63
  fs.mkdirSync(path.join(tmp, ".github"));
64
64
  (0, vitest_1.expect)((0, installer_1.detectEditors)(tmp)).toEqual(["copilot"]);
65
65
  });
66
+ (0, vitest_1.it)("detects OpenCode", () => {
67
+ fs.mkdirSync(path.join(tmp, ".opencode"));
68
+ (0, vitest_1.expect)((0, installer_1.detectEditors)(tmp)).toEqual(["opencode"]);
69
+ });
70
+ (0, vitest_1.it)("never returns `agents` (it's always written as a baseline, not user-selectable)", () => {
71
+ fs.mkdirSync(path.join(tmp, ".agents"));
72
+ // `agents` is not part of the public Integration type, so detection
73
+ // must not surface it as an editor to install for.
74
+ (0, vitest_1.expect)((0, installer_1.detectEditors)(tmp)).not.toContain("agents");
75
+ });
66
76
  });
67
- (0, vitest_1.describe)("install", () => {
68
- (0, vitest_1.it)("writes context.json, gitignore, and CLAUDE.md for claude integration", () => {
77
+ (0, vitest_1.describe)("install — canonical SKILL.md layout", () => {
78
+ (0, vitest_1.it)("always writes the .agents/skills/git-impact/ baseline", () => {
69
79
  (0, installer_1.install)({
70
80
  repoRoot: tmp,
71
81
  integrations: ["claude"],
72
- context: {
73
- companyDescription: "X",
74
- managerPriorities: "Y",
75
- glossary: {},
76
- },
82
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
83
+ silent: true,
84
+ });
85
+ (0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".agents", "skills", "git-impact", "SKILL.md"))).toBe(true);
86
+ });
87
+ (0, vitest_1.it)("writes context.json, .gitignore, and CLAUDE.md for claude integration", () => {
88
+ (0, installer_1.install)({
89
+ repoRoot: tmp,
90
+ integrations: ["claude"],
91
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
77
92
  silent: true,
78
93
  });
79
94
  (0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".git-impact", "context.json"))).toBe(true);
@@ -91,9 +106,12 @@ let tmp;
91
106
  const skillDir = path.join(tmp, ".claude", "skills", "git-impact");
92
107
  (0, vitest_1.expect)(fs.existsSync(path.join(skillDir, "references", "translation-rules.md"))).toBe(true);
93
108
  (0, vitest_1.expect)(fs.existsSync(path.join(skillDir, "references", "html-template.md"))).toBe(true);
109
+ (0, vitest_1.expect)(fs.existsSync(path.join(skillDir, "references", "mode-standup.md"))).toBe(true);
110
+ (0, vitest_1.expect)(fs.existsSync(path.join(skillDir, "references", "mode-review.md"))).toBe(true);
111
+ (0, vitest_1.expect)(fs.existsSync(path.join(skillDir, "references", "mode-init.md"))).toBe(true);
94
112
  const skillContent = fs.readFileSync(path.join(skillDir, "SKILL.md"), "utf-8");
95
113
  (0, vitest_1.expect)(skillContent).toContain("name: git-impact");
96
- (0, vitest_1.expect)(skillContent).toContain("provenance");
114
+ (0, vitest_1.expect)(skillContent).toContain("references/mode-standup.md");
97
115
  });
98
116
  (0, vitest_1.it)("is idempotent — running twice does not duplicate gitignore entries", () => {
99
117
  (0, installer_1.install)({
@@ -112,16 +130,264 @@ let tmp;
112
130
  const matches = gitignore.match(/\.git-impact\/history\.db/g) ?? [];
113
131
  (0, vitest_1.expect)(matches.length).toBe(1);
114
132
  });
115
- (0, vitest_1.it)("writes editor-specific files when their integration is requested", () => {
133
+ (0, vitest_1.it)("gitignores all regenerable per-machine files, not just history.db", () => {
134
+ (0, installer_1.install)({
135
+ repoRoot: tmp,
136
+ integrations: ["claude"],
137
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
138
+ silent: true,
139
+ });
140
+ const gitignore = fs.readFileSync(path.join(tmp, ".gitignore"), "utf-8");
141
+ (0, vitest_1.expect)(gitignore).toContain(".git-impact/history.db");
142
+ (0, vitest_1.expect)(gitignore).toContain(".git-impact/result.html");
143
+ (0, vitest_1.expect)(gitignore).toContain(".git-impact/standups/");
144
+ });
145
+ (0, vitest_1.it)("fills in missing gitignore entries on re-run without duplicating existing ones", () => {
146
+ // Simulate a repo whose .gitignore already lists only history.db (the
147
+ // pre-0.7.1 installer's single entry). The re-run should append the two
148
+ // newly-tracked entries without re-adding history.db.
149
+ fs.writeFileSync(path.join(tmp, ".gitignore"), "node_modules/\n.git-impact/history.db\n");
150
+ (0, installer_1.install)({
151
+ repoRoot: tmp,
152
+ integrations: ["claude"],
153
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
154
+ silent: true,
155
+ });
156
+ const gitignore = fs.readFileSync(path.join(tmp, ".gitignore"), "utf-8");
157
+ (0, vitest_1.expect)((gitignore.match(/\.git-impact\/history\.db/g) ?? []).length).toBe(1);
158
+ (0, vitest_1.expect)(gitignore).toContain(".git-impact/result.html");
159
+ (0, vitest_1.expect)(gitignore).toContain(".git-impact/standups/");
160
+ });
161
+ (0, vitest_1.it)("includes manifest.json in the install summary so the CLI reports it", () => {
162
+ const installed = (0, installer_1.install)({
163
+ repoRoot: tmp,
164
+ integrations: ["claude"],
165
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
166
+ silent: true,
167
+ });
168
+ const manifestEntry = installed.find((f) => f.path.endsWith("manifest.json"));
169
+ (0, vitest_1.expect)(manifestEntry).toBeDefined();
170
+ (0, vitest_1.expect)(manifestEntry?.action).toBe("created");
171
+ // Re-running should report it as updated rather than created again.
172
+ const second = (0, installer_1.install)({
173
+ repoRoot: tmp,
174
+ integrations: ["claude"],
175
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
176
+ silent: true,
177
+ });
178
+ (0, vitest_1.expect)(second.find((f) => f.path.endsWith("manifest.json"))?.action).toBe("updated");
179
+ });
180
+ (0, vitest_1.it)("writes the published package version into the manifest (no drift)", () => {
181
+ (0, installer_1.install)({
182
+ repoRoot: tmp,
183
+ integrations: ["claude"],
184
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
185
+ silent: true,
186
+ });
187
+ const manifest = JSON.parse(fs.readFileSync(path.join(tmp, ".git-impact", "manifest.json"), "utf-8"));
188
+ const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, "..", "..", "package.json"), "utf-8"));
189
+ (0, vitest_1.expect)(manifest.version).toBe(pkg.version);
190
+ });
191
+ (0, vitest_1.it)("writes SKILL.md to every requested editor's project-local skills root", () => {
192
+ (0, installer_1.install)({
193
+ repoRoot: tmp,
194
+ integrations: ["claude", "copilot", "cursor", "gemini", "opencode"],
195
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
196
+ silent: true,
197
+ });
198
+ const skill = (p) => path.join(tmp, p, "git-impact", "SKILL.md");
199
+ (0, vitest_1.expect)(fs.existsSync(skill(".agents/skills"))).toBe(true);
200
+ (0, vitest_1.expect)(fs.existsSync(skill(".claude/skills"))).toBe(true);
201
+ (0, vitest_1.expect)(fs.existsSync(skill(".github/skills"))).toBe(true);
202
+ (0, vitest_1.expect)(fs.existsSync(skill(".cursor/skills"))).toBe(true);
203
+ (0, vitest_1.expect)(fs.existsSync(skill(".gemini/skills"))).toBe(true);
204
+ (0, vitest_1.expect)(fs.existsSync(skill(".opencode/skills"))).toBe(true);
205
+ });
206
+ (0, vitest_1.it)("never writes the legacy per-editor instruction files", () => {
116
207
  (0, installer_1.install)({
117
208
  repoRoot: tmp,
118
209
  integrations: ["claude", "copilot", "cursor", "gemini"],
119
210
  context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
120
211
  silent: true,
121
212
  });
122
- (0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".github", "instructions", "git-impact.instructions.md"))).toBe(true);
123
- (0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".cursor", "rules", "git-impact.mdc"))).toBe(true);
124
- (0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".gemini", "commands", "git-impact.md"))).toBe(true);
213
+ (0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".github", "instructions", "git-impact.instructions.md"))).toBe(false);
214
+ (0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".cursor", "rules", "git-impact.mdc"))).toBe(false);
215
+ (0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".gemini", "commands", "git-impact.md"))).toBe(false);
216
+ });
217
+ });
218
+ (0, vitest_1.describe)("install — preserves on-disk context fields the wizard doesn't collect", () => {
219
+ (0, vitest_1.it)("keeps an existing githubToken across a re-run of init", () => {
220
+ fs.mkdirSync(path.join(tmp, ".git-impact"), { recursive: true });
221
+ fs.writeFileSync(path.join(tmp, ".git-impact", "context.json"), JSON.stringify({
222
+ companyDescription: "old",
223
+ managerPriorities: "old",
224
+ glossary: {},
225
+ githubToken: "ghp_secret_from_previous_init",
226
+ }) + "\n");
227
+ (0, installer_1.install)({
228
+ repoRoot: tmp,
229
+ integrations: ["claude"],
230
+ context: { companyDescription: "new", managerPriorities: "new", glossary: {} },
231
+ silent: true,
232
+ });
233
+ const written = JSON.parse(fs.readFileSync(path.join(tmp, ".git-impact", "context.json"), "utf-8"));
234
+ (0, vitest_1.expect)(written.githubToken).toBe("ghp_secret_from_previous_init");
235
+ (0, vitest_1.expect)(written.companyDescription).toBe("new");
236
+ (0, vitest_1.expect)(written.managerPriorities).toBe("new");
237
+ });
238
+ (0, vitest_1.it)("keeps an existing privacy block across a re-run of init", () => {
239
+ fs.mkdirSync(path.join(tmp, ".git-impact"), { recursive: true });
240
+ fs.writeFileSync(path.join(tmp, ".git-impact", "context.json"), JSON.stringify({
241
+ companyDescription: "X",
242
+ managerPriorities: "Y",
243
+ glossary: {},
244
+ privacy: { redact: false },
245
+ }) + "\n");
246
+ (0, installer_1.install)({
247
+ repoRoot: tmp,
248
+ integrations: ["claude"],
249
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
250
+ silent: true,
251
+ });
252
+ const written = JSON.parse(fs.readFileSync(path.join(tmp, ".git-impact", "context.json"), "utf-8"));
253
+ (0, vitest_1.expect)(written.privacy).toEqual({ redact: false });
254
+ });
255
+ });
256
+ (0, vitest_1.describe)("install — legacy migration", () => {
257
+ (0, vitest_1.it)("removes pre-0.7 per-editor instruction files when present", () => {
258
+ fs.mkdirSync(path.join(tmp, ".github", "instructions"), { recursive: true });
259
+ fs.mkdirSync(path.join(tmp, ".cursor", "rules"), { recursive: true });
260
+ fs.mkdirSync(path.join(tmp, ".gemini", "commands"), { recursive: true });
261
+ fs.writeFileSync(path.join(tmp, ".github", "instructions", "git-impact.instructions.md"), "legacy");
262
+ fs.writeFileSync(path.join(tmp, ".cursor", "rules", "git-impact.mdc"), "legacy");
263
+ fs.writeFileSync(path.join(tmp, ".gemini", "commands", "git-impact.md"), "legacy");
264
+ const result = (0, installer_1.install)({
265
+ repoRoot: tmp,
266
+ integrations: ["claude"],
267
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
268
+ silent: true,
269
+ });
270
+ (0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".github", "instructions", "git-impact.instructions.md"))).toBe(false);
271
+ (0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".cursor", "rules", "git-impact.mdc"))).toBe(false);
272
+ (0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".gemini", "commands", "git-impact.md"))).toBe(false);
273
+ const removed = result.filter((r) => r.action === "removed");
274
+ (0, vitest_1.expect)(removed).toHaveLength(3);
275
+ });
276
+ (0, vitest_1.it)("removes the now-empty parent dirs after migration", () => {
277
+ fs.mkdirSync(path.join(tmp, ".cursor", "rules"), { recursive: true });
278
+ fs.writeFileSync(path.join(tmp, ".cursor", "rules", "git-impact.mdc"), "legacy");
279
+ (0, installer_1.install)({
280
+ repoRoot: tmp,
281
+ integrations: ["claude"],
282
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
283
+ silent: true,
284
+ });
285
+ (0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".cursor", "rules"))).toBe(false);
286
+ });
287
+ (0, vitest_1.it)("leaves sibling files in the legacy dirs alone", () => {
288
+ fs.mkdirSync(path.join(tmp, ".github", "instructions"), { recursive: true });
289
+ fs.writeFileSync(path.join(tmp, ".github", "instructions", "git-impact.instructions.md"), "legacy");
290
+ fs.writeFileSync(path.join(tmp, ".github", "instructions", "other.md"), "keep me");
291
+ (0, installer_1.install)({
292
+ repoRoot: tmp,
293
+ integrations: ["claude"],
294
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
295
+ silent: true,
296
+ });
297
+ (0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".github", "instructions", "other.md"))).toBe(true);
298
+ });
299
+ (0, vitest_1.it)("is a no-op when no legacy files are present", () => {
300
+ const result = (0, installer_1.install)({
301
+ repoRoot: tmp,
302
+ integrations: ["claude"],
303
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
304
+ silent: true,
305
+ });
306
+ const removed = result.filter((r) => r.action === "removed");
307
+ (0, vitest_1.expect)(removed).toHaveLength(0);
308
+ });
309
+ (0, vitest_1.it)("runs migration BEFORE the install step (so legacy files can't shadow new ones)", () => {
310
+ fs.mkdirSync(path.join(tmp, ".github", "instructions"), { recursive: true });
311
+ fs.writeFileSync(path.join(tmp, ".github", "instructions", "git-impact.instructions.md"), "legacy");
312
+ const result = (0, installer_1.install)({
313
+ repoRoot: tmp,
314
+ integrations: ["claude"],
315
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
316
+ silent: true,
317
+ });
318
+ // The InstalledFile[] array preserves operation order. A `removed`
319
+ // entry must appear BEFORE any `created` entry under a SKILL.md path.
320
+ const indexOfFirstRemove = result.findIndex((r) => r.action === "removed");
321
+ const indexOfFirstCreate = result.findIndex((r) => r.action === "created" && r.path.includes("SKILL.md"));
322
+ (0, vitest_1.expect)(indexOfFirstRemove).toBeGreaterThan(-1);
323
+ (0, vitest_1.expect)(indexOfFirstCreate).toBeGreaterThan(-1);
324
+ (0, vitest_1.expect)(indexOfFirstRemove).toBeLessThan(indexOfFirstCreate);
325
+ });
326
+ });
327
+ (0, vitest_1.describe)("install — CLAUDE.md guard", () => {
328
+ (0, vitest_1.it)("writes CLAUDE.md when `claude` is in integrations", () => {
329
+ (0, installer_1.install)({
330
+ repoRoot: tmp,
331
+ integrations: ["claude"],
332
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
333
+ silent: true,
334
+ });
335
+ (0, vitest_1.expect)(fs.existsSync(path.join(tmp, "CLAUDE.md"))).toBe(true);
336
+ });
337
+ (0, vitest_1.it)("does NOT write CLAUDE.md for non-Claude integrations on a fresh repo", () => {
338
+ (0, installer_1.install)({
339
+ repoRoot: tmp,
340
+ integrations: ["cursor"],
341
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
342
+ silent: true,
343
+ });
344
+ (0, vitest_1.expect)(fs.existsSync(path.join(tmp, "CLAUDE.md"))).toBe(false);
345
+ });
346
+ (0, vitest_1.it)("DOES write CLAUDE.md for a non-claude integration when `.claude/` already exists", () => {
347
+ // A user who already has Claude Code configured (even though they're
348
+ // running init for a different editor today) should still get the
349
+ // CLAUDE.md block so Claude Code can find the skill later.
350
+ fs.mkdirSync(path.join(tmp, ".claude"));
351
+ (0, installer_1.install)({
352
+ repoRoot: tmp,
353
+ integrations: ["cursor"],
354
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
355
+ silent: true,
356
+ });
357
+ (0, vitest_1.expect)(fs.existsSync(path.join(tmp, "CLAUDE.md"))).toBe(true);
358
+ });
359
+ });
360
+ (0, vitest_1.describe)("SKILL.md frontmatter — strict-editor compatibility", () => {
361
+ (0, vitest_1.it)("description fits within OpenCode's 1024-char cap", () => {
362
+ (0, installer_1.install)({
363
+ repoRoot: tmp,
364
+ integrations: ["claude"],
365
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
366
+ silent: true,
367
+ });
368
+ const content = fs.readFileSync(path.join(tmp, ".claude", "skills", "git-impact", "SKILL.md"), "utf-8");
369
+ const m = content.match(/description:\s*>\s*\n([\s\S]+?)\n---/);
370
+ (0, vitest_1.expect)(m, "description block not found in SKILL.md frontmatter").toBeTruthy();
371
+ const desc = m[1].replace(/\s+/g, " ").trim();
372
+ // OpenCode caps description at 1024 chars per their published Agent
373
+ // Skills docs. GitHub Copilot's name regex is strict but doesn't cap
374
+ // description — OpenCode is the tightest constraint.
375
+ (0, vitest_1.expect)(desc.length).toBeLessThanOrEqual(1024);
376
+ });
377
+ (0, vitest_1.it)("name matches the strict regex used by OpenCode + GitHub Copilot", () => {
378
+ (0, installer_1.install)({
379
+ repoRoot: tmp,
380
+ integrations: ["claude"],
381
+ context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
382
+ silent: true,
383
+ });
384
+ const content = fs.readFileSync(path.join(tmp, ".claude", "skills", "git-impact", "SKILL.md"), "utf-8");
385
+ const m = content.match(/^name:\s*(\S+)/m);
386
+ (0, vitest_1.expect)(m).toBeTruthy();
387
+ // lowercase letters/digits/hyphens, ≤64 chars, no leading/trailing/
388
+ // consecutive hyphens. Anything else and Copilot silently fails to
389
+ // register the skill.
390
+ (0, vitest_1.expect)(m[1]).toMatch(/^[a-z0-9](?!.*--)[a-z0-9-]{0,62}[a-z0-9]$/);
125
391
  });
126
392
  });
127
393
  //# sourceMappingURL=installer.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"installer.test.js","sourceRoot":"","sources":["../../src/init/installer.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installer.test.js","sourceRoot":"","sources":["../../src/init/installer.test.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,16 @@
1
1
  /**
2
- * Editor-specific template content (Copilot, Cursor, Gemini).
2
+ * Static, editor-agnostic templates used by the installer.
3
3
  *
4
- * Note: the Claude Code skill is NOT embedded here — it's copied directly
5
- * from the shipped `skill/` directory at install time so SKILL.md and its
6
- * `references/` sub-files stay single-source. See `installer.ts`.
4
+ * The skill itself (SKILL.md + references/) is NOT embedded here — it's
5
+ * copied directly from the shipped `skill/` directory at install time so
6
+ * the SKILL.md, references/, and any future assets/ stay single-source.
7
+ * See `installer.ts#installSkillFolder`.
7
8
  */
8
- export declare const CLAUDE_MD_BLOCK = "\n## git-impact\n\nThis repo uses [git-impact](https://github.com/you/git-impact) for standup and\nperformance review generation.\n\n- Say **\"do my standup\"** to translate today's commits into business impact\n- Say **\"git-impact since 3d\"** to look back further\n- Say **\"generate a performance review\"** after a few weeks of standups\n- Say **\"set up context for this repo\"** to configure the glossary\n\nContext is stored in `.git-impact/context.json` (committed, team-shared).\nHistory is stored in `.git-impact/history.db` (gitignored, per-machine).\n";
9
- export declare const COPILOT_INSTRUCTIONS = "# git-impact\n\nTranslate git commits into plain-English business impact for standups,\nmanager updates, and performance review prep.\n\n## When to trigger\n\nUser says any of: \"do my standup\", \"/git-impact\", \"what did I ship today\",\n\"translate my commits\", \"since yesterday\", \"since 3d\", \"since last standup\",\n\"weekly summary\", \"performance review prep\", \"generate a review\".\n\n## Preferred path: MCP\n\nIf the `git-impact` MCP server is configured for this editor, use its tools:\n\n1. `get_last_standup_date` \u2014 find the lookback start\n2. `get_git_activity` (since_iso = day-after last standup, or start-of-today)\n3. `get_github_activity` if a github_token exists in context\n4. Translate using the rules below\n5. `save_impact_entry` with each item including `provenance`\n (`pr` | `commit_body` | `commit_message` | `ticket` | `inferred`)\n\n## Fallback path: bash\n\nIf MCP isn't available, run:\n```bash\nREPO=$(git rev-parse --show-toplevel)\ncat \"$REPO/.git-impact/context.json\" # glossary, manager priorities\ngit -C \"$REPO\" log --since=\"today 00:00:00\" --format=\"%h|%s|%b|%an|%ad\" --date=short HEAD\ngit -C \"$REPO\" diff --stat HEAD~5 HEAD\n```\n\nThen translate, then ask the user to run `git-impact view` to see the saved\nHTML report (the bash path can't write to history.db safely from this editor).\n\n## Translation rules\n\n1. **What + why**, not what + how. Never restate commit messages.\n2. **Apply the glossary** from context.json \u2014 replace technical terms with\n plain-English equivalents.\n3. **Provenance is mandatory** for every saved item:\n - `pr` \u2014 quoted from the linked PR description\n - `commit_body` \u2014 pulled from a multi-line commit body\n - `commit_message` \u2014 visible in the subject line\n - `ticket` \u2014 pulled from a linked Linear/Jira ticket\n - `inferred` \u2014 guessed without explicit text. Use this honestly.\n4. **Group related commits** into one bullet.\n5. WIP \u2192 `status: \"in_progress\"` with **expected outcome**, not progress so far.\n6. Blocked \u2192 `status: \"blocked\"`.\n7. **Be specific with numbers** \u2014 pull them from commits/PRs, never invent them.\n\n## Output\n\n```\n\uD83D\uDCC5 [Date or range]\n\u2705 [Plain-English summary]\n \u2192 [Why it matters]\n\u23F3 In progress: [What] \u2192 [Expected outcome]\n\uD83D\uDEAB Blocked: [What] \u2192 [What's needed]\n\uD83D\uDCC1 [N] files across [areas] \u00B7 [N] commit(s) on [branch]\n```\n\n## Tone\n\nNon-technical-manager audience. Short sentences. No filler. 2 accurate bullets\nbeat 5 vague ones. If you guessed the impact, label `provenance: inferred`\nand use phrasing like \"technical foundation work for X\" \u2014 never hedge with\n\"might potentially\".\n";
10
- export declare const CURSOR_RULES = "---\ndescription: git-impact \u2014 turn git commits into plain-English standup bullets\nglobs: []\nalwaysApply: false\n---\n\n# git-impact\n\n## When to trigger\n\nUser says any of: \"do my standup\", \"/git-impact\", \"what did I ship today\",\n\"translate my commits\", \"since yesterday\", \"since 3d\", \"since last standup\",\n\"weekly summary\", \"performance review prep\", \"generate a review\".\n\n## Preferred path: MCP\n\nIf the `git-impact` MCP server is configured for this editor, use its tools:\n\n1. `get_last_standup_date` \u2014 find the lookback start\n2. `get_git_activity` (since_iso = day-after last standup, or start-of-today)\n3. `get_github_activity` if a github_token exists in context\n4. Translate using the rules below\n5. `save_impact_entry` with each item including `provenance`\n (`pr` | `commit_body` | `commit_message` | `ticket` | `inferred`)\n\n## Fallback path: bash\n\nIf MCP isn't available, run:\n```bash\nREPO=$(git rev-parse --show-toplevel)\ncat \"$REPO/.git-impact/context.json\" # glossary, manager priorities\ngit -C \"$REPO\" log --since=\"today 00:00:00\" --format=\"%h|%s|%b|%an|%ad\" --date=short HEAD\ngit -C \"$REPO\" diff --stat HEAD~5 HEAD\n```\n\nThen translate, then ask the user to run `git-impact view` to see the saved\nHTML report (the bash path can't write to history.db safely from this editor).\n\n## Translation rules\n\n1. **What + why**, not what + how. Never restate commit messages.\n2. **Apply the glossary** from context.json \u2014 replace technical terms with\n plain-English equivalents.\n3. **Provenance is mandatory** for every saved item:\n - `pr` \u2014 quoted from the linked PR description\n - `commit_body` \u2014 pulled from a multi-line commit body\n - `commit_message` \u2014 visible in the subject line\n - `ticket` \u2014 pulled from a linked Linear/Jira ticket\n - `inferred` \u2014 guessed without explicit text. Use this honestly.\n4. **Group related commits** into one bullet.\n5. WIP \u2192 `status: \"in_progress\"` with **expected outcome**, not progress so far.\n6. Blocked \u2192 `status: \"blocked\"`.\n7. **Be specific with numbers** \u2014 pull them from commits/PRs, never invent them.\n\n## Output\n\n```\n\uD83D\uDCC5 [Date or range]\n\u2705 [Plain-English summary]\n \u2192 [Why it matters]\n\u23F3 In progress: [What] \u2192 [Expected outcome]\n\uD83D\uDEAB Blocked: [What] \u2192 [What's needed]\n\uD83D\uDCC1 [N] files across [areas] \u00B7 [N] commit(s) on [branch]\n```\n\n## Tone\n\nNon-technical-manager audience. Short sentences. No filler. 2 accurate bullets\nbeat 5 vague ones. If you guessed the impact, label `provenance: inferred`\nand use phrasing like \"technical foundation work for X\" \u2014 never hedge with\n\"might potentially\".\n";
11
- export declare const GEMINI_COMMAND = "# git-impact\n\nTranslate git commits into plain-English business impact.\n\n## When to trigger\n\nUser says any of: \"do my standup\", \"/git-impact\", \"what did I ship today\",\n\"translate my commits\", \"since yesterday\", \"since 3d\", \"since last standup\",\n\"weekly summary\", \"performance review prep\", \"generate a review\".\n\n## Preferred path: MCP\n\nIf the `git-impact` MCP server is configured for this editor, use its tools:\n\n1. `get_last_standup_date` \u2014 find the lookback start\n2. `get_git_activity` (since_iso = day-after last standup, or start-of-today)\n3. `get_github_activity` if a github_token exists in context\n4. Translate using the rules below\n5. `save_impact_entry` with each item including `provenance`\n (`pr` | `commit_body` | `commit_message` | `ticket` | `inferred`)\n\n## Fallback path: bash\n\nIf MCP isn't available, run:\n```bash\nREPO=$(git rev-parse --show-toplevel)\ncat \"$REPO/.git-impact/context.json\" # glossary, manager priorities\ngit -C \"$REPO\" log --since=\"today 00:00:00\" --format=\"%h|%s|%b|%an|%ad\" --date=short HEAD\ngit -C \"$REPO\" diff --stat HEAD~5 HEAD\n```\n\nThen translate, then ask the user to run `git-impact view` to see the saved\nHTML report (the bash path can't write to history.db safely from this editor).\n\n## Translation rules\n\n1. **What + why**, not what + how. Never restate commit messages.\n2. **Apply the glossary** from context.json \u2014 replace technical terms with\n plain-English equivalents.\n3. **Provenance is mandatory** for every saved item:\n - `pr` \u2014 quoted from the linked PR description\n - `commit_body` \u2014 pulled from a multi-line commit body\n - `commit_message` \u2014 visible in the subject line\n - `ticket` \u2014 pulled from a linked Linear/Jira ticket\n - `inferred` \u2014 guessed without explicit text. Use this honestly.\n4. **Group related commits** into one bullet.\n5. WIP \u2192 `status: \"in_progress\"` with **expected outcome**, not progress so far.\n6. Blocked \u2192 `status: \"blocked\"`.\n7. **Be specific with numbers** \u2014 pull them from commits/PRs, never invent them.\n\n## Output\n\n```\n\uD83D\uDCC5 [Date or range]\n\u2705 [Plain-English summary]\n \u2192 [Why it matters]\n\u23F3 In progress: [What] \u2192 [Expected outcome]\n\uD83D\uDEAB Blocked: [What] \u2192 [What's needed]\n\uD83D\uDCC1 [N] files across [areas] \u00B7 [N] commit(s) on [branch]\n```\n\n## Tone\n\nNon-technical-manager audience. Short sentences. No filler. 2 accurate bullets\nbeat 5 vague ones. If you guessed the impact, label `provenance: inferred`\nand use phrasing like \"technical foundation work for X\" \u2014 never hedge with\n\"might potentially\".\n";
12
- export declare const CONTEXT_TEMPLATE: (companyDescription: string, managerPriorities: string, glossary: Record<string, string>) => string;
9
+ export declare const CLAUDE_MD_BLOCK = "\n## git-impact\n\nThis repo uses [git-impact](https://github.com/efraimnafady/git-impact) for\nstandup and performance review generation. The skill works in any editor that\nsupports the [Agent Skills](https://agentskills.io) format \u2014 Claude Code,\nCursor, GitHub Copilot, Gemini CLI, OpenCode, and Antigravity get\nvendor-specific mirrors; Goose, Amp, Codex, Letta, Roo pick up the same skill\nfrom `.agents/skills/`.\n\n- Say **\"do my standup\"** to translate today's commits into business impact\n- Say **\"git-impact since 3d\"** to look back further\n- Say **\"generate a performance review\"** after a few weeks of standups\n- Say **\"set up context for this repo\"** to configure the glossary\n\nContext is stored in `.git-impact/context.json` (committed, team-shared).\nHistory is stored in `.git-impact/history.db` (gitignored, per-machine).\n";
10
+ /**
11
+ * Serialize the full UserContext to context.json. Pre-existing optional fields
12
+ * (githubToken, privacy, ) flow through verbatim so a re-run of `init` never
13
+ * drops state that wasn't collected by the wizard.
14
+ */
15
+ export declare const CONTEXT_TEMPLATE: (ctx: object) => string;
13
16
  //# sourceMappingURL=templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,eAAO,MAAM,eAAe,yjBAa3B,CAAC;AAyEF,eAAO,MAAM,oBAAoB,mtFAKV,CAAC;AAIxB,eAAO,MAAM,YAAY,ytFAQF,CAAC;AAIxB,eAAO,MAAM,cAAc,upFAIJ,CAAC;AAIxB,eAAO,MAAM,gBAAgB,GAC3B,oBAAoB,MAAM,EAC1B,mBAAmB,MAAM,EACzB,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC/B,MAKO,CAAC"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,eAAO,MAAM,eAAe,g2BAiB3B,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,MACV,CAAC"}
@@ -1,19 +1,24 @@
1
1
  "use strict";
2
2
  /**
3
- * Editor-specific template content (Copilot, Cursor, Gemini).
3
+ * Static, editor-agnostic templates used by the installer.
4
4
  *
5
- * Note: the Claude Code skill is NOT embedded here — it's copied directly
6
- * from the shipped `skill/` directory at install time so SKILL.md and its
7
- * `references/` sub-files stay single-source. See `installer.ts`.
5
+ * The skill itself (SKILL.md + references/) is NOT embedded here — it's
6
+ * copied directly from the shipped `skill/` directory at install time so
7
+ * the SKILL.md, references/, and any future assets/ stay single-source.
8
+ * See `installer.ts#installSkillFolder`.
8
9
  */
9
10
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.CONTEXT_TEMPLATE = exports.GEMINI_COMMAND = exports.CURSOR_RULES = exports.COPILOT_INSTRUCTIONS = exports.CLAUDE_MD_BLOCK = void 0;
11
+ exports.CONTEXT_TEMPLATE = exports.CLAUDE_MD_BLOCK = void 0;
11
12
  // ─── CLAUDE.md managed block ──────────────────────────────────────────────────
12
13
  exports.CLAUDE_MD_BLOCK = `
13
14
  ## git-impact
14
15
 
15
- This repo uses [git-impact](https://github.com/you/git-impact) for standup and
16
- performance review generation.
16
+ This repo uses [git-impact](https://github.com/efraimnafady/git-impact) for
17
+ standup and performance review generation. The skill works in any editor that
18
+ supports the [Agent Skills](https://agentskills.io) format — Claude Code,
19
+ Cursor, GitHub Copilot, Gemini CLI, OpenCode, and Antigravity get
20
+ vendor-specific mirrors; Goose, Amp, Codex, Letta, Roo pick up the same skill
21
+ from \`.agents/skills/\`.
17
22
 
18
23
  - Say **"do my standup"** to translate today's commits into business impact
19
24
  - Say **"git-impact since 3d"** to look back further
@@ -23,98 +28,12 @@ performance review generation.
23
28
  Context is stored in \`.git-impact/context.json\` (committed, team-shared).
24
29
  History is stored in \`.git-impact/history.db\` (gitignored, per-machine).
25
30
  `;
26
- // Shared instruction body used by Copilot, Cursor, Gemini.
27
- // These editors don't auto-execute MCP tools the way Claude Code does, so
28
- // the instructions here describe the bash fallback path. If the editor
29
- // supports MCP, prefer the git-impact MCP server's tools over bash.
30
- const SHARED_INSTRUCTIONS = `## When to trigger
31
-
32
- User says any of: "do my standup", "/git-impact", "what did I ship today",
33
- "translate my commits", "since yesterday", "since 3d", "since last standup",
34
- "weekly summary", "performance review prep", "generate a review".
35
-
36
- ## Preferred path: MCP
37
-
38
- If the \`git-impact\` MCP server is configured for this editor, use its tools:
39
-
40
- 1. \`get_last_standup_date\` — find the lookback start
41
- 2. \`get_git_activity\` (since_iso = day-after last standup, or start-of-today)
42
- 3. \`get_github_activity\` if a github_token exists in context
43
- 4. Translate using the rules below
44
- 5. \`save_impact_entry\` with each item including \`provenance\`
45
- (\`pr\` | \`commit_body\` | \`commit_message\` | \`ticket\` | \`inferred\`)
46
-
47
- ## Fallback path: bash
48
-
49
- If MCP isn't available, run:
50
- \`\`\`bash
51
- REPO=$(git rev-parse --show-toplevel)
52
- cat "$REPO/.git-impact/context.json" # glossary, manager priorities
53
- git -C "$REPO" log --since="today 00:00:00" --format="%h|%s|%b|%an|%ad" --date=short HEAD
54
- git -C "$REPO" diff --stat HEAD~5 HEAD
55
- \`\`\`
56
-
57
- Then translate, then ask the user to run \`git-impact view\` to see the saved
58
- HTML report (the bash path can't write to history.db safely from this editor).
59
-
60
- ## Translation rules
61
-
62
- 1. **What + why**, not what + how. Never restate commit messages.
63
- 2. **Apply the glossary** from context.json — replace technical terms with
64
- plain-English equivalents.
65
- 3. **Provenance is mandatory** for every saved item:
66
- - \`pr\` — quoted from the linked PR description
67
- - \`commit_body\` — pulled from a multi-line commit body
68
- - \`commit_message\` — visible in the subject line
69
- - \`ticket\` — pulled from a linked Linear/Jira ticket
70
- - \`inferred\` — guessed without explicit text. Use this honestly.
71
- 4. **Group related commits** into one bullet.
72
- 5. WIP → \`status: "in_progress"\` with **expected outcome**, not progress so far.
73
- 6. Blocked → \`status: "blocked"\`.
74
- 7. **Be specific with numbers** — pull them from commits/PRs, never invent them.
75
-
76
- ## Output
77
-
78
- \`\`\`
79
- 📅 [Date or range]
80
- ✅ [Plain-English summary]
81
- → [Why it matters]
82
- ⏳ In progress: [What] → [Expected outcome]
83
- 🚫 Blocked: [What] → [What's needed]
84
- 📁 [N] files across [areas] · [N] commit(s) on [branch]
85
- \`\`\`
86
-
87
- ## Tone
88
-
89
- Non-technical-manager audience. Short sentences. No filler. 2 accurate bullets
90
- beat 5 vague ones. If you guessed the impact, label \`provenance: inferred\`
91
- and use phrasing like "technical foundation work for X" — never hedge with
92
- "might potentially".
93
- `;
94
- // ─── GitHub Copilot instructions ──────────────────────────────────────────────
95
- exports.COPILOT_INSTRUCTIONS = `# git-impact
96
-
97
- Translate git commits into plain-English business impact for standups,
98
- manager updates, and performance review prep.
99
-
100
- ${SHARED_INSTRUCTIONS}`;
101
- // ─── Cursor rules ─────────────────────────────────────────────────────────────
102
- exports.CURSOR_RULES = `---
103
- description: git-impact — turn git commits into plain-English standup bullets
104
- globs: []
105
- alwaysApply: false
106
- ---
107
-
108
- # git-impact
109
-
110
- ${SHARED_INSTRUCTIONS}`;
111
- // ─── Gemini CLI commands ──────────────────────────────────────────────────────
112
- exports.GEMINI_COMMAND = `# git-impact
113
-
114
- Translate git commits into plain-English business impact.
115
-
116
- ${SHARED_INSTRUCTIONS}`;
117
31
  // ─── context.json template ────────────────────────────────────────────────────
118
- const CONTEXT_TEMPLATE = (companyDescription, managerPriorities, glossary) => JSON.stringify({ companyDescription, managerPriorities, glossary }, null, 2) + "\n";
32
+ /**
33
+ * Serialize the full UserContext to context.json. Pre-existing optional fields
34
+ * (githubToken, privacy, …) flow through verbatim so a re-run of `init` never
35
+ * drops state that wasn't collected by the wizard.
36
+ */
37
+ const CONTEXT_TEMPLATE = (ctx) => JSON.stringify(ctx, null, 2) + "\n";
119
38
  exports.CONTEXT_TEMPLATE = CONTEXT_TEMPLATE;
120
39
  //# sourceMappingURL=templates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,iFAAiF;AAEpE,QAAA,eAAe,GAAG;;;;;;;;;;;;;CAa9B,CAAC;AAEF,2DAA2D;AAC3D,0EAA0E;AAC1E,uEAAuE;AACvE,oEAAoE;AACpE,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+D3B,CAAC;AAEF,iFAAiF;AAEpE,QAAA,oBAAoB,GAAG;;;;;EAKlC,mBAAmB,EAAE,CAAC;AAExB,iFAAiF;AAEpE,QAAA,YAAY,GAAG;;;;;;;;EAQ1B,mBAAmB,EAAE,CAAC;AAExB,iFAAiF;AAEpE,QAAA,cAAc,GAAG;;;;EAI5B,mBAAmB,EAAE,CAAC;AAExB,iFAAiF;AAE1E,MAAM,gBAAgB,GAAG,CAC9B,kBAA0B,EAC1B,iBAAyB,EACzB,QAAgC,EACxB,EAAE,CACV,IAAI,CAAC,SAAS,CACZ,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EACnD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CAAC;AATE,QAAA,gBAAgB,oBASlB"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,iFAAiF;AAEpE,QAAA,eAAe,GAAG;;;;;;;;;;;;;;;;;CAiB9B,CAAC;AAEF,iFAAiF;AAEjF;;;;GAIG;AACI,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAU,EAAE,CACtD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AADzB,QAAA,gBAAgB,oBACS"}