volt-framework 0.1.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.
Files changed (86) hide show
  1. package/README.md +1 -0
  2. package/dist/bin/cli.d.ts +3 -0
  3. package/dist/bin/cli.d.ts.map +1 -0
  4. package/dist/bin/cli.js +27 -0
  5. package/dist/bin/cli.js.map +1 -0
  6. package/dist/src/installer/copy.d.ts +4 -0
  7. package/dist/src/installer/copy.d.ts.map +1 -0
  8. package/dist/src/installer/copy.js +78 -0
  9. package/dist/src/installer/copy.js.map +1 -0
  10. package/dist/src/installer/index.d.ts +8 -0
  11. package/dist/src/installer/index.d.ts.map +1 -0
  12. package/dist/src/installer/index.js +150 -0
  13. package/dist/src/installer/index.js.map +1 -0
  14. package/dist/src/installer/prompts.d.ts +36 -0
  15. package/dist/src/installer/prompts.d.ts.map +1 -0
  16. package/dist/src/installer/prompts.js +171 -0
  17. package/dist/src/installer/prompts.js.map +1 -0
  18. package/package.json +48 -0
  19. package/src/templates/CLAUDE.md +94 -0
  20. package/src/templates/agent-manifest.csv +8 -0
  21. package/src/templates/commands/architect.md +256 -0
  22. package/src/templates/commands/ask.md +51 -0
  23. package/src/templates/commands/correct-course.md +428 -0
  24. package/src/templates/commands/debug.md +195 -0
  25. package/src/templates/commands/dev/spec-template.md +76 -0
  26. package/src/templates/commands/dev/steps/step-01-clarify-and-route.md +45 -0
  27. package/src/templates/commands/dev/steps/step-02-plan.md +43 -0
  28. package/src/templates/commands/dev/steps/step-03-implement.md +40 -0
  29. package/src/templates/commands/dev/steps/step-04-review.md +45 -0
  30. package/src/templates/commands/dev/steps/step-05-present.md +45 -0
  31. package/src/templates/commands/dev/steps/step-oneshot.md +41 -0
  32. package/src/templates/commands/dev/workflow.md +114 -0
  33. package/src/templates/commands/dev.md +169 -0
  34. package/src/templates/commands/devops.md +253 -0
  35. package/src/templates/commands/help.md +174 -0
  36. package/src/templates/commands/init-context.md +227 -0
  37. package/src/templates/commands/map-brownfield/checklist.md +66 -0
  38. package/src/templates/commands/map-brownfield/steps/step-00-state-check.md +69 -0
  39. package/src/templates/commands/map-brownfield/steps/step-01-classify.md +51 -0
  40. package/src/templates/commands/map-brownfield/steps/step-02-scan.md +126 -0
  41. package/src/templates/commands/map-brownfield/steps/step-03-validate.md +44 -0
  42. package/src/templates/commands/map-brownfield/steps/step-04-generate.md +89 -0
  43. package/src/templates/commands/map-brownfield/steps/step-05-scope.md +50 -0
  44. package/src/templates/commands/map-brownfield/workflow.md +77 -0
  45. package/src/templates/commands/map-brownfield.md +101 -0
  46. package/src/templates/commands/new-task/elicitation.md +216 -0
  47. package/src/templates/commands/new-task/personas/architect.md +50 -0
  48. package/src/templates/commands/new-task/personas/dev.md +48 -0
  49. package/src/templates/commands/new-task/personas/devops.md +42 -0
  50. package/src/templates/commands/new-task/personas/pm.md +41 -0
  51. package/src/templates/commands/new-task/personas/qa.md +47 -0
  52. package/src/templates/commands/new-task/personas/tech-writer.md +39 -0
  53. package/src/templates/commands/new-task/personas/ux.md +41 -0
  54. package/src/templates/commands/new-task/steps/step-01-context.md +88 -0
  55. package/src/templates/commands/new-task/steps/step-02-scope.md +71 -0
  56. package/src/templates/commands/new-task/steps/step-03-roster.md +72 -0
  57. package/src/templates/commands/new-task/steps/step-04-discussion.md +111 -0
  58. package/src/templates/commands/new-task/steps/step-05-elicitation.md +91 -0
  59. package/src/templates/commands/new-task/steps/step-06-questions.md +82 -0
  60. package/src/templates/commands/new-task/steps/step-07-decision.md +93 -0
  61. package/src/templates/commands/new-task/steps/step-08-generate.md +106 -0
  62. package/src/templates/commands/new-task/steps/step-09-azure.md +88 -0
  63. package/src/templates/commands/new-task/workflow.md +185 -0
  64. package/src/templates/commands/new-task.md +84 -0
  65. package/src/templates/commands/pm.md +328 -0
  66. package/src/templates/commands/qa.md +215 -0
  67. package/src/templates/commands/quick-dev.md +118 -0
  68. package/src/templates/commands/quick-spec.md +113 -0
  69. package/src/templates/commands/review/steps/step-01-gather-context.md +66 -0
  70. package/src/templates/commands/review/steps/step-02-adversarial-review.md +74 -0
  71. package/src/templates/commands/review/steps/step-03-triage.md +54 -0
  72. package/src/templates/commands/review/steps/step-04-present.md +75 -0
  73. package/src/templates/commands/review/workflow.md +43 -0
  74. package/src/templates/commands/review.md +82 -0
  75. package/src/templates/commands/standup.md +276 -0
  76. package/src/templates/commands/tech-writer.md +270 -0
  77. package/src/templates/commands/ux.md +241 -0
  78. package/src/templates/docs/architecture.md +149 -0
  79. package/src/templates/docs/brownfield.md +151 -0
  80. package/src/templates/docs/coding-standards.md +124 -0
  81. package/src/templates/docs/source-tree.md +163 -0
  82. package/src/templates/docs/tech-stack.md +123 -0
  83. package/src/templates/registry.csv +19 -0
  84. package/src/templates/templates/EPIC-template.md +65 -0
  85. package/src/templates/templates/TASK-template.md +120 -0
  86. package/src/templates/templates/deferred-work.md +7 -0
package/README.md ADDED
@@ -0,0 +1 @@
1
+ .
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const installer_1 = require("../src/installer");
6
+ const program = new commander_1.Command();
7
+ program
8
+ .name('kc1t')
9
+ .description('Lean agent framework for Claude Code — brownfield-first')
10
+ .version('0.1.0');
11
+ program
12
+ .command('install')
13
+ .description('Instala o framework kc1t no projeto')
14
+ .option('--dir <path>', 'Diretório de instalação (default: diretório atual)')
15
+ .option('--yes', 'Aceitar defaults sem perguntar')
16
+ .action(async (options) => {
17
+ await (0, installer_1.install)(options);
18
+ });
19
+ program
20
+ .command('update')
21
+ .description('Atualiza arquivos core sem sobrescrever customizações')
22
+ .option('--dir <path>', 'Diretório do projeto (default: diretório atual)')
23
+ .action(async (options) => {
24
+ await (0, installer_1.update)(options);
25
+ });
26
+ program.parse();
27
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,gDAAmD;AAEnD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,cAAc,EAAE,oDAAoD,CAAC;KAC5E,MAAM,CAAC,OAAO,EAAE,gCAAgC,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,mBAAO,EAAC,OAAO,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,cAAc,EAAE,iDAAiD,CAAC;KACzE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,kBAAM,EAAC,OAAO,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function copyTemplates(targetDir: string): Promise<void>;
2
+ export declare function hasExistingInstall(targetDir: string): Promise<boolean>;
3
+ export declare function writeConfig(targetDir: string, config: object): Promise<void>;
4
+ //# sourceMappingURL=copy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../../src/installer/copy.ts"],"names":[],"mappings":"AASA,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CpE;AAED,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5E;AAED,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlF"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.copyTemplates = copyTemplates;
40
+ exports.hasExistingInstall = hasExistingInstall;
41
+ exports.writeConfig = writeConfig;
42
+ const path_1 = __importDefault(require("path"));
43
+ const fs_extra_1 = __importDefault(require("fs-extra"));
44
+ function getTemplatesDir() {
45
+ // Resolve from package root: __dirname is dist/src/installer/ at runtime
46
+ // Go up 3 levels to reach package root, then into src/templates
47
+ return path_1.default.resolve(__dirname, '..', '..', '..', 'src', 'templates');
48
+ }
49
+ async function copyTemplates(targetDir) {
50
+ const templatesDir = getTemplatesDir();
51
+ // 1. Copy CLAUDE.md → {project}/CLAUDE.md
52
+ await fs_extra_1.default.copy(path_1.default.join(templatesDir, 'CLAUDE.md'), path_1.default.join(targetDir, 'CLAUDE.md'));
53
+ // 2. Ensure .kc1t/ directory and subdirectories exist
54
+ await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, '.kc1t', 'docs'));
55
+ await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, '.kc1t', 'epics'));
56
+ await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, '.kc1t', 'tasks'));
57
+ // 3. Copy docs/ → {project}/.kc1t/docs/
58
+ await fs_extra_1.default.copy(path_1.default.join(templatesDir, 'docs'), path_1.default.join(targetDir, '.kc1t', 'docs'));
59
+ // 4. Copy commands/ → {project}/.claude/commands/ (must stay here for Claude Code)
60
+ await fs_extra_1.default.copy(path_1.default.join(templatesDir, 'commands'), path_1.default.join(targetDir, '.claude', 'commands'));
61
+ // 5. Copy templates/ → {project}/.kc1t/epics/ and {project}/.kc1t/tasks/
62
+ await fs_extra_1.default.copy(path_1.default.join(templatesDir, 'templates', 'EPIC-template.md'), path_1.default.join(targetDir, '.kc1t', 'epics', 'EPIC-template.md'));
63
+ await fs_extra_1.default.copy(path_1.default.join(templatesDir, 'templates', 'TASK-template.md'), path_1.default.join(targetDir, '.kc1t', 'tasks', 'TASK-template.md'));
64
+ await fs_extra_1.default.copy(path_1.default.join(templatesDir, 'templates', 'deferred-work.md'), path_1.default.join(targetDir, '.kc1t', 'tasks', 'deferred-work.md'));
65
+ // 6. Copy registry files to .kc1t/
66
+ await fs_extra_1.default.copy(path_1.default.join(templatesDir, 'registry.csv'), path_1.default.join(targetDir, '.kc1t', 'registry.csv'));
67
+ await fs_extra_1.default.copy(path_1.default.join(templatesDir, 'agent-manifest.csv'), path_1.default.join(targetDir, '.kc1t', 'agent-manifest.csv'));
68
+ }
69
+ async function hasExistingInstall(targetDir) {
70
+ return fs_extra_1.default.pathExists(path_1.default.join(targetDir, '.kc1t'));
71
+ }
72
+ async function writeConfig(targetDir, config) {
73
+ const yaml = await Promise.resolve().then(() => __importStar(require('js-yaml')));
74
+ const configPath = path_1.default.join(targetDir, '.kc1t', 'config.yaml');
75
+ const content = yaml.dump(config, { lineWidth: 120, noRefs: true });
76
+ await fs_extra_1.default.writeFile(configPath, content, 'utf-8');
77
+ }
78
+ //# sourceMappingURL=copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy.js","sourceRoot":"","sources":["../../../src/installer/copy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function install(options: {
2
+ dir?: string;
3
+ yes?: boolean;
4
+ }): Promise<void>;
5
+ export declare function update(options: {
6
+ dir?: string;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/installer/index.ts"],"names":[],"mappings":"AAMA,wBAAsB,OAAO,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFrF;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDrE"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.install = install;
40
+ exports.update = update;
41
+ const path_1 = __importDefault(require("path"));
42
+ const fs_extra_1 = __importDefault(require("fs-extra"));
43
+ const p = __importStar(require("@clack/prompts"));
44
+ const copy_1 = require("./copy");
45
+ const prompts_1 = require("./prompts");
46
+ async function install(options) {
47
+ p.intro('kc1t framework — installer');
48
+ const targetDir = path_1.default.resolve(options.dir || process.cwd());
49
+ p.log.info(`Install directory: ${targetDir}`);
50
+ // Check for existing installation
51
+ const exists = await (0, copy_1.hasExistingInstall)(targetDir);
52
+ if (exists) {
53
+ const update = await p.confirm({
54
+ message: 'Existing installation detected. Update? (customized files will NOT be overwritten)',
55
+ initialValue: true,
56
+ });
57
+ if (p.isCancel(update) || !update) {
58
+ p.cancel('Installation cancelled.');
59
+ process.exit(0);
60
+ }
61
+ }
62
+ // Copy template files
63
+ const s = p.spinner();
64
+ s.start('Copying framework files...');
65
+ await (0, copy_1.copyTemplates)(targetDir);
66
+ s.stop('Files copied.');
67
+ // Run configuration prompts (skip if --yes)
68
+ let config;
69
+ if (options.yes) {
70
+ config = {
71
+ project: {
72
+ name: path_1.default.basename(targetDir),
73
+ type: 'greenfield',
74
+ },
75
+ integrations: {
76
+ azure_devops: {
77
+ enabled: false,
78
+ org_url: '',
79
+ project: '',
80
+ behaviors: {
81
+ fetch_on_new_task: true,
82
+ comment_after_session: true,
83
+ update_status_on_dev: true,
84
+ comment_after_review: false,
85
+ ask_before_any_action: true,
86
+ },
87
+ },
88
+ github: { enabled: false },
89
+ jira: { enabled: false },
90
+ linear: { enabled: false },
91
+ },
92
+ preferences: {
93
+ language: 'en',
94
+ elicitation_default: 'opt-in',
95
+ party_mode_roster: 'auto',
96
+ },
97
+ };
98
+ }
99
+ else {
100
+ config = await (0, prompts_1.runPrompts)();
101
+ }
102
+ // Write config
103
+ s.start('Generating configuration...');
104
+ await (0, copy_1.writeConfig)(targetDir, config);
105
+ s.stop('Configuration saved to .kc1t/config.yaml');
106
+ // Show next steps
107
+ p.note(`Installed structure:\n` +
108
+ ` CLAUDE.md — central orchestrator\n` +
109
+ ` .kc1t/config.yaml — project configuration\n` +
110
+ ` .kc1t/docs/ — context documents\n` +
111
+ ` .kc1t/epics/ — epic templates\n` +
112
+ ` .kc1t/tasks/ — task templates\n` +
113
+ ` .kc1t/registry.csv — task registry\n` +
114
+ ` .claude/commands/ — framework commands\n\n` +
115
+ `Next steps:\n` +
116
+ ` 1. Open Claude Code in this directory\n` +
117
+ ` 2. Run /init-context to set up the docs\n` +
118
+ (config.project.type === 'brownfield'
119
+ ? ` 3. Run /map-brownfield to scan the codebase\n`
120
+ : ` 3. Run /new-task to create your first task\n`), 'Installation complete');
121
+ p.outro('kc1t ready. Happy building.');
122
+ }
123
+ async function update(options) {
124
+ p.intro('kc1t framework — update');
125
+ const targetDir = path_1.default.resolve(options.dir || process.cwd());
126
+ const exists = await (0, copy_1.hasExistingInstall)(targetDir);
127
+ if (!exists) {
128
+ p.log.error('No existing installation found. Run `kc1t install` first.');
129
+ process.exit(1);
130
+ }
131
+ const s = p.spinner();
132
+ s.start('Updating framework files...');
133
+ // Only update commands, CLAUDE.md, and templates — don't touch user-customized docs
134
+ const templatesDir = path_1.default.resolve(__dirname, '..', '..', '..', 'src', 'templates');
135
+ await fs_extra_1.default.copy(path_1.default.join(templatesDir, 'commands'), path_1.default.join(targetDir, '.claude', 'commands'));
136
+ await fs_extra_1.default.copy(path_1.default.join(templatesDir, 'CLAUDE.md'), path_1.default.join(targetDir, 'CLAUDE.md'));
137
+ await fs_extra_1.default.copy(path_1.default.join(templatesDir, 'templates', 'EPIC-template.md'), path_1.default.join(targetDir, '.kc1t', 'epics', 'EPIC-template.md'));
138
+ await fs_extra_1.default.copy(path_1.default.join(templatesDir, 'templates', 'TASK-template.md'), path_1.default.join(targetDir, '.kc1t', 'tasks', 'TASK-template.md'));
139
+ s.stop('Files updated.');
140
+ p.note('Updated:\n' +
141
+ ' CLAUDE.md\n' +
142
+ ' .claude/commands/*\n' +
143
+ ' .kc1t/epics/EPIC-template.md\n' +
144
+ ' .kc1t/tasks/TASK-template.md\n\n' +
145
+ 'NOT updated (customizations preserved):\n' +
146
+ ' .kc1t/docs/*\n' +
147
+ ' .kc1t/config.yaml', 'Update complete');
148
+ p.outro('kc1t updated.');
149
+ }
150
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/installer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export interface ProjectConfig {
2
+ project: {
3
+ name: string;
4
+ type: 'greenfield' | 'brownfield';
5
+ };
6
+ integrations: {
7
+ azure_devops: {
8
+ enabled: boolean;
9
+ org_url: string;
10
+ project: string;
11
+ behaviors: {
12
+ fetch_on_new_task: boolean;
13
+ comment_after_session: boolean;
14
+ update_status_on_dev: boolean;
15
+ comment_after_review: boolean;
16
+ ask_before_any_action: boolean;
17
+ };
18
+ };
19
+ github: {
20
+ enabled: boolean;
21
+ };
22
+ jira: {
23
+ enabled: boolean;
24
+ };
25
+ linear: {
26
+ enabled: boolean;
27
+ };
28
+ };
29
+ preferences: {
30
+ language: string;
31
+ elicitation_default: string;
32
+ party_mode_roster: string;
33
+ };
34
+ }
35
+ export declare function runPrompts(): Promise<ProjectConfig>;
36
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/installer/prompts.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC;KACnC,CAAC;IACF,YAAY,EAAE;QACZ,YAAY,EAAE;YACZ,OAAO,EAAE,OAAO,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,SAAS,EAAE;gBACT,iBAAiB,EAAE,OAAO,CAAC;gBAC3B,qBAAqB,EAAE,OAAO,CAAC;gBAC/B,oBAAoB,EAAE,OAAO,CAAC;gBAC9B,oBAAoB,EAAE,OAAO,CAAC;gBAC9B,qBAAqB,EAAE,OAAO,CAAC;aAChC,CAAC;SACH,CAAC;QACF,MAAM,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;QAC7B,IAAI,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;QAC3B,MAAM,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;KAC9B,CAAC;IACF,WAAW,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,CAqJzD"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.runPrompts = runPrompts;
37
+ const p = __importStar(require("@clack/prompts"));
38
+ async function runPrompts() {
39
+ const projectName = await p.text({
40
+ message: 'Project name:',
41
+ placeholder: 'my-project',
42
+ validate: (value) => {
43
+ if (!value || !value.trim())
44
+ return 'Name is required';
45
+ },
46
+ });
47
+ if (p.isCancel(projectName)) {
48
+ p.cancel('Installation cancelled.');
49
+ process.exit(0);
50
+ }
51
+ const projectType = await p.select({
52
+ message: 'Project type:',
53
+ options: [
54
+ { value: 'greenfield', label: 'Greenfield — new project from scratch' },
55
+ { value: 'brownfield', label: 'Brownfield — existing codebase' },
56
+ ],
57
+ });
58
+ if (p.isCancel(projectType)) {
59
+ p.cancel('Installation cancelled.');
60
+ process.exit(0);
61
+ }
62
+ let runMapBrownfield = false;
63
+ if (projectType === 'brownfield') {
64
+ const mapNow = await p.confirm({
65
+ message: 'Run /map-brownfield after install to scan the codebase? (recommended)',
66
+ initialValue: true,
67
+ });
68
+ if (p.isCancel(mapNow)) {
69
+ p.cancel('Installation cancelled.');
70
+ process.exit(0);
71
+ }
72
+ runMapBrownfield = mapNow;
73
+ }
74
+ const integration = await p.select({
75
+ message: 'Integrate with a DevOps platform?',
76
+ options: [
77
+ { value: 'azure', label: 'Azure DevOps' },
78
+ { value: 'github', label: 'GitHub' },
79
+ { value: 'jira', label: 'Jira' },
80
+ { value: 'linear', label: 'Linear' },
81
+ { value: 'none', label: 'None — skip' },
82
+ ],
83
+ });
84
+ if (p.isCancel(integration)) {
85
+ p.cancel('Installation cancelled.');
86
+ process.exit(0);
87
+ }
88
+ let azureOrgUrl = '';
89
+ let azureProject = '';
90
+ if (integration === 'azure') {
91
+ const orgUrl = await p.text({
92
+ message: 'Azure DevOps org URL:',
93
+ placeholder: 'dev.azure.com/myorg',
94
+ validate: (value) => {
95
+ if (!value || !value.trim())
96
+ return 'URL is required';
97
+ },
98
+ });
99
+ if (p.isCancel(orgUrl)) {
100
+ p.cancel('Installation cancelled.');
101
+ process.exit(0);
102
+ }
103
+ azureOrgUrl = orgUrl;
104
+ const projName = await p.text({
105
+ message: 'Azure DevOps project name:',
106
+ placeholder: 'MyProject',
107
+ validate: (value) => {
108
+ if (!value || !value.trim())
109
+ return 'Project name is required';
110
+ },
111
+ });
112
+ if (p.isCancel(projName)) {
113
+ p.cancel('Installation cancelled.');
114
+ process.exit(0);
115
+ }
116
+ azureProject = projName;
117
+ const mcpConfigured = await p.confirm({
118
+ message: 'Is the Azure DevOps MCP server already configured in Claude Code?',
119
+ initialValue: false,
120
+ });
121
+ if (!p.isCancel(mcpConfigured) && !mcpConfigured) {
122
+ p.note('The Azure DevOps MCP server is required for integration.\n\n' +
123
+ 'Step 1 — Install the MCP server:\n' +
124
+ ' npx @anthropic-ai/claude-code mcp add azure-devops \\\n' +
125
+ ' -- npx -y azure-devops-mcp \\\n' +
126
+ ' --org-url ' + azureOrgUrl + ' \\\n' +
127
+ ' --project ' + azureProject + '\n\n' +
128
+ 'Step 2 — Set your Azure DevOps PAT as environment variable:\n' +
129
+ ' export AZURE_DEVOPS_PAT="your-personal-access-token"\n\n' +
130
+ ' To generate a PAT: Azure DevOps → User Settings → Personal Access Tokens\n' +
131
+ ' Scopes needed: Work Items (Read, Write), Code (Read)\n\n' +
132
+ 'Step 3 — Verify it works:\n' +
133
+ ' Open Claude Code and ask: "list my Azure DevOps work items"\n\n' +
134
+ 'If you use a different MCP server, configure it manually in:\n' +
135
+ ' .claude/settings.json or ~/.claude/settings.json', 'Azure DevOps MCP Setup');
136
+ }
137
+ }
138
+ const config = {
139
+ project: {
140
+ name: projectName,
141
+ type: projectType,
142
+ },
143
+ integrations: {
144
+ azure_devops: {
145
+ enabled: integration === 'azure',
146
+ org_url: azureOrgUrl,
147
+ project: azureProject,
148
+ behaviors: {
149
+ fetch_on_new_task: true,
150
+ comment_after_session: true,
151
+ update_status_on_dev: true,
152
+ comment_after_review: false,
153
+ ask_before_any_action: true,
154
+ },
155
+ },
156
+ github: { enabled: integration === 'github' },
157
+ jira: { enabled: integration === 'jira' },
158
+ linear: { enabled: integration === 'linear' },
159
+ },
160
+ preferences: {
161
+ language: 'en',
162
+ elicitation_default: 'opt-in',
163
+ party_mode_roster: 'auto',
164
+ },
165
+ };
166
+ if (runMapBrownfield) {
167
+ p.note('After installation, run in Claude Code:\n /map-brownfield initial\n\nThis will scan the codebase and fill the docs automatically.', 'Next step');
168
+ }
169
+ return config;
170
+ }
171
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/installer/prompts.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "volt-framework",
3
+ "version": "0.1.0",
4
+ "description": "Lean agent framework for Claude Code — brownfield-first",
5
+ "author": "Kc1t",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/Kc1t/kc-framework"
10
+ },
11
+ "keywords": [
12
+ "claude-code",
13
+ "ai-agents",
14
+ "framework",
15
+ "brownfield",
16
+ "party-mode",
17
+ "dev-workflow"
18
+ ],
19
+ "bin": {
20
+ "volt": "dist/bin/cli.js"
21
+ },
22
+ "files": [
23
+ "dist/",
24
+ "src/templates/",
25
+ "README.md"
26
+ ],
27
+ "scripts": {
28
+ "build": "tsc",
29
+ "prepublishOnly": "npm run build",
30
+ "dev": "ts-node bin/cli.ts"
31
+ },
32
+ "dependencies": {
33
+ "@clack/prompts": "^1.0.0",
34
+ "commander": "^12.0.0",
35
+ "fs-extra": "^11.0.0",
36
+ "js-yaml": "^4.0.0"
37
+ },
38
+ "devDependencies": {
39
+ "@types/fs-extra": "^11.0.0",
40
+ "@types/js-yaml": "^4.0.0",
41
+ "@types/node": "^20.0.0",
42
+ "ts-node": "^10.9.0",
43
+ "typescript": "^5.0.0"
44
+ },
45
+ "engines": {
46
+ "node": ">=20"
47
+ }
48
+ }