git-impact 0.6.6 → 0.7.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.
- package/README.md +32 -24
- package/dist/cli/index.js +7 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/init/installer.d.ts +29 -5
- package/dist/init/installer.d.ts.map +1 -1
- package/dist/init/installer.js +110 -65
- package/dist/init/installer.js.map +1 -1
- package/dist/init/installer.test.js +183 -13
- package/dist/init/installer.test.js.map +1 -1
- package/dist/init/templates.d.ts +6 -8
- package/dist/init/templates.d.ts.map +1 -1
- package/dist/init/templates.js +12 -98
- package/dist/init/templates.js.map +1 -1
- package/package.json +1 -1
- package/skill/SKILL.md +23 -209
- package/skill/references/mode-init.md +16 -0
- package/skill/references/mode-review.md +40 -0
- package/skill/references/mode-standup.md +122 -0
|
@@ -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
|
|
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
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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("
|
|
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,168 @@ 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
|
|
133
|
+
(0, vitest_1.it)("writes SKILL.md to every requested editor's project-local skills root", () => {
|
|
134
|
+
(0, installer_1.install)({
|
|
135
|
+
repoRoot: tmp,
|
|
136
|
+
integrations: ["claude", "copilot", "cursor", "gemini", "opencode"],
|
|
137
|
+
context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
|
|
138
|
+
silent: true,
|
|
139
|
+
});
|
|
140
|
+
const skill = (p) => path.join(tmp, p, "git-impact", "SKILL.md");
|
|
141
|
+
(0, vitest_1.expect)(fs.existsSync(skill(".agents/skills"))).toBe(true);
|
|
142
|
+
(0, vitest_1.expect)(fs.existsSync(skill(".claude/skills"))).toBe(true);
|
|
143
|
+
(0, vitest_1.expect)(fs.existsSync(skill(".github/skills"))).toBe(true);
|
|
144
|
+
(0, vitest_1.expect)(fs.existsSync(skill(".cursor/skills"))).toBe(true);
|
|
145
|
+
(0, vitest_1.expect)(fs.existsSync(skill(".gemini/skills"))).toBe(true);
|
|
146
|
+
(0, vitest_1.expect)(fs.existsSync(skill(".opencode/skills"))).toBe(true);
|
|
147
|
+
});
|
|
148
|
+
(0, vitest_1.it)("never writes the legacy per-editor instruction files", () => {
|
|
116
149
|
(0, installer_1.install)({
|
|
117
150
|
repoRoot: tmp,
|
|
118
151
|
integrations: ["claude", "copilot", "cursor", "gemini"],
|
|
119
152
|
context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
|
|
120
153
|
silent: true,
|
|
121
154
|
});
|
|
122
|
-
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".github", "instructions", "git-impact.instructions.md"))).toBe(
|
|
123
|
-
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".cursor", "rules", "git-impact.mdc"))).toBe(
|
|
124
|
-
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".gemini", "commands", "git-impact.md"))).toBe(
|
|
155
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".github", "instructions", "git-impact.instructions.md"))).toBe(false);
|
|
156
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".cursor", "rules", "git-impact.mdc"))).toBe(false);
|
|
157
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".gemini", "commands", "git-impact.md"))).toBe(false);
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
(0, vitest_1.describe)("install — legacy migration", () => {
|
|
161
|
+
(0, vitest_1.it)("removes pre-0.7 per-editor instruction files when present", () => {
|
|
162
|
+
fs.mkdirSync(path.join(tmp, ".github", "instructions"), { recursive: true });
|
|
163
|
+
fs.mkdirSync(path.join(tmp, ".cursor", "rules"), { recursive: true });
|
|
164
|
+
fs.mkdirSync(path.join(tmp, ".gemini", "commands"), { recursive: true });
|
|
165
|
+
fs.writeFileSync(path.join(tmp, ".github", "instructions", "git-impact.instructions.md"), "legacy");
|
|
166
|
+
fs.writeFileSync(path.join(tmp, ".cursor", "rules", "git-impact.mdc"), "legacy");
|
|
167
|
+
fs.writeFileSync(path.join(tmp, ".gemini", "commands", "git-impact.md"), "legacy");
|
|
168
|
+
const result = (0, installer_1.install)({
|
|
169
|
+
repoRoot: tmp,
|
|
170
|
+
integrations: ["claude"],
|
|
171
|
+
context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
|
|
172
|
+
silent: true,
|
|
173
|
+
});
|
|
174
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".github", "instructions", "git-impact.instructions.md"))).toBe(false);
|
|
175
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".cursor", "rules", "git-impact.mdc"))).toBe(false);
|
|
176
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".gemini", "commands", "git-impact.md"))).toBe(false);
|
|
177
|
+
const removed = result.filter((r) => r.action === "removed");
|
|
178
|
+
(0, vitest_1.expect)(removed).toHaveLength(3);
|
|
179
|
+
});
|
|
180
|
+
(0, vitest_1.it)("removes the now-empty parent dirs after migration", () => {
|
|
181
|
+
fs.mkdirSync(path.join(tmp, ".cursor", "rules"), { recursive: true });
|
|
182
|
+
fs.writeFileSync(path.join(tmp, ".cursor", "rules", "git-impact.mdc"), "legacy");
|
|
183
|
+
(0, installer_1.install)({
|
|
184
|
+
repoRoot: tmp,
|
|
185
|
+
integrations: ["claude"],
|
|
186
|
+
context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
|
|
187
|
+
silent: true,
|
|
188
|
+
});
|
|
189
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".cursor", "rules"))).toBe(false);
|
|
190
|
+
});
|
|
191
|
+
(0, vitest_1.it)("leaves sibling files in the legacy dirs alone", () => {
|
|
192
|
+
fs.mkdirSync(path.join(tmp, ".github", "instructions"), { recursive: true });
|
|
193
|
+
fs.writeFileSync(path.join(tmp, ".github", "instructions", "git-impact.instructions.md"), "legacy");
|
|
194
|
+
fs.writeFileSync(path.join(tmp, ".github", "instructions", "other.md"), "keep me");
|
|
195
|
+
(0, installer_1.install)({
|
|
196
|
+
repoRoot: tmp,
|
|
197
|
+
integrations: ["claude"],
|
|
198
|
+
context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
|
|
199
|
+
silent: true,
|
|
200
|
+
});
|
|
201
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, ".github", "instructions", "other.md"))).toBe(true);
|
|
202
|
+
});
|
|
203
|
+
(0, vitest_1.it)("is a no-op when no legacy files are present", () => {
|
|
204
|
+
const result = (0, installer_1.install)({
|
|
205
|
+
repoRoot: tmp,
|
|
206
|
+
integrations: ["claude"],
|
|
207
|
+
context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
|
|
208
|
+
silent: true,
|
|
209
|
+
});
|
|
210
|
+
const removed = result.filter((r) => r.action === "removed");
|
|
211
|
+
(0, vitest_1.expect)(removed).toHaveLength(0);
|
|
212
|
+
});
|
|
213
|
+
(0, vitest_1.it)("runs migration BEFORE the install step (so legacy files can't shadow new ones)", () => {
|
|
214
|
+
fs.mkdirSync(path.join(tmp, ".github", "instructions"), { recursive: true });
|
|
215
|
+
fs.writeFileSync(path.join(tmp, ".github", "instructions", "git-impact.instructions.md"), "legacy");
|
|
216
|
+
const result = (0, installer_1.install)({
|
|
217
|
+
repoRoot: tmp,
|
|
218
|
+
integrations: ["claude"],
|
|
219
|
+
context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
|
|
220
|
+
silent: true,
|
|
221
|
+
});
|
|
222
|
+
// The InstalledFile[] array preserves operation order. A `removed`
|
|
223
|
+
// entry must appear BEFORE any `created` entry under a SKILL.md path.
|
|
224
|
+
const indexOfFirstRemove = result.findIndex((r) => r.action === "removed");
|
|
225
|
+
const indexOfFirstCreate = result.findIndex((r) => r.action === "created" && r.path.includes("SKILL.md"));
|
|
226
|
+
(0, vitest_1.expect)(indexOfFirstRemove).toBeGreaterThan(-1);
|
|
227
|
+
(0, vitest_1.expect)(indexOfFirstCreate).toBeGreaterThan(-1);
|
|
228
|
+
(0, vitest_1.expect)(indexOfFirstRemove).toBeLessThan(indexOfFirstCreate);
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
(0, vitest_1.describe)("install — CLAUDE.md guard", () => {
|
|
232
|
+
(0, vitest_1.it)("writes CLAUDE.md when `claude` is in integrations", () => {
|
|
233
|
+
(0, installer_1.install)({
|
|
234
|
+
repoRoot: tmp,
|
|
235
|
+
integrations: ["claude"],
|
|
236
|
+
context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
|
|
237
|
+
silent: true,
|
|
238
|
+
});
|
|
239
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, "CLAUDE.md"))).toBe(true);
|
|
240
|
+
});
|
|
241
|
+
(0, vitest_1.it)("does NOT write CLAUDE.md for non-Claude integrations on a fresh repo", () => {
|
|
242
|
+
(0, installer_1.install)({
|
|
243
|
+
repoRoot: tmp,
|
|
244
|
+
integrations: ["cursor"],
|
|
245
|
+
context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
|
|
246
|
+
silent: true,
|
|
247
|
+
});
|
|
248
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, "CLAUDE.md"))).toBe(false);
|
|
249
|
+
});
|
|
250
|
+
(0, vitest_1.it)("DOES write CLAUDE.md for a non-claude integration when `.claude/` already exists", () => {
|
|
251
|
+
// A user who already has Claude Code configured (even though they're
|
|
252
|
+
// running init for a different editor today) should still get the
|
|
253
|
+
// CLAUDE.md block so Claude Code can find the skill later.
|
|
254
|
+
fs.mkdirSync(path.join(tmp, ".claude"));
|
|
255
|
+
(0, installer_1.install)({
|
|
256
|
+
repoRoot: tmp,
|
|
257
|
+
integrations: ["cursor"],
|
|
258
|
+
context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
|
|
259
|
+
silent: true,
|
|
260
|
+
});
|
|
261
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmp, "CLAUDE.md"))).toBe(true);
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
(0, vitest_1.describe)("SKILL.md frontmatter — strict-editor compatibility", () => {
|
|
265
|
+
(0, vitest_1.it)("description fits within OpenCode's 1024-char cap", () => {
|
|
266
|
+
(0, installer_1.install)({
|
|
267
|
+
repoRoot: tmp,
|
|
268
|
+
integrations: ["claude"],
|
|
269
|
+
context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
|
|
270
|
+
silent: true,
|
|
271
|
+
});
|
|
272
|
+
const content = fs.readFileSync(path.join(tmp, ".claude", "skills", "git-impact", "SKILL.md"), "utf-8");
|
|
273
|
+
const m = content.match(/description:\s*>\s*\n([\s\S]+?)\n---/);
|
|
274
|
+
(0, vitest_1.expect)(m, "description block not found in SKILL.md frontmatter").toBeTruthy();
|
|
275
|
+
const desc = m[1].replace(/\s+/g, " ").trim();
|
|
276
|
+
// OpenCode caps description at 1024 chars per their published Agent
|
|
277
|
+
// Skills docs. GitHub Copilot's name regex is strict but doesn't cap
|
|
278
|
+
// description — OpenCode is the tightest constraint.
|
|
279
|
+
(0, vitest_1.expect)(desc.length).toBeLessThanOrEqual(1024);
|
|
280
|
+
});
|
|
281
|
+
(0, vitest_1.it)("name matches the strict regex used by OpenCode + GitHub Copilot", () => {
|
|
282
|
+
(0, installer_1.install)({
|
|
283
|
+
repoRoot: tmp,
|
|
284
|
+
integrations: ["claude"],
|
|
285
|
+
context: { companyDescription: "X", managerPriorities: "Y", glossary: {} },
|
|
286
|
+
silent: true,
|
|
287
|
+
});
|
|
288
|
+
const content = fs.readFileSync(path.join(tmp, ".claude", "skills", "git-impact", "SKILL.md"), "utf-8");
|
|
289
|
+
const m = content.match(/^name:\s*(\S+)/m);
|
|
290
|
+
(0, vitest_1.expect)(m).toBeTruthy();
|
|
291
|
+
// lowercase letters/digits/hyphens, ≤64 chars, no leading/trailing/
|
|
292
|
+
// consecutive hyphens. Anything else and Copilot silently fails to
|
|
293
|
+
// register the skill.
|
|
294
|
+
(0, vitest_1.expect)(m[1]).toMatch(/^[a-z0-9](?!.*--)[a-z0-9-]{0,62}[a-z0-9]$/);
|
|
125
295
|
});
|
|
126
296
|
});
|
|
127
297
|
//# 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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"}
|
package/dist/init/templates.d.ts
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Static, editor-agnostic templates used by the installer.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* from the shipped `skill/` directory at install time so
|
|
6
|
-
*
|
|
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/
|
|
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";
|
|
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";
|
|
12
10
|
export declare const CONTEXT_TEMPLATE: (companyDescription: string, managerPriorities: string, glossary: Record<string, string>) => string;
|
|
13
11
|
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,eAAO,MAAM,eAAe,g2BAiB3B,CAAC;AAIF,eAAO,MAAM,gBAAgB,GAC3B,oBAAoB,MAAM,EAC1B,mBAAmB,MAAM,EACzB,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC/B,MAKO,CAAC"}
|
package/dist/init/templates.js
CHANGED
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Static, editor-agnostic templates used by the installer.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* from the shipped `skill/` directory at install time so
|
|
7
|
-
*
|
|
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.
|
|
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/
|
|
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,97 +28,6 @@ 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
32
|
const CONTEXT_TEMPLATE = (companyDescription, managerPriorities, glossary) => JSON.stringify({ companyDescription, managerPriorities, glossary }, null, 2) + "\n";
|
|
119
33
|
exports.CONTEXT_TEMPLATE = CONTEXT_TEMPLATE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":";AAAA
|
|
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;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"}
|
package/package.json
CHANGED