@zigrivers/scaffold 3.0.0 → 3.0.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 +2 -2
- package/dist/e2e/knowledge.test.js +70 -2
- package/dist/e2e/knowledge.test.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -379,7 +379,7 @@ Claude researches and documents your technology choices (language, framework, da
|
|
|
379
379
|
|
|
380
380
|
| Step | What It Does |
|
|
381
381
|
|------|-------------|
|
|
382
|
-
| `beads` | Sets up Beads task tracking with a lessons-learned file for cross-session learning, and creates the initial CLAUDE.md skeleton with core principles and workflow conventions. *(
|
|
382
|
+
| `beads` | Sets up optional Beads task tracking for downstream projects Scaffold generates, with a lessons-learned file for cross-session learning, and creates the initial CLAUDE.md skeleton with core principles and workflow conventions. *(This is not Scaffold's own issue-tracking workflow.)* |
|
|
383
383
|
| `tech-stack` | Claude researches technology options for your project — language, framework, database, hosting, auth — evaluates each against your requirements, and documents every choice with rationale and alternatives considered. |
|
|
384
384
|
| `coding-standards` | Claude creates coding standards tailored to your tech stack — naming conventions, error handling patterns, import organization, AI-specific rules — and generates working linter and formatter config files. |
|
|
385
385
|
| `tdd` | Claude defines your testing approach — which types of tests to write at each layer, coverage targets, what to mock and what not to, test data patterns — so agents write the right tests from the start. |
|
|
@@ -742,7 +742,7 @@ Claude analyzes your commits since the last release, suggests whether this is a
|
|
|
742
742
|
1. Running your project's tests
|
|
743
743
|
2. Updating the version number in your project files
|
|
744
744
|
3. Generating a changelog entry
|
|
745
|
-
4. Creating a Git tag and
|
|
745
|
+
4. Creating a Git tag, GitHub release, and npm publish
|
|
746
746
|
|
|
747
747
|
Options: `--dry-run` to preview, `minor`/`major`/`patch` to specify the bump, `current` to release an already-bumped version, `rollback` to undo.
|
|
748
748
|
|
|
@@ -2,13 +2,32 @@ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import os from 'node:os';
|
|
5
|
-
import
|
|
5
|
+
import * as childProcess from 'node:child_process';
|
|
6
6
|
const DIST = path.resolve(process.cwd(), 'dist/index.js');
|
|
7
|
+
const KNOWLEDGE_TEMPLATE_DIST = path.resolve(process.cwd(), 'dist/core/knowledge/knowledge-update-template.md');
|
|
7
8
|
const KNOWLEDGE_SRC = path.resolve(process.cwd(), 'knowledge');
|
|
8
9
|
const PIPELINE_SRC = path.resolve(process.cwd(), 'pipeline');
|
|
10
|
+
let cliBuilt = false;
|
|
11
|
+
let runCommand = childProcess.execSync;
|
|
12
|
+
function requiredBuildArtifactsReady() {
|
|
13
|
+
return [DIST, KNOWLEDGE_TEMPLATE_DIST].every((artifactPath) => fs.existsSync(artifactPath));
|
|
14
|
+
}
|
|
15
|
+
function ensureCliBuilt() {
|
|
16
|
+
if (cliBuilt && requiredBuildArtifactsReady())
|
|
17
|
+
return;
|
|
18
|
+
if (!requiredBuildArtifactsReady()) {
|
|
19
|
+
runCommand('npm run build', {
|
|
20
|
+
cwd: process.cwd(),
|
|
21
|
+
encoding: 'utf8',
|
|
22
|
+
stdio: 'pipe',
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
cliBuilt = requiredBuildArtifactsReady();
|
|
26
|
+
}
|
|
9
27
|
function scaffold(args, cwd) {
|
|
10
28
|
try {
|
|
11
|
-
|
|
29
|
+
ensureCliBuilt();
|
|
30
|
+
const result = runCommand(`node ${DIST} ${args}`, {
|
|
12
31
|
cwd,
|
|
13
32
|
encoding: 'utf8',
|
|
14
33
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
@@ -100,5 +119,54 @@ describe('scaffold knowledge (E2E)', () => {
|
|
|
100
119
|
const { exitCode } = scaffold('knowledge update totally-unknown-target-xyz', tmpDir);
|
|
101
120
|
expect(exitCode).toBe(1);
|
|
102
121
|
});
|
|
122
|
+
it('rebuilds when dist/index.js exists but the knowledge template is missing', () => {
|
|
123
|
+
const distDir = path.dirname(DIST);
|
|
124
|
+
const templatePath = KNOWLEDGE_TEMPLATE_DIST;
|
|
125
|
+
const hadIndex = fs.existsSync(DIST);
|
|
126
|
+
const hadTemplate = fs.existsSync(templatePath);
|
|
127
|
+
const templateBackup = hadTemplate ? fs.readFileSync(templatePath, 'utf8') : null;
|
|
128
|
+
fs.mkdirSync(distDir, { recursive: true });
|
|
129
|
+
if (!hadIndex) {
|
|
130
|
+
fs.writeFileSync(DIST, '#!/usr/bin/env node\n');
|
|
131
|
+
}
|
|
132
|
+
fs.rmSync(templatePath, { force: true });
|
|
133
|
+
const previousRunCommand = runCommand;
|
|
134
|
+
const previousCliBuilt = cliBuilt;
|
|
135
|
+
let buildCalls = 0;
|
|
136
|
+
runCommand = (cmd, _options) => {
|
|
137
|
+
if (cmd === 'npm run build') {
|
|
138
|
+
buildCalls += 1;
|
|
139
|
+
fs.mkdirSync(path.dirname(templatePath), { recursive: true });
|
|
140
|
+
fs.writeFileSync(templatePath, templateBackup ?? '');
|
|
141
|
+
return 'built';
|
|
142
|
+
}
|
|
143
|
+
if (cmd.startsWith(`node ${DIST}`)) {
|
|
144
|
+
return 'ok';
|
|
145
|
+
}
|
|
146
|
+
throw new Error(`unexpected command: ${cmd}`);
|
|
147
|
+
};
|
|
148
|
+
cliBuilt = true;
|
|
149
|
+
try {
|
|
150
|
+
const result = scaffold('knowledge list', tmpDir);
|
|
151
|
+
expect(result.exitCode).toBe(0);
|
|
152
|
+
expect(result.stdout).toBe('ok');
|
|
153
|
+
expect(buildCalls).toBe(1);
|
|
154
|
+
expect(fs.existsSync(templatePath)).toBe(true);
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
runCommand = previousRunCommand;
|
|
158
|
+
cliBuilt = previousCliBuilt;
|
|
159
|
+
if (templateBackup !== null) {
|
|
160
|
+
fs.mkdirSync(path.dirname(templatePath), { recursive: true });
|
|
161
|
+
fs.writeFileSync(templatePath, templateBackup);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
fs.rmSync(templatePath, { force: true });
|
|
165
|
+
}
|
|
166
|
+
if (!hadIndex) {
|
|
167
|
+
fs.rmSync(distDir, { recursive: true, force: true });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
});
|
|
103
171
|
});
|
|
104
172
|
//# sourceMappingURL=knowledge.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge.test.js","sourceRoot":"","sources":["../../src/e2e/knowledge.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACpE,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"knowledge.test.js","sourceRoot":"","sources":["../../src/e2e/knowledge.test.ts"],"names":[],"mappings":"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"}
|