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.
- package/README.md +32 -24
- package/dist/cli/index.js +9 -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 +150 -75
- package/dist/init/installer.js.map +1 -1
- package/dist/init/installer.test.js +279 -13
- package/dist/init/installer.test.js.map +1 -1
- package/dist/init/templates.d.ts +12 -9
- package/dist/init/templates.d.ts.map +1 -1
- package/dist/init/templates.js +18 -99
- package/dist/init/templates.js.map +1 -1
- package/dist/mcp/server.js +38 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/storage/db.d.ts.map +1 -1
- package/dist/storage/db.js +0 -14
- package/dist/storage/db.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
package/README.md
CHANGED
|
@@ -52,7 +52,8 @@ The wizard auto-detects which AI editors you already use and installs for them.
|
|
|
52
52
|
>
|
|
53
53
|
|
|
54
54
|
Which AI editors should I install for? (comma-separated, or "all")
|
|
55
|
-
Options: claude, copilot, cursor, gemini
|
|
55
|
+
Options: claude, copilot, cursor, gemini, opencode
|
|
56
|
+
(.agents/skills/ is always written — covers Goose, Amp, Codex, Letta, Roo)
|
|
56
57
|
Detected in this repo: claude, cursor
|
|
57
58
|
[press Enter to use detected]
|
|
58
59
|
>
|
|
@@ -66,10 +67,12 @@ Then it creates everything and tells you what it did:
|
|
|
66
67
|
|
|
67
68
|
✅ .git-impact/context.json
|
|
68
69
|
✅ .gitignore
|
|
70
|
+
✅ .agents/skills/git-impact/SKILL.md ← cross-vendor baseline
|
|
71
|
+
✅ .agents/skills/git-impact/references/...
|
|
69
72
|
✅ .claude/skills/git-impact/SKILL.md
|
|
70
|
-
✅ .claude/skills/git-impact/references
|
|
71
|
-
✅ .
|
|
72
|
-
✅ .cursor/
|
|
73
|
+
✅ .claude/skills/git-impact/references/...
|
|
74
|
+
✅ .cursor/skills/git-impact/SKILL.md
|
|
75
|
+
✅ .cursor/skills/git-impact/references/...
|
|
73
76
|
✅ CLAUDE.md
|
|
74
77
|
✅ .git-impact/manifest.json
|
|
75
78
|
|
|
@@ -94,13 +97,13 @@ Once installed, just talk to your AI editor naturally:
|
|
|
94
97
|
| `make a presentation for today` | Adds a bespoke shareable HTML page (opt-in) |
|
|
95
98
|
| `set up context for this repo` | Re-runs the init questions inline |
|
|
96
99
|
|
|
97
|
-
Works in **Claude Code**, **GitHub Copilot**, **
|
|
100
|
+
Works in any editor that supports the [Agent Skills](https://agentskills.io) format. Five editors get a vendor-specific mirror (**Claude Code**, **Cursor**, **GitHub Copilot** + VS Code, **Gemini CLI**, **OpenCode**). Every other Agent Skills adopter — **Goose**, **Amp**, **OpenAI Codex**, **Letta**, **Roo Code**, and future ones — picks up the same skill from the cross-vendor `.agents/skills/` baseline that's always written. One canonical `SKILL.md` folder, mirrored where each vendor's docs say it needs to live.
|
|
98
101
|
|
|
99
102
|
---
|
|
100
103
|
|
|
101
104
|
## How it works
|
|
102
105
|
|
|
103
|
-
git-impact ships two things:
|
|
106
|
+
git-impact ships two things: an [Agent Skills](https://agentskills.io)–compatible **skill** that handles the prompting (Claude Code, Cursor, Copilot, Gemini CLI, OpenCode get a vendor-specific mirror; Goose, Amp, Codex, Letta, Roo pick up the `.agents/skills/` baseline), and an **MCP server** that exposes typed data tools (git activity, history, context). The skill calls the MCP tools — no `sqlite3` shelling, no hand-rolled SQL.
|
|
104
107
|
|
|
105
108
|
```
|
|
106
109
|
your commits → MCP get_git_activity → privacy redaction → AI translation
|
|
@@ -123,21 +126,21 @@ History is saved locally to `.git-impact/history.db` (SQLite, gitignored) so rev
|
|
|
123
126
|
|
|
124
127
|
```
|
|
125
128
|
your-project/
|
|
126
|
-
├── .
|
|
127
|
-
│ └── skills/git-impact/
|
|
128
|
-
│ ├── SKILL.md # Workflow (orchestrates MCP tools)
|
|
129
|
-
│ └── references/
|
|
130
|
-
│ ├──
|
|
131
|
-
│
|
|
132
|
-
├── .
|
|
133
|
-
│
|
|
134
|
-
│
|
|
135
|
-
├── .
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
├── .gemini/
|
|
139
|
-
|
|
140
|
-
│
|
|
129
|
+
├── .agents/
|
|
130
|
+
│ └── skills/git-impact/ # Cross-vendor Agent Skills baseline
|
|
131
|
+
│ ├── SKILL.md # Workflow router (orchestrates MCP tools)
|
|
132
|
+
│ └── references/ # Loaded on demand (progressive disclosure)
|
|
133
|
+
│ ├── mode-standup.md
|
|
134
|
+
│ ├── mode-review.md
|
|
135
|
+
│ ├── mode-init.md
|
|
136
|
+
│ ├── translation-rules.md
|
|
137
|
+
│ └── html-template.md
|
|
138
|
+
├── .claude/skills/git-impact/ # Same skill folder, mirrored for Claude Code
|
|
139
|
+
├── .cursor/skills/git-impact/ # …mirrored for Cursor
|
|
140
|
+
├── .github/skills/git-impact/ # …mirrored for GitHub Copilot + VS Code
|
|
141
|
+
├── .gemini/skills/git-impact/ # …mirrored for Gemini CLI
|
|
142
|
+
├── .opencode/skills/git-impact/ # …mirrored for OpenCode
|
|
143
|
+
│ (Goose, Amp, Codex, Letta, Roo — read from .agents/skills/ above, no mirror)
|
|
141
144
|
├── .git-impact/
|
|
142
145
|
│ ├── context.json # Team glossary ← commit this
|
|
143
146
|
│ ├── manifest.json # Install record ← commit this
|
|
@@ -308,7 +311,7 @@ src/
|
|
|
308
311
|
├── init/
|
|
309
312
|
│ ├── installer.ts # install() + runInitWizard() + detectEditors()
|
|
310
313
|
│ ├── installer.test.ts
|
|
311
|
-
│ └── templates.ts #
|
|
314
|
+
│ └── templates.ts # CLAUDE.md block + context.json template
|
|
312
315
|
├── readers/
|
|
313
316
|
│ ├── git.ts # reads git log, diffs, file changes
|
|
314
317
|
│ ├── github.ts # reads PRs via GitHub API (optional)
|
|
@@ -329,8 +332,11 @@ src/
|
|
|
329
332
|
└── cli/
|
|
330
333
|
└── index.ts # init + view commands
|
|
331
334
|
skill/
|
|
332
|
-
├── SKILL.md #
|
|
333
|
-
└── references/
|
|
335
|
+
├── SKILL.md # ~60-line router (picks a mode, points at references/)
|
|
336
|
+
└── references/ # loaded on demand (Agent Skills progressive disclosure)
|
|
337
|
+
├── mode-standup.md # default mode — translate commits → bullets
|
|
338
|
+
├── mode-review.md # synthesise history → performance review prep
|
|
339
|
+
├── mode-init.md # interactive context.json setup
|
|
334
340
|
├── translation-rules.md
|
|
335
341
|
└── html-template.md
|
|
336
342
|
```
|
|
@@ -347,6 +353,8 @@ Shipped:
|
|
|
347
353
|
- [x] Editor auto-detection in init
|
|
348
354
|
- [x] Test baseline (Vitest, 40 tests)
|
|
349
355
|
- [x] Multi-editor: Claude Code, Copilot, Cursor, Gemini CLI
|
|
356
|
+
- [x] Canonical SKILL.md format ([Agent Skills](https://agentskills.io)) — vendor mirrors for OpenCode; `.agents/` baseline picked up by Goose, Amp, Codex, Letta, Roo
|
|
357
|
+
- [x] Auto-migration from pre-0.7 per-editor instruction files
|
|
350
358
|
|
|
351
359
|
Next:
|
|
352
360
|
- [ ] **PR description writer** — `git-impact-pr` skill produces ready-to-paste PR bodies
|
package/dist/cli/index.js
CHANGED
|
@@ -41,11 +41,13 @@ const db_1 = require("../storage/db");
|
|
|
41
41
|
const repo_1 = require("../mcp/repo");
|
|
42
42
|
const installer_1 = require("../init/installer");
|
|
43
43
|
const render_1 = require("../report/render");
|
|
44
|
+
// __dirname is dist/cli/ at runtime → ../../package.json is the package root.
|
|
45
|
+
const { version: PKG_VERSION } = require(path.resolve(__dirname, "..", "..", "package.json"));
|
|
44
46
|
const program = new commander_1.Command();
|
|
45
47
|
program
|
|
46
48
|
.name("git-impact")
|
|
47
49
|
.description("Install git-impact into a repo. Translation runs inside your AI editor (Claude Code skill / MCP) — no API key.")
|
|
48
|
-
.version(
|
|
50
|
+
.version(PKG_VERSION);
|
|
49
51
|
// ─── init ─────────────────────────────────────────────────────────────────────
|
|
50
52
|
program
|
|
51
53
|
.command("init")
|
|
@@ -65,7 +67,10 @@ program
|
|
|
65
67
|
console.log(` git-impact installed\n`);
|
|
66
68
|
for (const f of installed) {
|
|
67
69
|
const rel = path.relative(repoRoot, f.path);
|
|
68
|
-
const icon = f.action === "created" ? "✅" :
|
|
70
|
+
const icon = f.action === "created" ? "✅" :
|
|
71
|
+
f.action === "updated" ? "🔄" :
|
|
72
|
+
f.action === "removed" ? "🗑️ " :
|
|
73
|
+
"⏭️ ";
|
|
69
74
|
console.log(` ${icon} ${rel}`);
|
|
70
75
|
}
|
|
71
76
|
// Editor-aware next-step hint based on what we actually installed.
|
|
@@ -73,7 +78,8 @@ program
|
|
|
73
78
|
integrations.includes("gemini") ? `In Gemini CLI: run "/git-impact" (or say "do my standup")` :
|
|
74
79
|
integrations.includes("cursor") ? `In Cursor chat: paste "@git-impact do my standup"` :
|
|
75
80
|
integrations.includes("copilot") ? `In Copilot Chat: open this repo and say "do my standup"` :
|
|
76
|
-
|
|
81
|
+
integrations.includes("opencode") ? `In OpenCode: open this repo and say "do my standup"` :
|
|
82
|
+
`Open this repo in your AI editor and say "do my standup"`;
|
|
77
83
|
console.log(`\n Next steps:`);
|
|
78
84
|
console.log(` 1. git add .git-impact/context.json && git commit -m "chore: add git-impact"`);
|
|
79
85
|
console.log(` 2. ${trigger}`);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yCAAoC;AACpC,2CAA6B;AAC7B,iDAAmC;AACnC,sCAAsE;AACtE,sCAA8C;AAC9C,iDAA2D;AAC3D,6CAAgD;AAEhD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,gHAAgH,CAAC;KAC7H,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/init/installer.d.ts
CHANGED
|
@@ -1,10 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Editors with verified Agent Skills install paths (per each vendor's
|
|
3
|
+
* published docs as of 2026-05). Adding a new editor here is a one-line
|
|
4
|
+
* change in EDITOR_PATHS below.
|
|
5
|
+
*
|
|
6
|
+
* Goose, Amp, OpenAI Codex, and Letta are NOT listed here because their
|
|
7
|
+
* docs point at the cross-vendor `.agents/skills/` baseline as the
|
|
8
|
+
* recommended project-local path — they're covered by the always-on
|
|
9
|
+
* baseline install, no vendor-specific mirror needed.
|
|
10
|
+
*
|
|
11
|
+
* Kiro, Roo, and Factory have vendor-specific dirs (`.kiro/`, `.roo/`,
|
|
12
|
+
* `.factory/`) that were not personally verified by the author. They
|
|
13
|
+
* may be added in a follow-up once each has been confirmed with a live
|
|
14
|
+
* install in the target editor.
|
|
15
|
+
*/
|
|
16
|
+
export type Integration = "claude" | "copilot" | "cursor" | "gemini" | "opencode" | "antigravity";
|
|
1
17
|
export interface InstallOptions {
|
|
2
18
|
repoRoot: string;
|
|
3
19
|
integrations: Integration[];
|
|
4
20
|
context: RepoContext;
|
|
5
21
|
silent?: boolean;
|
|
6
22
|
}
|
|
7
|
-
export type Integration = "claude" | "copilot" | "cursor" | "gemini";
|
|
8
23
|
export interface RepoContext {
|
|
9
24
|
companyDescription: string;
|
|
10
25
|
managerPriorities: string;
|
|
@@ -12,18 +27,27 @@ export interface RepoContext {
|
|
|
12
27
|
}
|
|
13
28
|
export interface InstalledFile {
|
|
14
29
|
path: string;
|
|
15
|
-
action: "created" | "updated" | "skipped";
|
|
30
|
+
action: "created" | "updated" | "skipped" | "removed";
|
|
16
31
|
}
|
|
17
32
|
/**
|
|
18
33
|
* Core install function — idempotent, safe to run multiple times.
|
|
19
|
-
*
|
|
20
|
-
*
|
|
34
|
+
*
|
|
35
|
+
* Behaviour:
|
|
36
|
+
* 1. Migrate away from pre-0.7 layout (deletes editor-specific instruction
|
|
37
|
+
* files that have been superseded by the canonical SKILL.md folder).
|
|
38
|
+
* 2. Always write `.agents/skills/git-impact/` (cross-vendor standard).
|
|
39
|
+
* 3. Mirror the same SKILL.md folder into each requested editor's path.
|
|
40
|
+
* 4. Touch context.json, .gitignore, CLAUDE.md, manifest.json.
|
|
21
41
|
*/
|
|
22
42
|
export declare function install(opts: InstallOptions): InstalledFile[];
|
|
23
43
|
/**
|
|
24
44
|
* Look for editor-specific directories in the repo. Returns whichever editors
|
|
25
|
-
* already have config there, in
|
|
45
|
+
* already have config there, in catalog order. Lets `init` skip the "which AI
|
|
26
46
|
* tools do you use?" question when the answer is obvious from the filesystem.
|
|
47
|
+
*
|
|
48
|
+
* Note: `agents` (the cross-vendor `.agents/skills/` baseline) is always
|
|
49
|
+
* written by `install()` regardless of detection, so it's excluded from this
|
|
50
|
+
* return value.
|
|
27
51
|
*/
|
|
28
52
|
export declare function detectEditors(repoRoot: string): Integration[];
|
|
29
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/init/installer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/init/installer.ts"],"names":[],"mappings":"AA0BA;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,aAAa,CAAC;AAgClB,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;CACvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,EAAE,CA+D7D;AA6HD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAK7D;AAID;;;GAGG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7D,OAAO,EAAE,WAAW,CAAC;IACrB,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B,CAAC,CAmFD"}
|
package/dist/init/installer.js
CHANGED
|
@@ -40,6 +40,10 @@ const fs = __importStar(require("fs"));
|
|
|
40
40
|
const path = __importStar(require("path"));
|
|
41
41
|
const readline = __importStar(require("readline"));
|
|
42
42
|
const templates_1 = require("./templates");
|
|
43
|
+
// Read version from package.json so the manifest never drifts from the
|
|
44
|
+
// published package. __dirname is dist/init/ at runtime → ../../package.json
|
|
45
|
+
// is the package root.
|
|
46
|
+
const { version: PKG_VERSION } = require(path.resolve(__dirname, "..", "..", "package.json"));
|
|
43
47
|
/**
|
|
44
48
|
* The shipped `skill/` directory inside the published npm package.
|
|
45
49
|
* Resolved relative to this file's location at runtime — works whether
|
|
@@ -50,83 +54,142 @@ function shippedSkillDir() {
|
|
|
50
54
|
// src/init/installer.ts → ../../skill
|
|
51
55
|
return path.resolve(__dirname, "..", "..", "skill");
|
|
52
56
|
}
|
|
57
|
+
const EDITOR_PATHS = {
|
|
58
|
+
agents: { skillsRoot: ".agents/skills", detectDir: ".agents" },
|
|
59
|
+
claude: { skillsRoot: ".claude/skills", detectDir: ".claude" },
|
|
60
|
+
copilot: { skillsRoot: ".github/skills", detectDir: ".github" },
|
|
61
|
+
cursor: { skillsRoot: ".cursor/skills", detectDir: ".cursor" },
|
|
62
|
+
gemini: { skillsRoot: ".gemini/skills", detectDir: ".gemini" },
|
|
63
|
+
opencode: { skillsRoot: ".opencode/skills", detectDir: ".opencode" },
|
|
64
|
+
antigravity: { skillsRoot: ".antigravity/skills", detectDir: ".antigravity" },
|
|
65
|
+
};
|
|
66
|
+
const ALL_EDITORS = ["claude", "copilot", "cursor", "gemini", "opencode", "antigravity"];
|
|
67
|
+
const SKILL_NAME = "git-impact";
|
|
53
68
|
/**
|
|
54
69
|
* Core install function — idempotent, safe to run multiple times.
|
|
55
|
-
*
|
|
56
|
-
*
|
|
70
|
+
*
|
|
71
|
+
* Behaviour:
|
|
72
|
+
* 1. Migrate away from pre-0.7 layout (deletes editor-specific instruction
|
|
73
|
+
* files that have been superseded by the canonical SKILL.md folder).
|
|
74
|
+
* 2. Always write `.agents/skills/git-impact/` (cross-vendor standard).
|
|
75
|
+
* 3. Mirror the same SKILL.md folder into each requested editor's path.
|
|
76
|
+
* 4. Touch context.json, .gitignore, CLAUDE.md, manifest.json.
|
|
57
77
|
*/
|
|
58
78
|
function install(opts) {
|
|
59
79
|
const { repoRoot, integrations, context } = opts;
|
|
60
80
|
const installed = [];
|
|
81
|
+
// 0. Migrate any legacy per-editor instruction files from the old installer.
|
|
82
|
+
installed.push(...migrateLegacyLayout(repoRoot));
|
|
61
83
|
// 1. Create .git-impact/ directory and context.json
|
|
62
84
|
const gitImpactDir = path.join(repoRoot, ".git-impact");
|
|
63
85
|
fs.mkdirSync(gitImpactDir, { recursive: true });
|
|
86
|
+
// Merge the wizard's inputs into whatever's already on disk so that
|
|
87
|
+
// optional fields the wizard never collects (githubToken, privacy, …)
|
|
88
|
+
// survive a re-run of `init`.
|
|
64
89
|
const contextPath = path.join(gitImpactDir, "context.json");
|
|
65
|
-
|
|
90
|
+
const existingContext = loadExistingContext(repoRoot) ?? {};
|
|
91
|
+
const mergedContext = {
|
|
92
|
+
...existingContext,
|
|
93
|
+
companyDescription: context.companyDescription,
|
|
94
|
+
managerPriorities: context.managerPriorities,
|
|
95
|
+
glossary: context.glossary,
|
|
96
|
+
};
|
|
97
|
+
installed.push(writeFile(contextPath, (0, templates_1.CONTEXT_TEMPLATE)(mergedContext)));
|
|
66
98
|
// 2. Update .gitignore
|
|
67
99
|
installed.push(ensureGitignore(repoRoot));
|
|
68
|
-
// 3.
|
|
69
|
-
|
|
70
|
-
|
|
100
|
+
// 3. Install the SKILL.md folder once per requested editor. `agents` is
|
|
101
|
+
// always included as a cross-vendor baseline (covers Goose/Amp/Codex/
|
|
102
|
+
// Letta/Roo and most modern Agent Skills adopters).
|
|
103
|
+
const targets = dedupe(["agents", ...integrations]);
|
|
104
|
+
for (const target of targets) {
|
|
105
|
+
installed.push(...installSkillFolder(repoRoot, target));
|
|
71
106
|
}
|
|
72
|
-
// 4.
|
|
73
|
-
|
|
107
|
+
// 4. Write CLAUDE.md when Claude Code is actually in scope. Detection
|
|
108
|
+
// matters because a Cursor-only user shouldn't get a top-level
|
|
109
|
+
// CLAUDE.md they didn't ask for; conversely, a user who later
|
|
110
|
+
// installs Claude Code should get the block on their next init
|
|
111
|
+
// even if `claude` wasn't passed explicitly.
|
|
112
|
+
if (integrations.includes("claude") || fs.existsSync(path.join(repoRoot, ".claude"))) {
|
|
74
113
|
installed.push(updateClaudeMd(repoRoot));
|
|
75
114
|
}
|
|
76
|
-
// 5. Write manifest
|
|
115
|
+
// 5. Write manifest. Push the manifest entry into `installed` before
|
|
116
|
+
// writing so the CLI summary reports it, and so the manifest's own
|
|
117
|
+
// file list includes itself (self-referential is fine — anyone
|
|
118
|
+
// inspecting it expects to see every file the installer touched).
|
|
119
|
+
const manifestPath = path.join(gitImpactDir, "manifest.json");
|
|
120
|
+
const manifestExisted = fs.existsSync(manifestPath);
|
|
121
|
+
installed.push({ path: manifestPath, action: manifestExisted ? "updated" : "created" });
|
|
77
122
|
const manifest = {
|
|
78
|
-
version:
|
|
123
|
+
version: PKG_VERSION,
|
|
79
124
|
installedAt: new Date().toISOString(),
|
|
80
|
-
integrations,
|
|
81
|
-
files: installed
|
|
125
|
+
integrations: targets,
|
|
126
|
+
files: installed
|
|
127
|
+
.filter((f) => f.action !== "removed")
|
|
128
|
+
.map((f) => path.relative(repoRoot, f.path)),
|
|
82
129
|
};
|
|
83
|
-
const manifestPath = path.join(gitImpactDir, "manifest.json");
|
|
84
130
|
fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + "\n");
|
|
85
131
|
return installed;
|
|
86
132
|
}
|
|
87
|
-
// ───
|
|
88
|
-
function
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return installCopilot(repoRoot);
|
|
94
|
-
case "cursor":
|
|
95
|
-
return installCursor(repoRoot);
|
|
96
|
-
case "gemini":
|
|
97
|
-
return installGemini(repoRoot);
|
|
98
|
-
}
|
|
133
|
+
// ─── Skill folder install ─────────────────────────────────────────────────────
|
|
134
|
+
function installSkillFolder(repoRoot, target) {
|
|
135
|
+
const spec = EDITOR_PATHS[target];
|
|
136
|
+
const destDir = path.join(repoRoot, spec.skillsRoot, SKILL_NAME);
|
|
137
|
+
// copyTree itself creates `destDir` recursively — no need to pre-create.
|
|
138
|
+
return copyTree(shippedSkillDir(), destDir);
|
|
99
139
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
fs.mkdirSync(
|
|
104
|
-
const src
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
140
|
+
/** Recursively mirror `src` → `dest`. Returns one InstalledFile per file copied. */
|
|
141
|
+
function copyTree(src, dest) {
|
|
142
|
+
const out = [];
|
|
143
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
144
|
+
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
145
|
+
const srcPath = path.join(src, entry.name);
|
|
146
|
+
const destPath = path.join(dest, entry.name);
|
|
147
|
+
if (entry.isDirectory()) {
|
|
148
|
+
out.push(...copyTree(srcPath, destPath));
|
|
149
|
+
}
|
|
150
|
+
else if (entry.isFile()) {
|
|
151
|
+
out.push(copyFile(srcPath, destPath));
|
|
112
152
|
}
|
|
113
153
|
}
|
|
114
|
-
return
|
|
154
|
+
return out;
|
|
115
155
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
156
|
+
// ─── Legacy migration ─────────────────────────────────────────────────────────
|
|
157
|
+
/**
|
|
158
|
+
* Files written by the pre-0.7 installer that are now superseded by the
|
|
159
|
+
* canonical SKILL.md folder. Deleted on next `init`. Parent dirs are NOT
|
|
160
|
+
* removed unless they were a git-impact-only location.
|
|
161
|
+
*/
|
|
162
|
+
const LEGACY_FILES = [
|
|
163
|
+
".github/instructions/git-impact.instructions.md",
|
|
164
|
+
".cursor/rules/git-impact.mdc",
|
|
165
|
+
".gemini/commands/git-impact.md",
|
|
166
|
+
];
|
|
167
|
+
function migrateLegacyLayout(repoRoot) {
|
|
168
|
+
const removed = [];
|
|
169
|
+
for (const rel of LEGACY_FILES) {
|
|
170
|
+
const abs = path.join(repoRoot, rel);
|
|
171
|
+
if (fs.existsSync(abs)) {
|
|
172
|
+
fs.unlinkSync(abs);
|
|
173
|
+
removed.push({ path: abs, action: "removed" });
|
|
174
|
+
// If the parent dir is now empty and was created solely for git-impact,
|
|
175
|
+
// clean it up too. Only touch dirs ending in `instructions`, `rules`,
|
|
176
|
+
// or `commands` — those are the pre-0.7 install locations.
|
|
177
|
+
tryRemoveEmptyDir(path.dirname(abs), ["instructions", "rules", "commands"]);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return removed;
|
|
125
181
|
}
|
|
126
|
-
function
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
182
|
+
function tryRemoveEmptyDir(dir, allowedBasenames) {
|
|
183
|
+
if (!allowedBasenames.includes(path.basename(dir)))
|
|
184
|
+
return;
|
|
185
|
+
try {
|
|
186
|
+
const entries = fs.readdirSync(dir);
|
|
187
|
+
if (entries.length === 0)
|
|
188
|
+
fs.rmdirSync(dir);
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
// Dir gone or not readable — nothing to do.
|
|
192
|
+
}
|
|
130
193
|
}
|
|
131
194
|
// ─── CLAUDE.md managed block ──────────────────────────────────────────────────
|
|
132
195
|
const BLOCK_START = "<!-- GIT-IMPACT START -->";
|
|
@@ -142,44 +205,52 @@ function updateClaudeMd(repoRoot) {
|
|
|
142
205
|
const startIdx = existing.indexOf(BLOCK_START);
|
|
143
206
|
const endIdx = existing.indexOf(BLOCK_END);
|
|
144
207
|
if (startIdx !== -1 && endIdx !== -1) {
|
|
145
|
-
// Replace existing block
|
|
146
208
|
const updated = existing.slice(0, startIdx) + block + existing.slice(endIdx + BLOCK_END.length);
|
|
147
209
|
fs.writeFileSync(claudeMdPath, updated);
|
|
148
210
|
return { path: claudeMdPath, action: "updated" };
|
|
149
211
|
}
|
|
150
|
-
// Append block
|
|
151
212
|
fs.writeFileSync(claudeMdPath, existing.trimEnd() + "\n\n" + block + "\n");
|
|
152
213
|
return { path: claudeMdPath, action: "updated" };
|
|
153
214
|
}
|
|
154
215
|
// ─── .gitignore ───────────────────────────────────────────────────────────────
|
|
155
|
-
|
|
216
|
+
/**
|
|
217
|
+
* Files git-impact writes locally that should never be committed:
|
|
218
|
+
* - history.db: per-machine SQLite history
|
|
219
|
+
* - result.html: regenerable rolling dashboard
|
|
220
|
+
* - standups/: opt-in per-day shareable HTML pages
|
|
221
|
+
*/
|
|
222
|
+
const GITIGNORE_ENTRIES = [
|
|
223
|
+
".git-impact/history.db",
|
|
224
|
+
".git-impact/result.html",
|
|
225
|
+
".git-impact/standups/",
|
|
226
|
+
];
|
|
156
227
|
function ensureGitignore(repoRoot) {
|
|
157
228
|
const gitignorePath = path.join(repoRoot, ".gitignore");
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
if (
|
|
229
|
+
const existed = fs.existsSync(gitignorePath);
|
|
230
|
+
const existing = existed ? fs.readFileSync(gitignorePath, "utf-8") : "";
|
|
231
|
+
const missing = GITIGNORE_ENTRIES.filter((entry) => !existing.includes(entry));
|
|
232
|
+
if (missing.length === 0) {
|
|
162
233
|
return { path: gitignorePath, action: "skipped" };
|
|
163
234
|
}
|
|
164
|
-
|
|
165
|
-
|
|
235
|
+
const header = `\n# git-impact local files (private, per-machine)\n`;
|
|
236
|
+
fs.appendFileSync(gitignorePath, header + missing.join("\n") + "\n");
|
|
237
|
+
return { path: gitignorePath, action: existed ? "updated" : "created" };
|
|
166
238
|
}
|
|
167
239
|
// ─── Editor auto-detection ───────────────────────────────────────────────────
|
|
168
240
|
/**
|
|
169
241
|
* Look for editor-specific directories in the repo. Returns whichever editors
|
|
170
|
-
* already have config there, in
|
|
242
|
+
* already have config there, in catalog order. Lets `init` skip the "which AI
|
|
171
243
|
* tools do you use?" question when the answer is obvious from the filesystem.
|
|
244
|
+
*
|
|
245
|
+
* Note: `agents` (the cross-vendor `.agents/skills/` baseline) is always
|
|
246
|
+
* written by `install()` regardless of detection, so it's excluded from this
|
|
247
|
+
* return value.
|
|
172
248
|
*/
|
|
173
249
|
function detectEditors(repoRoot) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
{ editor: "gemini", relPath: ".gemini" },
|
|
179
|
-
];
|
|
180
|
-
return checks
|
|
181
|
-
.filter(({ relPath }) => fs.existsSync(path.join(repoRoot, relPath)))
|
|
182
|
-
.map(({ editor }) => editor);
|
|
250
|
+
return ALL_EDITORS.filter((id) => {
|
|
251
|
+
const dir = EDITOR_PATHS[id].detectDir;
|
|
252
|
+
return fs.existsSync(path.join(repoRoot, dir));
|
|
253
|
+
});
|
|
183
254
|
}
|
|
184
255
|
// ─── Interactive prompt ───────────────────────────────────────────────────────
|
|
185
256
|
/**
|
|
@@ -211,7 +282,8 @@ async function runInitWizard(repoRoot) {
|
|
|
211
282
|
? detected.join(", ")
|
|
212
283
|
: "none detected — defaulting to claude";
|
|
213
284
|
const integrationsInput = await ask(`\n Which AI editors should I install for? (comma-separated, or "all")\n` +
|
|
214
|
-
` Options:
|
|
285
|
+
` Options: ${ALL_EDITORS.join(", ")}\n` +
|
|
286
|
+
` (.agents/skills/ is always written — covers Goose, Amp, Codex, Letta, Roo)\n` +
|
|
215
287
|
` Detected in this repo: ${detectedLabel}\n` +
|
|
216
288
|
` [press Enter to use detected]\n` +
|
|
217
289
|
` > `);
|
|
@@ -226,21 +298,20 @@ async function runInitWizard(repoRoot) {
|
|
|
226
298
|
}
|
|
227
299
|
}
|
|
228
300
|
// Parse integrations
|
|
229
|
-
const ALL_INTEGRATIONS = ["claude", "copilot", "cursor", "gemini"];
|
|
230
301
|
let integrations;
|
|
231
302
|
const raw = integrationsInput.toLowerCase().trim();
|
|
232
303
|
if (!raw) {
|
|
233
|
-
// Empty input → use what we detected, or claude as the safe default.
|
|
234
304
|
integrations = detected.length > 0 ? detected : ["claude"];
|
|
235
305
|
}
|
|
236
306
|
else if (raw === "all") {
|
|
237
|
-
integrations =
|
|
307
|
+
integrations = ALL_EDITORS;
|
|
238
308
|
}
|
|
239
309
|
else {
|
|
310
|
+
const validIds = new Set(ALL_EDITORS);
|
|
240
311
|
integrations = raw
|
|
241
312
|
.split(",")
|
|
242
313
|
.map((s) => s.trim())
|
|
243
|
-
.filter((s) =>
|
|
314
|
+
.filter((s) => validIds.has(s));
|
|
244
315
|
if (integrations.length === 0)
|
|
245
316
|
integrations = detected.length > 0 ? detected : ["claude"];
|
|
246
317
|
}
|
|
@@ -261,9 +332,13 @@ function writeFile(filePath, content) {
|
|
|
261
332
|
}
|
|
262
333
|
function copyFile(srcPath, destPath) {
|
|
263
334
|
const existed = fs.existsSync(destPath);
|
|
335
|
+
fs.mkdirSync(path.dirname(destPath), { recursive: true });
|
|
264
336
|
fs.copyFileSync(srcPath, destPath);
|
|
265
337
|
return { path: destPath, action: existed ? "updated" : "created" };
|
|
266
338
|
}
|
|
339
|
+
function dedupe(xs) {
|
|
340
|
+
return Array.from(new Set(xs));
|
|
341
|
+
}
|
|
267
342
|
function loadExistingContext(repoRoot) {
|
|
268
343
|
const contextPath = path.join(repoRoot, ".git-impact", "context.json");
|
|
269
344
|
if (!fs.existsSync(contextPath))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/init/installer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/init/installer.ts"],"names":[],"mappings":"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"}
|