@horiastanxd/claude-init 0.7.0 → 0.8.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 +8 -1
- package/dist/cli.js +19 -0
- package/dist/cli.js.map +1 -1
- package/dist/enrich.d.ts +18 -0
- package/dist/enrich.js +61 -0
- package/dist/enrich.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -85,6 +85,7 @@ npx @horiastanxd/claude-init -t claude,cursor # only specific tools
|
|
|
85
85
|
npx @horiastanxd/claude-init --overwrite # refresh files that already exist
|
|
86
86
|
npx @horiastanxd/claude-init --dry-run # print the analysis as JSON, write nothing
|
|
87
87
|
npx @horiastanxd/claude-init --recurse # also generate into each workspace package (monorepo)
|
|
88
|
+
npx @horiastanxd/claude-init --enrich # opt-in: sharpen the description with an LLM (needs ANTHROPIC_API_KEY)
|
|
88
89
|
npx @horiastanxd/claude-init list # show all targets and their paths
|
|
89
90
|
```
|
|
90
91
|
|
|
@@ -103,8 +104,15 @@ Options:
|
|
|
103
104
|
--overwrite overwrite existing files
|
|
104
105
|
--dry-run print the analysis as JSON, write nothing
|
|
105
106
|
--recurse also generate into each workspace package (monorepo)
|
|
107
|
+
--enrich use an LLM to enrich the project description (opt-in)
|
|
108
|
+
--enrich-model <model> model for --enrich (default: claude-opus-4-8)
|
|
106
109
|
```
|
|
107
110
|
|
|
111
|
+
`--enrich` is the one feature that leaves your machine, and it is off by default -
|
|
112
|
+
everything else is 100% local. It needs `ANTHROPIC_API_KEY` and the Anthropic SDK
|
|
113
|
+
(`npm install @anthropic-ai/sdk`); if either is missing, generation continues without
|
|
114
|
+
enrichment, so nothing breaks.
|
|
115
|
+
|
|
108
116
|
For a monorepo, `--recurse` reads the workspaces from `package.json`
|
|
109
117
|
(`workspaces`) or `pnpm-workspace.yaml`, then generates context files in the root
|
|
110
118
|
and in each package, analyzing every package on its own. It works for both
|
|
@@ -220,7 +228,6 @@ Contributions welcome - adding a new tool is usually a single entry in
|
|
|
220
228
|
|
|
221
229
|
## Roadmap
|
|
222
230
|
|
|
223
|
-
- Optional LLM pass to enrich descriptions (opt-in, off by default)
|
|
224
231
|
- More tools as their formats stabilize
|
|
225
232
|
|
|
226
233
|
Ideas and PRs welcome.
|
package/dist/cli.js
CHANGED
|
@@ -6,6 +6,7 @@ import ora from 'ora';
|
|
|
6
6
|
import { analyzeProject } from './analyzer/index.js';
|
|
7
7
|
import { generateAll, checkAll } from './generators/index.js';
|
|
8
8
|
import { generateWorkspacePackages, checkWorkspacePackages } from './generate-recursive.js';
|
|
9
|
+
import { enrichAnalysis, createAnthropicCompleter } from './enrich.js';
|
|
9
10
|
import { TARGETS, TARGET_IDS, invalidTargets } from './generators/registry.js';
|
|
10
11
|
import { getVersion } from './version.js';
|
|
11
12
|
function parseTargets(raw) {
|
|
@@ -34,6 +35,22 @@ async function runGenerate(dir, opts) {
|
|
|
34
35
|
}
|
|
35
36
|
spinner.succeed(`Analyzed ${chalk.bold(analysis.name)} ` +
|
|
36
37
|
chalk.dim(`(${analysis.techStack.language}${analysis.techStack.framework ? `, ${analysis.techStack.framework}` : ''})`));
|
|
38
|
+
if (opts.enrich) {
|
|
39
|
+
const apiKey = process.env.ANTHROPIC_API_KEY;
|
|
40
|
+
if (!apiKey) {
|
|
41
|
+
console.log(chalk.yellow(' --enrich set but ANTHROPIC_API_KEY is not set; skipping enrichment.'));
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
try {
|
|
45
|
+
const complete = await createAnthropicCompleter({ model: opts.enrichModel, apiKey });
|
|
46
|
+
analysis = await enrichAnalysis(analysis, complete);
|
|
47
|
+
console.log(chalk.dim(` enriched description via ${opts.enrichModel}`));
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
console.log(chalk.yellow(` Enrichment skipped: ${err.message}`));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
37
54
|
if (opts.dryRun) {
|
|
38
55
|
console.log(JSON.stringify(analysis, null, 2));
|
|
39
56
|
return;
|
|
@@ -126,6 +143,8 @@ async function main() {
|
|
|
126
143
|
.option('--overwrite', 'overwrite existing files', false)
|
|
127
144
|
.option('--dry-run', 'print the analysis as JSON without writing files', false)
|
|
128
145
|
.option('--recurse', 'also generate into each workspace package (monorepo)', false)
|
|
146
|
+
.option('--enrich', 'use an LLM to enrich the project description (opt-in; needs ANTHROPIC_API_KEY)', false)
|
|
147
|
+
.option('--enrich-model <model>', 'model to use for --enrich', 'claude-opus-4-8')
|
|
129
148
|
.action(runGenerate);
|
|
130
149
|
program
|
|
131
150
|
.command('check')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,KAAK,GAAG,GAAG;SACd,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAClC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,GAAuB,EACvB,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/enrich.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ProjectAnalysis } from './types.js';
|
|
2
|
+
/** Produces a completion from a system + user prompt. Injected so the network call is testable. */
|
|
3
|
+
export type CompleteFn = (system: string, user: string) => Promise<string>;
|
|
4
|
+
export interface EnrichOptions {
|
|
5
|
+
model: string;
|
|
6
|
+
apiKey: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Enrich the project description with an LLM. Pure given `complete` - the network
|
|
10
|
+
* dependency is injected, so this is fully testable without hitting the API.
|
|
11
|
+
*/
|
|
12
|
+
export declare function enrichAnalysis(analysis: ProjectAnalysis, complete: CompleteFn): Promise<ProjectAnalysis>;
|
|
13
|
+
/**
|
|
14
|
+
* Build a completer backed by the official Anthropic SDK. The SDK is loaded
|
|
15
|
+
* dynamically and is NOT a dependency of this package - enrichment is opt-in, so
|
|
16
|
+
* default installs stay network-free. Install it with `npm install @anthropic-ai/sdk`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createAnthropicCompleter(opts: EnrichOptions): Promise<CompleteFn>;
|
package/dist/enrich.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
const SYSTEM_PROMPT = 'You write a single concise sentence describing what a software project does, for a ' +
|
|
2
|
+
'README-style context file. Output only the sentence: no preamble, no markdown, no quotes, ' +
|
|
3
|
+
'present tense, third person.';
|
|
4
|
+
function buildEnrichPrompt(a) {
|
|
5
|
+
const { techStack: t } = a;
|
|
6
|
+
const stack = [t.language, t.framework, t.runtime, t.database, t.testing]
|
|
7
|
+
.filter(Boolean)
|
|
8
|
+
.join(', ');
|
|
9
|
+
const lines = [
|
|
10
|
+
`Project name: ${a.name}`,
|
|
11
|
+
`Stack: ${stack}`,
|
|
12
|
+
a.description ? `Existing description: ${a.description}` : '',
|
|
13
|
+
'File tree:',
|
|
14
|
+
a.structure.tree,
|
|
15
|
+
].filter(Boolean);
|
|
16
|
+
return lines.join('\n');
|
|
17
|
+
}
|
|
18
|
+
/** Collapse a model reply to a single trimmed sentence. */
|
|
19
|
+
function toOneSentence(text) {
|
|
20
|
+
const clean = text.trim().replace(/\s+/g, ' ');
|
|
21
|
+
const end = clean.search(/[.!?](\s|$)/);
|
|
22
|
+
return end === -1 ? clean : clean.slice(0, end + 1);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Enrich the project description with an LLM. Pure given `complete` - the network
|
|
26
|
+
* dependency is injected, so this is fully testable without hitting the API.
|
|
27
|
+
*/
|
|
28
|
+
export async function enrichAnalysis(analysis, complete) {
|
|
29
|
+
const reply = (await complete(SYSTEM_PROMPT, buildEnrichPrompt(analysis))).trim();
|
|
30
|
+
if (!reply)
|
|
31
|
+
return analysis;
|
|
32
|
+
return { ...analysis, description: toOneSentence(reply) };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Build a completer backed by the official Anthropic SDK. The SDK is loaded
|
|
36
|
+
* dynamically and is NOT a dependency of this package - enrichment is opt-in, so
|
|
37
|
+
* default installs stay network-free. Install it with `npm install @anthropic-ai/sdk`.
|
|
38
|
+
*/
|
|
39
|
+
export async function createAnthropicCompleter(opts) {
|
|
40
|
+
const specifier = '@anthropic-ai/sdk';
|
|
41
|
+
let mod;
|
|
42
|
+
try {
|
|
43
|
+
mod = await import(specifier);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
throw new Error('Enrichment needs the Anthropic SDK. Install it with: npm install @anthropic-ai/sdk');
|
|
47
|
+
}
|
|
48
|
+
const Anthropic = mod.default;
|
|
49
|
+
const client = new Anthropic({ apiKey: opts.apiKey });
|
|
50
|
+
return async (system, user) => {
|
|
51
|
+
const message = await client.messages.create({
|
|
52
|
+
model: opts.model,
|
|
53
|
+
max_tokens: 1024,
|
|
54
|
+
system,
|
|
55
|
+
messages: [{ role: 'user', content: user }],
|
|
56
|
+
});
|
|
57
|
+
const block = message.content.find((b) => b.type === 'text');
|
|
58
|
+
return block?.text ?? '';
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=enrich.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrich.js","sourceRoot":"","sources":["../src/enrich.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@horiastanxd/claude-init",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "One command generates AI context files - CLAUDE.md, AGENTS.md, Cursor/Windsurf/Cline/Continue/Kilo Code/Trae rules, GEMINI.md, Copilot, Aider, Junie, Warp - for any repository. CLI + MCP server, 100% local.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|