k-harness 0.1.0 → 0.2.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 +3 -1
- package/package.json +1 -1
- package/src/init.js +55 -2
package/README.md
CHANGED
|
@@ -28,13 +28,14 @@ npx k-harness init --ide claude
|
|
|
28
28
|
npx k-harness init --ide cursor
|
|
29
29
|
npx k-harness init --ide codex
|
|
30
30
|
npx k-harness init --ide windsurf
|
|
31
|
+
npx k-harness init --ide augment
|
|
31
32
|
```
|
|
32
33
|
|
|
33
34
|
### Options
|
|
34
35
|
|
|
35
36
|
| Flag | Description |
|
|
36
37
|
|------|-------------|
|
|
37
|
-
| `--ide <name>` | Target IDE: `vscode`, `claude`, `cursor`, `codex`, `windsurf` |
|
|
38
|
+
| `--ide <name>` | Target IDE: `vscode`, `claude`, `cursor`, `codex`, `windsurf`, `augment` |
|
|
38
39
|
| `--dir <path>` | Target directory (default: current directory) |
|
|
39
40
|
| `--overwrite` | Overwrite existing files |
|
|
40
41
|
|
|
@@ -47,6 +48,7 @@ npx k-harness init --ide windsurf
|
|
|
47
48
|
| **Cursor** | `.cursor/rules/core.mdc` | `.cursor/rules/*.mdc` | `.cursor/rules/*.mdc` | `.cursor/rules/*.mdc` |
|
|
48
49
|
| **Codex** | `AGENTS.md` | (merged into AGENTS.md) | `.agents/skills/*/SKILL.md` | (merged into AGENTS.md) |
|
|
49
50
|
| **Windsurf** | `.windsurfrules` | (merged) | (merged) | (merged) |
|
|
51
|
+
| **Augment Code** | `.augment/rules/core.md` | `.augment/rules/*.md` | `.augment/rules/*.md` | `.augment/rules/*.md` |
|
|
50
52
|
|
|
51
53
|
All IDEs also get `project-state.md`, `failure-patterns.md`, `features.md`, and `project-brief.md` at the project root.
|
|
52
54
|
|
package/package.json
CHANGED
package/src/init.js
CHANGED
|
@@ -210,6 +210,58 @@ function generateWindsurf(targetDir, overwrite) {
|
|
|
210
210
|
writeFile(targetDir, 'project-brief.md', readTemplate('project-brief.md'), overwrite);
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
+
function generateAugment(targetDir, overwrite) {
|
|
214
|
+
// .augment/rules/ — Always-type rules for core, testing, backend
|
|
215
|
+
const coreRules = readTemplate('core-rules.md');
|
|
216
|
+
const coreRule =
|
|
217
|
+
'---\ndescription: Core project rules — Iron Laws, completion protocol, concreteness\ntype: always\n---\n\n' +
|
|
218
|
+
coreRules;
|
|
219
|
+
writeFile(targetDir, '.augment/rules/core.md', coreRule, overwrite);
|
|
220
|
+
|
|
221
|
+
const testingRules = readTemplate('testing-rules.md');
|
|
222
|
+
const testingRule =
|
|
223
|
+
'---\ndescription: Testing rules — mock sync, forbidden patterns\ntype: auto\nglobs: "**/*.test.*,**/*.spec.*,**/__mocks__/**,**/__tests__/**"\n---\n\n' +
|
|
224
|
+
testingRules;
|
|
225
|
+
writeFile(targetDir, '.augment/rules/testing.md', testingRule, overwrite);
|
|
226
|
+
|
|
227
|
+
const backendRules = readTemplate('backend-rules.md');
|
|
228
|
+
const backendRule =
|
|
229
|
+
'---\ndescription: Backend code rules — architecture enforcement, type safety\ntype: auto\nglobs: "src/**/*.ts,src/**/*.js"\n---\n\n' +
|
|
230
|
+
backendRules;
|
|
231
|
+
writeFile(targetDir, '.augment/rules/backend.md', backendRule, overwrite);
|
|
232
|
+
|
|
233
|
+
// Skills as Auto rules
|
|
234
|
+
const skills = ['test-integrity', 'security-checklist', 'investigate', 'impact-analysis', 'feature-breakdown'];
|
|
235
|
+
for (const skill of skills) {
|
|
236
|
+
const content = readTemplate(`skills/${skill}.md`);
|
|
237
|
+
const rule =
|
|
238
|
+
`---\ndescription: Skill — ${skill}\ntype: manual\n---\n\n` +
|
|
239
|
+
content;
|
|
240
|
+
writeFile(targetDir, `.augment/rules/${skill}.md`, rule, overwrite);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Agents as Manual rules
|
|
244
|
+
const agents = [
|
|
245
|
+
{ name: 'reviewer', file: 'agents/reviewer.md' },
|
|
246
|
+
{ name: 'sprint-manager', file: 'agents/sprint-manager.md' },
|
|
247
|
+
{ name: 'planner', file: 'agents/planner.md' },
|
|
248
|
+
];
|
|
249
|
+
for (const agent of agents) {
|
|
250
|
+
const content = readTemplate(agent.file);
|
|
251
|
+
const rule =
|
|
252
|
+
`---\ndescription: Agent — ${agent.name}\ntype: manual\n---\n\n` +
|
|
253
|
+
content;
|
|
254
|
+
writeFile(targetDir, `.augment/rules/${agent.name}.md`, rule, overwrite);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// State files
|
|
258
|
+
writeFile(targetDir, 'project-state.md', readTemplate('project-state.md'), overwrite);
|
|
259
|
+
writeFile(targetDir, 'failure-patterns.md', readTemplate('failure-patterns.md'), overwrite);
|
|
260
|
+
writeFile(targetDir, 'dependency-map.md', readTemplate('dependency-map.md'), overwrite);
|
|
261
|
+
writeFile(targetDir, 'features.md', readTemplate('features.md'), overwrite);
|
|
262
|
+
writeFile(targetDir, 'project-brief.md', readTemplate('project-brief.md'), overwrite);
|
|
263
|
+
}
|
|
264
|
+
|
|
213
265
|
// ─── IDE registry ────────────────────────────────────────────
|
|
214
266
|
const GENERATORS = {
|
|
215
267
|
vscode: { name: 'VS Code Copilot', fn: generateVscode },
|
|
@@ -217,6 +269,7 @@ const GENERATORS = {
|
|
|
217
269
|
cursor: { name: 'Cursor', fn: generateCursor },
|
|
218
270
|
codex: { name: 'Codex (OpenAI)', fn: generateCodex },
|
|
219
271
|
windsurf: { name: 'Windsurf', fn: generateWindsurf },
|
|
272
|
+
augment: { name: 'Augment Code', fn: generateAugment },
|
|
220
273
|
};
|
|
221
274
|
|
|
222
275
|
// ─── Interactive prompt ──────────────────────────────────────
|
|
@@ -238,7 +291,7 @@ async function promptIde() {
|
|
|
238
291
|
});
|
|
239
292
|
console.log();
|
|
240
293
|
|
|
241
|
-
const answer = await askQuestion(
|
|
294
|
+
const answer = await askQuestion(` Choice (1-${keys.length}): `);
|
|
242
295
|
const idx = parseInt(answer, 10) - 1;
|
|
243
296
|
if (idx < 0 || idx >= keys.length || isNaN(idx)) {
|
|
244
297
|
console.error(' Invalid choice.');
|
|
@@ -256,7 +309,7 @@ function showHelp() {
|
|
|
256
309
|
npx k-harness init [options]
|
|
257
310
|
|
|
258
311
|
Options:
|
|
259
|
-
--ide <name> IDE target: vscode, claude, cursor, codex, windsurf
|
|
312
|
+
--ide <name> IDE target: vscode, claude, cursor, codex, windsurf, augment
|
|
260
313
|
--dir <path> Target directory (default: current directory)
|
|
261
314
|
--overwrite Overwrite existing files
|
|
262
315
|
--help Show this help
|